Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/machdep.c
Show All 12 Lines | |||||
if (smapattr != NULL) | if (smapattr != NULL) | ||||
smap.xattr = smapattr[i]; | smap.xattr = smapattr[i]; | ||||
else | else | ||||
smap.xattr = 0; | smap.xattr = 0; | ||||
error = SYSCTL_OUT(req, &smap, sizeof(smap)); | error = SYSCTL_OUT(req, &smap, sizeof(smap)); | ||||
} | } | ||||
return (error); | return (error); | ||||
} | } | ||||
SYSCTL_PROC(_machdep, OID_AUTO, smap, CTLTYPE_OPAQUE|CTLFLAG_RD, NULL, 0, | SYSCTL_PROC(_machdep, OID_AUTO, smap, | ||||
smap_sysctl_handler, "S,bios_smap_xattr", "Raw BIOS SMAP data"); | CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_NEEDGIANT, NULL, 0, | ||||
smap_sysctl_handler, "S,bios_smap_xattr", | |||||
"Raw BIOS SMAP data"); | |||||
static int | static int | ||||
efi_map_sysctl_handler(SYSCTL_HANDLER_ARGS) | efi_map_sysctl_handler(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
struct efi_map_header *efihdr; | struct efi_map_header *efihdr; | ||||
caddr_t kmdp; | caddr_t kmdp; | ||||
uint32_t efisize; | uint32_t efisize; | ||||
kmdp = preload_search_by_type("elf kernel"); | kmdp = preload_search_by_type("elf kernel"); | ||||
if (kmdp == NULL) | if (kmdp == NULL) | ||||
kmdp = preload_search_by_type("elf64 kernel"); | kmdp = preload_search_by_type("elf64 kernel"); | ||||
efihdr = (struct efi_map_header *)preload_search_info(kmdp, | efihdr = (struct efi_map_header *)preload_search_info(kmdp, | ||||
MODINFO_METADATA | MODINFOMD_EFI_MAP); | MODINFO_METADATA | MODINFOMD_EFI_MAP); | ||||
if (efihdr == NULL) | if (efihdr == NULL) | ||||
return (0); | return (0); | ||||
efisize = *((uint32_t *)efihdr - 1); | efisize = *((uint32_t *)efihdr - 1); | ||||
return (SYSCTL_OUT(req, efihdr, efisize)); | return (SYSCTL_OUT(req, efihdr, efisize)); | ||||
} | } | ||||
SYSCTL_PROC(_machdep, OID_AUTO, efi_map, CTLTYPE_OPAQUE|CTLFLAG_RD, NULL, 0, | SYSCTL_PROC(_machdep, OID_AUTO, efi_map, | ||||
efi_map_sysctl_handler, "S,efi_map_header", "Raw EFI Memory Map"); | CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_NEEDGIANT, NULL, 0, | ||||
efi_map_sysctl_handler, "S,efi_map_header", | |||||
"Raw EFI Memory Map"); | |||||
void | void | ||||
spinlock_enter(void) | spinlock_enter(void) | ||||
{ | { | ||||
struct thread *td; | struct thread *td; | ||||
register_t flags; | register_t flags; | ||||
td = curthread; | td = curthread; | ||||
Show All 12 Lines |