Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
powerpc
include
asm
vdso_datapage.h
Go to the documentation of this file.
1
#ifndef _VDSO_DATAPAGE_H
2
#define _VDSO_DATAPAGE_H
3
#ifdef __KERNEL__
4
5
/*
6
* Copyright (C) 2002 Peter Bergner <
[email protected]
>, IBM
7
* Copyright (C) 2005 Benjamin Herrenschmidy <
[email protected]
>,
8
* IBM Corp.
9
*
10
* This program is free software; you can redistribute it and/or
11
* modify it under the terms of the GNU General Public License
12
* as published by the Free Software Foundation; either version
13
* 2 of the License, or (at your option) any later version.
14
*/
15
16
17
/*
18
* Note about this structure:
19
*
20
* This structure was historically called systemcfg and exposed to
21
* userland via /proc/ppc64/systemcfg. Unfortunately, this became an
22
* ABI issue as some proprietary software started relying on being able
23
* to mmap() it, thus we have to keep the base layout at least for a
24
* few kernel versions.
25
*
26
* However, since ppc32 doesn't suffer from this backward handicap,
27
* a simpler version of the data structure is used there with only the
28
* fields actually used by the vDSO.
29
*
30
*/
31
32
/*
33
* If the major version changes we are incompatible.
34
* Minor version changes are a hint.
35
*/
36
#define SYSTEMCFG_MAJOR 1
37
#define SYSTEMCFG_MINOR 1
38
39
#ifndef __ASSEMBLY__
40
41
#include <
linux/unistd.h
>
42
#include <linux/time.h>
43
44
#define SYSCALL_MAP_SIZE ((__NR_syscalls + 31) / 32)
45
46
/*
47
* So here is the ppc64 backward compatible version
48
*/
49
50
#ifdef CONFIG_PPC64
51
52
struct
vdso_data
{
53
__u8
eye_catcher
[16];
/* Eyecatcher: SYSTEMCFG:PPC64 0x00 */
54
struct
{
/* Systemcfg version numbers */
55
__u32
major
;
/* Major number 0x10 */
56
__u32
minor
;
/* Minor number 0x14 */
57
}
version
;
58
59
/* Note about the platform flags: it now only contains the lpar
60
* bit. The actual platform number is dead and buried
61
*/
62
__u32
platform;
/* Platform flags 0x18 */
63
__u32
processor
;
/* Processor type 0x1C */
64
__u64
processorCount;
/* # of physical processors 0x20 */
65
__u64
physicalMemorySize;
/* Size of real memory(B) 0x28 */
66
__u64
tb_orig_stamp;
/* Timebase at boot 0x30 */
67
__u64
tb_ticks_per_sec
;
/* Timebase tics / sec 0x38 */
68
__u64
tb_to_xs;
/* Inverse of TB to 2^20 0x40 */
69
__u64
stamp_xsec;
/* 0x48 */
70
__u64
tb_update_count
;
/* Timebase atomicity ctr 0x50 */
71
__u32
tz_minuteswest
;
/* Minutes west of Greenwich 0x58 */
72
__u32
tz_dsttime
;
/* Type of dst correction 0x5C */
73
__u32
dcache_size;
/* L1 d-cache size 0x60 */
74
__u32
dcache_line_size;
/* L1 d-cache line size 0x64 */
75
__u32
icache_size;
/* L1 i-cache size 0x68 */
76
__u32
icache_line_size;
/* L1 i-cache line size 0x6C */
77
78
/* those additional ones don't have to be located anywhere
79
* special as they were not part of the original systemcfg
80
*/
81
__u32
dcache_block_size;
/* L1 d-cache block size */
82
__u32
icache_block_size;
/* L1 i-cache block size */
83
__u32
dcache_log_block_size;
/* L1 d-cache log block size */
84
__u32
icache_log_block_size;
/* L1 i-cache log block size */
85
__s32
wtom_clock_sec
;
/* Wall to monotonic clock */
86
__s32
wtom_clock_nsec
;
87
struct
timespec
stamp_xtime;
/* xtime as at tb_orig_stamp */
88
__u32
stamp_sec_fraction;
/* fractional seconds of stamp_xtime */
89
__u32
syscall_map_64[SYSCALL_MAP_SIZE];
/* map of syscalls */
90
__u32
syscall_map_32[SYSCALL_MAP_SIZE];
/* map of syscalls */
91
};
92
93
#else
/* CONFIG_PPC64 */
94
95
/*
96
* And here is the simpler 32 bits version
97
*/
98
struct
vdso_data
{
99
__u64
tb_orig_stamp;
/* Timebase at boot 0x30 */
100
__u64
tb_ticks_per_sec
;
/* Timebase tics / sec 0x38 */
101
__u64
tb_to_xs;
/* Inverse of TB to 2^20 0x40 */
102
__u64
stamp_xsec;
/* 0x48 */
103
__u32
tb_update_count
;
/* Timebase atomicity ctr 0x50 */
104
__u32
tz_minuteswest
;
/* Minutes west of Greenwich 0x58 */
105
__u32
tz_dsttime
;
/* Type of dst correction 0x5C */
106
__s32
wtom_clock_sec
;
/* Wall to monotonic clock */
107
__s32
wtom_clock_nsec
;
108
struct
timespec
stamp_xtime;
/* xtime as at tb_orig_stamp */
109
__u32
stamp_sec_fraction;
/* fractional seconds of stamp_xtime */
110
__u32
syscall_map_32[SYSCALL_MAP_SIZE];
/* map of syscalls */
111
__u32
dcache_block_size;
/* L1 d-cache block size */
112
__u32
icache_block_size;
/* L1 i-cache block size */
113
__u32
dcache_log_block_size;
/* L1 d-cache log block size */
114
__u32
icache_log_block_size;
/* L1 i-cache log block size */
115
};
116
117
#endif
/* CONFIG_PPC64 */
118
119
extern
struct
vdso_data
*
vdso_data
;
120
121
#endif
/* __ASSEMBLY__ */
122
123
#endif
/* __KERNEL__ */
124
#endif
/* _SYSTEMCFG_H */
Generated on Thu Jan 10 2013 13:03:38 for Linux Kernel by
1.8.2