User Details
- User Since
- Jul 1 2014, 6:02 PM (625 w, 3 d)
Yesterday
Thu, Jun 25
Sun, Jun 21
Tue, Jun 2
May 22 2026
May 11 2026
May 7 2026
Apr 13 2026
Apr 8 2026
Mar 27 2026
Mar 13 2026
Mar 9 2026
Mar 5 2026
Feb 24 2026
Feb 23 2026
Feb 19 2026
Feb 18 2026
Feb 17 2026
Feb 2 2026
Jan 23 2026
Jan 20 2026
Jan 19 2026
I like the idea of the split, but I'm not convinced queue.3 should go away entirely. If nothing else this commit fails to remove all references to queue(3) in the tree and I suspect it's in some people's finger memory. I'd suggest transforming queue.3 into an intro-like manpage with a brief comparison of each of the relevant list/queue types.
Jan 16 2026
Jan 15 2026
In practice, this would be fine with default CHERI C, but broken with subobject bounds.
Jan 14 2026
I'm not sure if this is the right sorting, but otherwise it's good.
The whole stack of review builds including subdirectories that aren't connected to the build (other then sndio since I didn't have libsndio installed). However, these changes are untested and I've only verified this last change by building and examining the library with nm to verity that they don't include surprising undefined symbols.
Jan 9 2026
Fix up comment removing errors
Rename CACHE_ZONE_ALIGNMENT to CACHE_ZONE_ALIGN_MASK and use it
consistenly.
Jan 8 2026
Drop *_zero functions entierly
For additional context, I took a look at the disassembly on amd64 and the memsets are all expanded in place:
; memset(pi, 0, sizeof(*pi));
8461: 48 c7 85 78 ff ff ff 00 00 00 00 movq $0x0, -0x88(%rbp)
846c: 48 c7 85 70 ff ff ff 00 00 00 00 movq $0x0, -0x90(%rbp)
8477: 48 c7 85 68 ff ff ff 00 00 00 00 movq $0x0, -0x98(%rbp)
8482: 48 c7 85 60 ff ff ff 00 00 00 00 movq $0x0, -0xa0(%rbp)
848d: 48 c7 85 58 ff ff ff 00 00 00 00 movq $0x0, -0xa8(%rbp)
8498: 48 c7 85 50 ff ff ff 00 00 00 00 movq $0x0, -0xb0(%rbp)
...
; memset(ri, 0, sizeof(*ri));
8b1d: 48 c7 85 78 ff ff ff 00 00 00 00 movq $0x0, -0x88(%rbp)
8b28: 48 c7 85 70 ff ff ff 00 00 00 00 movq $0x0, -0x90(%rbp)
8b33: 48 c7 85 60 ff ff ff 00 00 00 00 movq $0x0, -0xa0(%rbp)
8b3e: 48 c7 85 58 ff ff ff 00 00 00 00 movq $0x0, -0xa8(%rbp)
8b49: 48 8b 85 48 ff ff ff movq -0xb8(%rbp), %rax
...
; memset(pi, 0, sizeof(*pi));
a9aa: 48 c7 45 a0 00 00 00 00 movq $0x0, -0x60(%rbp)
a9b2: 48 c7 45 98 00 00 00 00 movq $0x0, -0x68(%rbp)
a9ba: 48 c7 45 90 00 00 00 00 movq $0x0, -0x70(%rbp)
a9c2: 48 c7 45 88 00 00 00 00 movq $0x0, -0x78(%rbp)
a9ca: 48 c7 45 80 00 00 00 00 movq $0x0, -0x80(%rbp)
a9d2: 48 c7 85 78 ff ff ff 00 00 00 00 movq $0x0, -0x88(%rbp)
a9dd: 48 c7 85 70 ff ff ff 00 00 00 00 movq $0x0, -0x90(%rbp)
...
; memset(ri, 0, sizeof(*ri));
bc7c: 48 c7 45 b0 00 00 00 00 movq $0x0, -0x50(%rbp)
bc84: 48 c7 45 a8 00 00 00 00 movq $0x0, -0x58(%rbp)
bc8c: 48 c7 45 a0 00 00 00 00 movq $0x0, -0x60(%rbp)
bc94: 48 c7 45 98 00 00 00 00 movq $0x0, -0x68(%rbp)
bc9c: 48 c7 45 90 00 00 00 00 movq $0x0, -0x70(%rbp)
...
; memset(pi, 0, sizeof(*pi));
dc56: 48 c7 45 c8 00 00 00 00 movq $0x0, -0x38(%rbp)
dc5e: 48 c7 45 c0 00 00 00 00 movq $0x0, -0x40(%rbp)
dc66: 48 c7 45 b8 00 00 00 00 movq $0x0, -0x48(%rbp)
dc6e: 48 c7 45 b0 00 00 00 00 movq $0x0, -0x50(%rbp)
dc76: 48 c7 45 a8 00 00 00 00 movq $0x0, -0x58(%rbp)
dc7e: 48 c7 45 a0 00 00 00 00 movq $0x0, -0x60(%rbp)
dc86: 48 c7 45 98 00 00 00 00 movq $0x0, -0x68(%rbp)CHERI adds yet another branch to the ifdefs and makes this worse and harder to maintain so it's time for it to go. The compiler is also free to recognize the pattern here as memset and replace the code with a libcall so this optimization isn't reliable in any way.
