MCPcopy Create free account
hub / github.com/F-Stack/f-stack / exec_sysvec_init

Function exec_sysvec_init

freebsd/kern/kern_sharedpage.c:304–350  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

302#endif /* RANDOM_FENESTRASX */
303
304void
305exec_sysvec_init(void *param)
306{
307 struct sysentvec *sv;
308#ifdef RANDOM_FENESTRASX
309 ptrdiff_t base;
310#endif
311
312 sv = (struct sysentvec *)param;
313 if ((sv->sv_flags & SV_SHP) == 0)
314 return;
315 sv->sv_shared_page_obj = shared_page_obj;
316 sv->sv_sigcode_base = sv->sv_shared_page_base +
317 shared_page_fill(*(sv->sv_szsigcode), 16, sv->sv_sigcode);
318 if ((sv->sv_flags & SV_ABI_MASK) != SV_ABI_FREEBSD)
319 return;
320 if ((sv->sv_flags & SV_TIMEKEEP) != 0) {
321#ifdef COMPAT_FREEBSD32
322 if ((sv->sv_flags & SV_ILP32) != 0) {
323 KASSERT(compat32_svtk == NULL,
324 ("Compat32 already registered"));
325 compat32_svtk = alloc_sv_tk_compat32();
326 sv->sv_timekeep_base = sv->sv_shared_page_base +
327 compat32_svtk->sv_timekeep_off;
328 } else {
329#endif
330 KASSERT(host_svtk == NULL, ("Host already registered"));
331 host_svtk = alloc_sv_tk();
332 sv->sv_timekeep_base = sv->sv_shared_page_base +
333 host_svtk->sv_timekeep_off;
334#ifdef COMPAT_FREEBSD32
335 }
336#endif
337 }
338#ifdef RANDOM_FENESTRASX
339 if ((sv->sv_flags & SV_RNG_SEED_VER) != 0) {
340 /*
341 * Only allocate a single VDSO entry for multiple sysentvecs,
342 * i.e., native and COMPAT32.
343 */
344 if (fxrng_shpage_mapping == NULL)
345 alloc_sv_fxrng_generation();
346 base = (char *)fxrng_shpage_mapping - shared_page_mapping;
347 sv->sv_fxrng_gen_base = sv->sv_shared_page_base + base;
348 }
349#endif
350}
351
352void
353exec_sysvec_init_secondary(struct sysentvec *sv, struct sysentvec *sv2)

Callers 1

amd64_init_sysvecsFunction · 0.85

Calls 4

shared_page_fillFunction · 0.85
alloc_sv_tk_compat32Function · 0.85
alloc_sv_tkFunction · 0.85

Tested by

no test coverage detected