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

Function sysctl_kmaps_check

freebsd/arm64/arm64/pmap.c:7096–7116  ·  view source on GitHub ↗

* Given a leaf PTE, derive the mapping's attributes. If they do not match * those of the current run, dump the address range and its attributes, and * begin a new run. */

Source from the content-addressed store, hash-verified

7094 * begin a new run.
7095 */
7096static void
7097sysctl_kmaps_check(struct sbuf *sb, struct pmap_kernel_map_range *range,
7098 vm_offset_t va, pd_entry_t l0e, pd_entry_t l1e, pd_entry_t l2e,
7099 pt_entry_t l3e)
7100{
7101 pt_entry_t attrs;
7102
7103 attrs = l0e & (ATTR_S1_AP_MASK | ATTR_S1_XN);
7104 attrs |= l1e & (ATTR_S1_AP_MASK | ATTR_S1_XN);
7105 if ((l1e & ATTR_DESCR_MASK) == L1_BLOCK)
7106 attrs |= l1e & ATTR_S1_IDX_MASK;
7107 attrs |= l2e & (ATTR_S1_AP_MASK | ATTR_S1_XN);
7108 if ((l2e & ATTR_DESCR_MASK) == L2_BLOCK)
7109 attrs |= l2e & ATTR_S1_IDX_MASK;
7110 attrs |= l3e & (ATTR_S1_AP_MASK | ATTR_S1_XN | ATTR_S1_IDX_MASK);
7111
7112 if (range->sva > va || !sysctl_kmaps_match(range, attrs)) {
7113 sysctl_kmaps_dump(sb, range, va);
7114 sysctl_kmaps_reinit(range, va, attrs);
7115 }
7116}
7117
7118static int
7119sysctl_kmaps(SYSCTL_HANDLER_ARGS)

Callers 1

sysctl_kmapsFunction · 0.70

Calls 3

sysctl_kmaps_matchFunction · 0.70
sysctl_kmaps_dumpFunction · 0.70
sysctl_kmaps_reinitFunction · 0.70

Tested by

no test coverage detected