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

Function smap_sysctl_handler

freebsd/i386/i386/machdep.c:2635–2667  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2633}
2634
2635static int
2636smap_sysctl_handler(SYSCTL_HANDLER_ARGS)
2637{
2638 struct bios_smap *smapbase;
2639 struct bios_smap_xattr smap;
2640 caddr_t kmdp;
2641 uint32_t *smapattr;
2642 int count, error, i;
2643
2644 /* Retrieve the system memory map from the loader. */
2645 kmdp = preload_search_by_type("elf kernel");
2646 if (kmdp == NULL)
2647 kmdp = preload_search_by_type("elf32 kernel");
2648 smapbase = (struct bios_smap *)preload_search_info(kmdp,
2649 MODINFO_METADATA | MODINFOMD_SMAP);
2650 if (smapbase == NULL)
2651 return (0);
2652 smapattr = (uint32_t *)preload_search_info(kmdp,
2653 MODINFO_METADATA | MODINFOMD_SMAP_XATTR);
2654 count = *((u_int32_t *)smapbase - 1) / sizeof(*smapbase);
2655 error = 0;
2656 for (i = 0; i < count; i++) {
2657 smap.base = smapbase[i].base;
2658 smap.length = smapbase[i].length;
2659 smap.type = smapbase[i].type;
2660 if (smapattr != NULL)
2661 smap.xattr = smapattr[i];
2662 else
2663 smap.xattr = 0;
2664 error = SYSCTL_OUT(req, &smap, sizeof(smap));
2665 }
2666 return (error);
2667}
2668SYSCTL_PROC(_machdep, OID_AUTO, smap,
2669 CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0,
2670 smap_sysctl_handler, "S,bios_smap_xattr",

Callers

nothing calls this directly

Calls 2

preload_search_by_typeFunction · 0.85
preload_search_infoFunction · 0.85

Tested by

no test coverage detected