Skip to content

Prototype implementation of msetname(2) and userspace updates to use it.#2523

Open
rwatson wants to merge 18 commits intodevfrom
msetname
Open

Prototype implementation of msetname(2) and userspace updates to use it.#2523
rwatson wants to merge 18 commits intodevfrom
msetname

Conversation

@rwatson
Copy link
Member

@rwatson rwatson commented Jan 7, 2026

This change adds a new field name to struct vm_map_entry that contains an optional name for anonymous memory mappings that can be specified by kernel KPIs, such as a new vm_map_insert_name(9), and also from userspace with a new system call msetname(9). It also adds calls to msetname() in various key bits of userlevel such as rtld, libc, and libthr to label various anonymous memory mappings such as those used for BSS, user-defined stack mappings, heap mappings, and so on.

This prototype has a number of limitations including:

  • Not clear if msetname(2) is the right API.
  • There are not yet test cases, pending confirmation that the API is in fact a good idea.
  • It might be desirable to simply change KPIs such as vm_map_fixed(9) rather than add new _name() variants.
  • It's not clear how much structure, or at least guidance, we want to place on the namespace for msetname(2). Currently I'm using a subsystem:instance tuple, but perhaps there's something better.

Typical output as below:

% procstat -v $$
  PID              START                END PRT    RES PRES REF SHD FLAG   TP PATH
 3326           0x100000           0x127000 r--R-   31  136  12   6 CN---- vn /bin/tcsh
 3326           0x127000           0x136000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326           0x136000           0x185000 r-xR-   79  136  12   6 CN---- vn /bin/tcsh
 3326           0x185000           0x194000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326           0x194000           0x19e000 r--R-   10    0   1   0 CN---c vn /bin/tcsh
 3326           0x19e000           0x1ad000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326           0x1ad000           0x1b2000 rw-RW    5    0   1   0 CN---c vn /bin/tcsh
 3326           0x1b2000           0x1db000 rw-RW   11   11   1   0 C----c sw kernel:vm_anon
 3326         0x401ad000         0x401b8000 r--R-   11   48 112  32 CN---- vn /libexec/ld-elf.so.1
 3326         0x401b8000         0x401c7000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x401c7000         0x401e7000 r-xR-   32   48 112  32 CN---- vn /libexec/ld-elf.so.1
 3326         0x401e7000         0x401f6000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x401f6000         0x401fa000 rw-RW    4    0   1   0 CN---c vn /libexec/ld-elf.so.1
 3326         0x401fa000         0x40209000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40209000         0x4020d000 rw-RW    4    4   1   0 CN---c sw kernel:vm_anon
 3326         0x4020d000         0x40215000 rw-RW    7    7   1   0 C----c sw crt:libmalloc_simple
 3326         0x40215000         0x40216000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40216000         0x40217000 rw-RW    1    1   1   0 CN---c sw rtld:c18n_stats
 3326         0x40217000         0x40220000 rw-RW    8    8   1   0 CN---c sw crt:libmalloc_simple
 3326         0x40220000         0x40221000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40221000         0x40222000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x40222000         0x40245000 r--R-   35   72  23  11 CN---- vn /lib/libtinfow.so.9
 3326         0x40245000         0x40254000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x40254000         0x40270000 r-xR-   28   72  23  11 CN---- vn /lib/libtinfow.so.9
 3326         0x40270000         0x4027f000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x4027f000         0x40287000 r--R-    8    0   1   0 CN---c vn /lib/libtinfow.so.9
 3326         0x40287000         0x40296000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x40296000         0x40298000 rw-RW    2    0   1   0 CN---c vn /lib/libtinfow.so.9
 3326         0x40298000         0x40299000 rw-RW    1    1   1   0 CN---c sw rtld:bss
 3326         0x40299000         0x4029a000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x4029a000         0x4029e000 r--R-    4   10  34  14 CN---- vn /lib/libcrypt.so.5
 3326         0x4029e000         0x402ad000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x402ad000         0x402b2000 r-xR-    5   10  34  14 CN---- vn /lib/libcrypt.so.5
 3326         0x402b2000         0x402c1000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x402c1000         0x402c3000 r--R-    2    0   1   0 CN---c vn /lib/libcrypt.so.5
 3326         0x402c3000         0x402d2000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x402d2000         0x402d3000 rw-RW    1    0   1   0 CN---c vn /lib/libcrypt.so.5
 3326         0x402d3000         0x402d4000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x402d4000         0x4038f000 r--R-  115  440 144  64 CN---- vn /lib/libc.so.7
 3326         0x4038f000         0x4039e000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x4039e000         0x404cd000 r-xR-  271  440 144  64 CN---- vn /lib/libc.so.7
 3326         0x404cd000         0x404dc000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x404dc000         0x404fc000 r--R-   32    0   1   0 CN---c vn /lib/libc.so.7
 3326         0x404fc000         0x4050b000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x4050b000         0x40517000 rw-RW   12    0   1   0 CN---c vn /lib/libc.so.7
 3326         0x40517000         0x4094f000 rw-RW   31   31   1   0 C----c sw rtld:bss
 3326         0x4094f000         0x40950000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x40950000         0x40959000 r--R-    9   32  52  22 CN---- vn /lib/libmd.so.7
 3326         0x40959000         0x40968000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x40968000         0x4097c000 r-xR-   20   32  52  22 CN---- vn /lib/libmd.so.7
 3326         0x4097c000         0x4098b000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x4098b000         0x4098c000 r--R-    1    0   1   0 CN---c vn /lib/libmd.so.7
 3326         0x4098c000         0x4099b000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x4099b000         0x4099c000 rw-RW    1    0   1   0 CN---c vn /lib/libmd.so.7
 3326         0x4099c000         0x4099d000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x4099d000         0x409b2000 r--R-   21   32 151  71 CN---- vn /lib/libsys.so.7
 3326         0x409b2000         0x409c1000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x409c1000         0x409c6000 r-xR-    5   32 151  71 CN---- vn /lib/libsys.so.7
 3326         0x409c6000         0x409d5000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x409d5000         0x409d6000 r--R-    1    0   1   0 CN---c vn /lib/libsys.so.7
 3326         0x409d6000         0x409e5000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x409e5000         0x409e6000 rw-RW    1    0   1   0 CN---c vn /lib/libsys.so.7
 3326         0x409e6000         0x409e7000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x409e7000         0x40a06000 rw-RW    1    1   1   0 C--D-c sw rtld:c18n_stack
 3326         0x40a06000         0x40a0d000 rw-RW    5    5   1   0 CN---c sw crt:libmalloc_simple
 3326         0x40a0d000         0x40a12000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40a12000         0x40c12000 rwxRW  116  116   1   0 CN---c sw rtld:c18n_tramp
 3326         0x40c12000         0x40c1b000 rw-RW    6    6   1   0 CN---c sw crt:libmalloc_simple
 3326         0x40c1b000         0x40c22000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40c22000         0x40c33000 rw-RW   10   10   1   0 CN---c sw crt:libmalloc_simple
 3326         0x40c33000         0x40c3a000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40c3a000         0x40c5f000 rw-RW   31   31   1   0 CN---c sw crt:libmalloc_simple
 3326         0x40c5f000         0x40c62000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40c62000         0x40c73000 rw-RW    9    9   1   0 CN---c sw crt:libmalloc_simple
 3326         0x40c73000         0x40c7a000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40c7a000         0x40c9b000 rw-RW   17   17   1   0 CN---c sw crt:libmalloc_simple
 3326         0x40c9b000         0x40ca2000 -----    0    0   0   0 ------ -- kernel:vm_reservation
 3326         0x40ca2000         0x40cea000 rw-RW   26   26   1   0 C----c sw crt:libmalloc_simple
 3326         0x40cea000         0x410ca000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x410ca000         0x410ea000 rw-RW    1    1   1   0 CN-D-c sw rtld:c18n_stack
 3326         0x410ea000         0x414ca000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x414ca000         0x414ea000 rw-RW    6    6   1   0 C--D-c sw rtld:c18n_stack
 3326         0x414ea000         0x414f7000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x414f7000         0x41546000 rw-RW   79   79   1   0 CN---c sw mrs:alloc_descriptor_slab
 3326         0x41546000         0x41547000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x41547000         0x41548000 r--R-    1    3  12   6 CN---- vn /usr/lib/i18n/libiconv_std.so.5
 3326         0x41548000         0x41557000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x410ea000         0x414ca000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x414ca000         0x414ea000 rw-RW    6    6   1   0 C--D-c sw rtld:c18n_stack
 3326         0x414ea000         0x414f7000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x414f7000         0x41546000 rw-RW   79   79   1   0 CN---c sw mrs:alloc_descriptor_slab
 3326         0x41546000         0x41547000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x41547000         0x41548000 r--R-    1    3  12   6 CN---- vn /usr/lib/i18n/libiconv_std.so.5
 3326         0x41548000         0x41557000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x41557000         0x41559000 r-xR-    2    3  12   6 CN---- vn /usr/lib/i18n/libiconv_std.so.5
 3326         0x41559000         0x41568000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x41568000         0x41569000 r--R-    1    0   1   0 CN---c vn /usr/lib/i18n/libiconv_std.so.5
 3326         0x41569000         0x41578000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x41578000         0x41579000 rw-RW    1    0   1   0 CN---c vn /usr/lib/i18n/libiconv_std.so.5
 3326         0x41579000         0x41594000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x41594000         0x41595000 r--R-    1    2  12   6 CN---- vn /usr/lib/i18n/libUTF8.so.5
 3326         0x41595000         0x415a4000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x415a4000         0x415a6000 r-xR-    2    2  12   6 CN---- vn /usr/lib/i18n/libUTF8.so.5
 3326         0x415a6000         0x415b5000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x415b5000         0x415b6000 r--R-    1    0   1   0 CN---c vn /usr/lib/i18n/libUTF8.so.5
 3326         0x415b6000         0x415c5000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x415c5000         0x415c6000 rw-RW    1    0   1   0 CN---c vn /usr/lib/i18n/libUTF8.so.5
 3326         0x415c6000         0x415c7000 -----    0    0   0   0 ------ qu kernel:vm_reservation
 3326         0x415c7000         0x415c8000 r--R-    1    2  12   6 CN---- vn /usr/lib/i18n/libmapper_none.so.5
 3326         0x415c8000         0x415d7000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x415d7000         0x415d8000 r-xR-    1    2  12   6 CN---- vn /usr/lib/i18n/libmapper_none.so.5
 3326         0x415d8000         0x415e7000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x415e7000         0x415e8000 r--R-    1    0   1   0 CN---c vn /usr/lib/i18n/libmapper_none.so.5
 3326         0x415e8000         0x415f7000 -----    0    0   0   0 CN---- gd rtld:base_object
 3326         0x415f7000         0x415f8000 rw-RW    1    0   1   0 CN---c vn /usr/lib/i18n/libmapper_none.so.5
 3326         0x41600000         0x41800000 rw-RW   44   44   1   0 CNS--c sw jemalloc:pages_map
 3326         0x41800000         0x41a00000 rw-RW  440  440   1   0 C-S--c sw jemalloc:pages_map
 3326         0x41a00000         0x42000000 rw-RW   10   10   1   0 CN---c sw jemalloc:pages_map
 3326         0x42000000         0x423e0000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x423e0000         0x42400000 rw-RW    6    6   1   0 C--D-c sw rtld:c18n_stack
 3326         0x42400000         0x427e0000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x427e0000         0x42800000 rw-RW    1    1   1   0 CN-D-c sw rtld:c18n_stack
 3326         0x42800000         0x42be0000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x42be0000         0x42c00000 rw-RW    1    1   1   0 CN-D-c sw rtld:c18n_stack
 3326         0x42c00000         0x42fe0000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x42fe0000         0x43000000 rw-RW    0    0   0   0 ---D-- -- rtld:c18n_stack
 3326         0x43000000         0x43280000 rw-RW  593  593   1   0 CNS--c sw jemalloc:pages_map
 3326         0x43280000         0x432cf000 rw-RW   65   65   1   0 C----c sw mrs:alloc_descriptor_slab
 3326         0x432cf000         0x436af000 -----    0    0   0   0 G----- gd rtld:c18n_stack
 3326         0x436af000         0x436cf000 rw-RW    8    8   1   0 CN-D-c sw rtld:c18n_stack
 3326         0x436cf000         0x439cf000 rw-RW  183  183   1   0 C----c sw jemalloc:pages_map
 3326     0xfbfdbffff000     0xfbfdc0000000 rw---    1    1   1   0 CN---- sw kernel:vm_shadow_info
 3326     0xfbfdc0000000     0xfe0000000000 rw---   11    0   1   0 C----- sw kernel:vm_shadow
 3326     0xffffbfeff000     0xffffbff80000 rw-RW    1    1   1   0 CN---c sw kernel:vm_anon
 3326     0xffffbff80000     0xfffffff60000 -----    0    0   0   0 G----- gd kernel:vm_stack_guard
 3326     0xfffffff60000     0xfffffff80000 rw-RW    4    4   1   0 CN-D-c sw kernel:vm_stack
 3326     0xfffffffff000    0x1000000000000 r-x--    1    1  42   0 ------ ph kernel:vdso

@github-actions
Copy link

github-actions bot commented Jan 7, 2026

Thank you for taking the time to contribute to FreeBSD!
There is an issue that needs to be fixed:

@rwatson rwatson self-assigned this Jan 7, 2026
Copy link
Contributor

@markjdb markjdb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks ok to me aside from the inline comment.

If I were trying to upstream this, I think the approach of storing 32 bytes per map entry is probably not going to fly; a lot of effort was put into making those compact. On my desktop there are 151489 map entries currently allocated, so this amounts to ~5MB of extra memory overhead.

On LP64 systems we do have a 4-byte hole after the wired_count field; I wonder if that could be repurposed as an index into a table of strings. For kernel: names this would be trivial, but we'd need a scheme for userspace to register names somehow, certainly more complex than the current patch.

if (!vm_map_lookup_entry(map, start, &entry))
entry = vm_map_entry_succ(entry);
for (; entry->start < end; entry = vm_map_entry_succ(entry))
strlcpy(entry->name, name, sizeof(entry->name));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it intentional that you don't clip VM map entries here? That is, the first map entry might contain pages before start, and the last map entry might contain pages after end, so this operation potentially tags pages outside of the specified range.

I could see some argument for doing it that way: the name is just a label and not relevant to any functionality, so maybe we should avoid clipping just to avoid overhead from creating extra vm map entries. On the other hand, it means that you're potentially mislabeling memory.

I think I'd clip the entries to ensure that the name applies only to [start, end]. In that case, vm_map_mergeable_neighbors() needs to be updated too.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was caught between two different approaches, really: (1) Try not to cause perturbation of underlying data structures and (2) This is a real property. I changed my mind partway through, and in particular changed the equality test to compare the names, and then failed to update this to do clipping. I'll look at fixing this.

vm_map_lock(map);
VM_MAP_RANGE_CHECK(map, start, end);
if (!vm_map_lookup_entry(map, start, &entry))
entry = vm_map_entry_succ(entry);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to raise an error if there is a hole in the specified range?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd tend to say yes because that's something that can never happen on CHERI and it's best to have CHERI and non-CHERI operate similarly rather than raising confusing errors.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On further reflection, we should pre-check that we're not spanning reservations here which also takes care of there being no holes.

@rwatson
Copy link
Member Author

rwatson commented Jan 7, 2026

If I were trying to upstream this, I think the approach of storing 32 bytes per map entry is probably not going to fly; a lot of effort was put into making those compact. On my desktop there are 151489 map entries currently allocated, so this amounts to ~5MB of extra memory overhead.

On LP64 systems we do have a 4-byte hole after the wired_count field; I wonder if that could be repurposed as an index into a table of strings. For kernel: names this would be trivial, but we'd need a scheme for userspace to register names somehow, certainly more complex than the current patch.

I think this is closely linked to the query I posed about whether and how we want to handle namespacing. Simply taking it down to 16 or even 12 is surely not going to substantively impact any of the current names, and we could allocate a flag of some sort for 'originated in kernel or userlevel' to eliminate the use of a 'kernel:' prefix. However, as you say, it's offering userspace flexibility in naming that creates more of a problem, and could easily lead to annoying policy questions if nothing else. And I think if one starts to squeeze the names to 8 or below, one loses at least readability and likely also information. But I wonder if 8 bytes makes this feel a lot more palatable, or still feels too heavyweight. Perhaps if all we can easily get is 4 bytes, we are forced down the path of a string table, which raises lots of annoying questions.

Regardless of the details there: I think ideally we'd produce something upstreamable, since in fact I personally have wanted this information for several projects since first writing procstat, I've just never quite gotten around to looking at it :-).

Copy link
Member

@brooksdavis brooksdavis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few thoughts:

What should happen when two adjacent parts of a reservation are unmapped but have different names? If they don't merge the reservation will never transition to quarantined under the current logic so the mapping with never be revoked.

Assuming the above is resolved, what should happen if two adjacent quarantined entries have different names? Not merging them remains correct so maybe it's fine, but I'd have to give the code a hard look. We probably at least want to allow merging of neighbors once we've picked an entry to revoke.

vm_map_lock(map);
VM_MAP_RANGE_CHECK(map, start, end);
if (!vm_map_lookup_entry(map, start, &entry))
entry = vm_map_entry_succ(entry);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd tend to say yes because that's something that can never happen on CHERI and it's best to have CHERI and non-CHERI operate similarly rather than raising confusing errors.

size_t size
);
}
592 AUE_MSETNAME STD|CAPENABLED {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This syscall number can't be used, it'll conflict with upstream, which is already up to 599(!).

I see that the range 258-271 is reserved upstream and CheriBSD uses a few numbers in that range; perhaps we should take a number from there instead?

Copy link
Member

@brooksdavis brooksdavis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

vm_map_msetname still needs needs clipping and should be limited to a single reservation.

I'm not sure how the latest libc wrapper actually works.

sys/vm/vm_map.c Outdated
Comment on lines +2102 to +2115
#if 0
else if (new_entry->object.vm_object == NULL &&
(new_entry->eflags & MAP_ENTRY_GUARD) != 0)
strlcpy(new_entry->name, "kernel:vm_guard",
sizeof(new_entry->name));
else if (new_entry->object.vm_object == NULL &&
(new_entry->eflags & MAP_ENTRY_STACK_GAP) != 0)
strlcpy(new_entry->name, "kernel:vm_stackgap",
sizeof(new_entry->name));
else if (new_entry->object.vm_object == NULL &&
(new_entry->eflags & MAP_ENTRY_GROWS_DOWN) != 0)
strlcpy(new_entry->name, "kernel:vm_stack",
sizeof(new_entry->name));
#endif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

delete before merge?

vm_map_lock(map);
VM_MAP_RANGE_CHECK(map, start, end);
if (!vm_map_lookup_entry(map, start, &entry))
entry = vm_map_entry_succ(entry);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On further reflection, we should pre-check that we're not spanning reservations here which also takes care of there being no holes.

# Also use all the syscall .o files from libsys_pic (libsys is always NO_SSP):
_libsys_other_objects= fstat fstatat fstatfs syscall \
cerror geteuid getegid sigfastblock munmap mprotect \
cerror geteuid getegid sigfastblock munmap mprotect msetname \
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you might also need _msetname for the __sys_msetname definition?

os_pages_unmap(result, size);
return true;
}
(void)msetname(result, size, "jemalloc:pages_commit_impl");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems fine to start, but I wonder if we want to be capturing the "committed" state of pages.

sys/vm/vm_map.c Outdated
Comment on lines +196 to +197
FEATURE(vm_msetname, "Kernel support for msetname(2)");

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think you've moved on from using this and maybe should drop this commit.

rwatson and others added 12 commits February 15, 2026 19:40
Co-authored-by: Brooks Davis <brooks@one-eyed-alien.net>
Co-authored-by: Brooks Davis <brooks@one-eyed-alien.net>
Co-authored-by: Brooks Davis <brooks@one-eyed-alien.net>
Co-authored-by: Brooks Davis <brooks@one-eyed-alien.net>
Co-authored-by: Brooks Davis <brooks@one-eyed-alien.net>
Co-authored-by: Brooks Davis <brooks@one-eyed-alien.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants