| .. | .. |
|---|
| 106 | 106 | u32 hrtimer_res; |
|---|
| 107 | 107 | u32 __unused; |
|---|
| 108 | 108 | |
|---|
| 109 | +#ifdef CONFIG_GENERIC_CLOCKSOURCE_VDSO |
|---|
| 110 | + u32 cs_type_seq; |
|---|
| 111 | + char cs_mmdev[16]; |
|---|
| 112 | +#endif |
|---|
| 113 | + |
|---|
| 109 | 114 | struct arch_vdso_data arch_data; |
|---|
| 110 | 115 | }; |
|---|
| 111 | 116 | |
|---|
| 117 | +#if defined(CONFIG_GENERIC_CLOCKSOURCE_VDSO) && !defined(ENABLE_COMPAT_VDSO) |
|---|
| 118 | + |
|---|
| 119 | +#include <linux/clocksource.h> |
|---|
| 120 | + |
|---|
| 121 | +struct clksrc_info; |
|---|
| 122 | + |
|---|
| 123 | +typedef u64 vdso_read_cycles_t(const struct clksrc_info *info); |
|---|
| 124 | + |
|---|
| 125 | +struct clksrc_info { |
|---|
| 126 | + vdso_read_cycles_t *read_cycles; |
|---|
| 127 | + struct clksrc_user_mmio_info mmio; |
|---|
| 128 | +}; |
|---|
| 129 | + |
|---|
| 130 | +struct vdso_priv { |
|---|
| 131 | + u32 current_cs_type_seq; |
|---|
| 132 | + struct clksrc_info clksrc_info[CLOCKSOURCE_VDSO_MMIO + CLKSRC_USER_MMIO_MAX]; |
|---|
| 133 | +}; |
|---|
| 134 | + |
|---|
| 135 | +#endif /* !CONFIG_GENERIC_CLOCKSOURCE_VDSO */ |
|---|
| 136 | + |
|---|
| 112 | 137 | /* |
|---|
| 113 | 138 | * We use the hidden visibility to prevent the compiler from generating a GOT |
|---|
| 114 | 139 | * relocation. Not only is going through a GOT useless (the entry couldn't and |
|---|