| 226 | } |
| 227 | |
| 228 | struct vdso_sv_tk * |
| 229 | alloc_sv_tk(void) |
| 230 | { |
| 231 | struct vdso_sv_tk *svtk; |
| 232 | int tk_base; |
| 233 | uint32_t tk_ver; |
| 234 | |
| 235 | tk_ver = VDSO_TK_VER_CURR; |
| 236 | svtk = malloc(sizeof(struct vdso_sv_tk), M_TEMP, M_WAITOK | M_ZERO); |
| 237 | tk_base = shared_page_alloc(sizeof(struct vdso_timekeep) + |
| 238 | sizeof(struct vdso_timehands) * VDSO_TH_NUM, 16); |
| 239 | KASSERT(tk_base != -1, ("tk_base -1 for native")); |
| 240 | shared_page_write(tk_base + offsetof(struct vdso_timekeep, tk_ver), |
| 241 | sizeof(uint32_t), &tk_ver); |
| 242 | svtk->sv_timekeep_off = tk_base; |
| 243 | timekeep_push_vdso(); |
| 244 | return (svtk); |
| 245 | } |
| 246 | |
| 247 | #ifdef COMPAT_FREEBSD32 |
| 248 | struct vdso_sv_tk * |
no test coverage detected