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

Function smap_sysctl_handler

freebsd/amd64/amd64/machdep.c:1950–1982  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1948}
1949
1950static int
1951smap_sysctl_handler(SYSCTL_HANDLER_ARGS)
1952{
1953 struct bios_smap *smapbase;
1954 struct bios_smap_xattr smap;
1955 caddr_t kmdp;
1956 uint32_t *smapattr;
1957 int count, error, i;
1958
1959 /* Retrieve the system memory map from the loader. */
1960 kmdp = preload_search_by_type("elf kernel");
1961 if (kmdp == NULL)
1962 kmdp = preload_search_by_type("elf64 kernel");
1963 smapbase = (struct bios_smap *)preload_search_info(kmdp,
1964 MODINFO_METADATA | MODINFOMD_SMAP);
1965 if (smapbase == NULL)
1966 return (0);
1967 smapattr = (uint32_t *)preload_search_info(kmdp,
1968 MODINFO_METADATA | MODINFOMD_SMAP_XATTR);
1969 count = *((uint32_t *)smapbase - 1) / sizeof(*smapbase);
1970 error = 0;
1971 for (i = 0; i < count; i++) {
1972 smap.base = smapbase[i].base;
1973 smap.length = smapbase[i].length;
1974 smap.type = smapbase[i].type;
1975 if (smapattr != NULL)
1976 smap.xattr = smapattr[i];
1977 else
1978 smap.xattr = 0;
1979 error = SYSCTL_OUT(req, &smap, sizeof(smap));
1980 }
1981 return (error);
1982}
1983SYSCTL_PROC(_machdep, OID_AUTO, smap,
1984 CTLTYPE_OPAQUE | CTLFLAG_RD | CTLFLAG_MPSAFE, NULL, 0,
1985 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