2008-12-25 13:38:36 +01:00
# ifndef __S390_VDSO_H__
# define __S390_VDSO_H__
# ifdef __KERNEL__
/* Default link addresses for the vDSOs */
# define VDSO32_LBASE 0
# define VDSO64_LBASE 0
2010-02-26 22:37:54 +01:00
# define VDSO_VERSION_STRING LINUX_2.6.29
2008-12-25 13:38:36 +01:00
# ifndef __ASSEMBLY__
/*
2008-12-31 15:11:42 +01:00
* Note about the vdso_data and vdso_per_cpu_data structures :
2008-12-25 13:38:36 +01:00
*
2008-12-31 15:11:42 +01:00
* NEVER USE THEM IN USERSPACE CODE DIRECTLY . The layout of the
2008-12-25 13:38:36 +01:00
* structure is supposed to be known only to the function in the vdso
* itself and may change without notice .
*/
struct vdso_data {
__u64 tb_update_count ; /* Timebase atomicity ctr 0x00 */
__u64 xtime_tod_stamp ; /* TOD clock for xtime 0x08 */
__u64 xtime_clock_sec ; /* Kernel time 0x10 */
__u64 xtime_clock_nsec ; /* 0x18 */
__u64 wtom_clock_sec ; /* Wall to monotonic clock 0x20 */
__u64 wtom_clock_nsec ; /* 0x28 */
__u32 tz_minuteswest ; /* Minutes west of Greenwich 0x30 */
__u32 tz_dsttime ; /* Type of dst correction 0x34 */
2008-12-31 15:11:42 +01:00
__u32 ectg_available ;
2010-04-22 17:17:06 +02:00
__u32 ntp_mult ; /* NTP adjusted multiplier 0x3C */
2008-12-31 15:11:42 +01:00
} ;
struct vdso_per_cpu_data {
__u64 ectg_timer_base ;
__u64 ectg_user_time ;
2008-12-25 13:38:36 +01:00
} ;
extern struct vdso_data * vdso_data ;
2008-12-31 15:11:42 +01:00
# ifdef CONFIG_64BIT
int vdso_alloc_per_cpu ( int cpu , struct _lowcore * lowcore ) ;
void vdso_free_per_cpu ( int cpu , struct _lowcore * lowcore ) ;
# endif
2008-12-25 13:38:36 +01:00
# endif /* __ASSEMBLY__ */
# endif /* __KERNEL__ */
# endif /* __S390_VDSO_H__ */