Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | trie: Use load8_beu*() for trie_mismatch()HEADmain | Tavian Barnes | 3 days | 1 | -29/+23 |
| | |||||
* | bfstd: Use load8_leu*() for asciinlen() | Tavian Barnes | 3 days | 1 | -24/+20 |
| | |||||
* | bit: Add the load8_[bl]euN() utilities | Tavian Barnes | 3 days | 1 | -1/+53 |
| | |||||
* | trie: Make nibble indices big-endian | Tavian Barnes | 3 days | 1 | -7/+7 |
| | | | | Otherwise the order doesn't match lexicographical order on bytes. | ||||
* | trie: New trie_node_size() helper | Tavian Barnes | 3 days | 1 | -3/+9 |
| | |||||
* | trie: Clean up some bounds checking | Tavian Barnes | 4 days | 1 | -6/+6 |
| | |||||
* | trie: Micro-optimize trie_representative() | Tavian Barnes | 5 days | 1 | -4/+5 |
| | | | | | popcount(map & (bit - 1) & mask) has a longer critical path than popcount(map & (bit - 1)) & mask. | ||||
* | eval: Don't error out in -ls if the time overflows | Tavian Barnes | 9 days | 1 | -19/+30 |
| | |||||
* | ioq: Use getppid() for the heavy NOP syscall | Tavian Barnes | 10 days | 1 | -1/+1 |
| | | | | | | | | getpid() could hypothetically be cached (and glibc used to do it). getppid() can't be, because the parent could die and reparent the child to init. Link: https://lore.kernel.org/linux-mm/Z58dIOGlJ3grsAge@casper.infradead.org/ | ||||
* | mtab: Use mount IDs instead of dev_t for bfs_fstype() | Tavian Barnes | 10 days | 1 | -2/+2 |
| | | | | | | | | | This fixes -fstype on btrfs subvolumes, which previously reported "unknown" due to their dev_t being potentially different from the mount point. Link: https://savannah.gnu.org/bugs/?50859 Link: https://lwn.net/Articles/866582/ | ||||
* | stat: Expose mount IDs from statx() | Tavian Barnes | 10 days | 3 | -2/+40 |
| | |||||
* | trie: New trie_{get,set}_{str,mem}() functions | Tavian Barnes | 10 days | 4 | -23/+93 |
| | |||||
* | diag: Try to make diagnostics signal-safer | Tavian Barnes | 10 days | 1 | -3/+16 |
| | | | | Link: https://sourceware.org/bugzilla/show_bug.cgi?id=16060 | ||||
* | ioq: Rewrite the spin loop to avoid a warning | Tavian Barnes | 13 days | 1 | -4/+3 |
| | | | | | | | | | | | | With some GCC versions, --enable-ubsan leads to this warning: src/ioq.c: In function ‘ioq_slot_wait’: src/ioq.c:287:17: warning: ignoring loop annotation 287 | for (int j = 0; j < (1 << i); ++j) { | ^~~ presumably due to UBSan rewriting the shift to check for overflow. Work around this by precomputing the iteration count. | ||||
* | sighook: Fix sigreset() error handling | Tavian Barnes | 2025-01-20 | 1 | -9/+16 |
| | |||||
* | sighook: Don't forget to check `initialized` in sigreset() | Tavian Barnes | 2025-01-18 | 1 | -0/+4 |
| | |||||
* | sighook: Fix up siginit() error paths | Tavian Barnes | 2025-01-18 | 1 | -8/+14 |
| | |||||
* | xspawn: Unblock signals between fork() and exec() | Tavian Barnes | 2025-01-18 | 1 | -2/+15 |
| | | | | | | Otherwise the child process runs with all signals blocked. Fixes: 423cfa4 ("xspawn: Mask signals before fork()") | ||||
* | sighook: New sigreset() function to reset all handlers | Tavian Barnes | 2025-01-18 | 2 | -3/+45 |
| | |||||
* | sighook: Convert siglist to a more general rcu_list type | Tavian Barnes | 2025-01-18 | 1 | -52/+66 |
| | |||||
* | build: Feature-detect #pragma nounroll support | Tavian Barnes | 2025-01-17 | 1 | -2/+2 |
| | |||||
* | list: Don't use leading underscores for globals | Tavian Barnes | 2025-01-16 | 1 | -6/+6 |
| | |||||
* | ioq: Don't unroll the spin loop | Tavian Barnes | 2025-01-16 | 2 | -1/+15 |
| | |||||
* | ioq: Prefetch slots with a write intent | Tavian Barnes | 2025-01-16 | 1 | -1/+1 |
| | |||||
* | build: Check for compound literal storage-class support | Tavian Barnes | 2025-01-07 | 1 | -1/+1 |
| | | | | This lets us use them on GCC >= 13, even before C23. | ||||
* | sighook: Add some missing fatal signals | Tavian Barnes | 2024-12-24 | 1 | -5/+14 |
| | |||||
* | sighook: Preserve the exact siginfo_t in reraise() on Linux | Tavian Barnes | 2024-12-24 | 1 | -3/+16 |
| | | | | Link: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=66dd34ad31e5963d72a700ec3f2449291d322921 | ||||
* | sighook: Always re-raise faults on macOS | Tavian Barnes | 2024-12-22 | 1 | -0/+7 |
| | | | | | | | | | | macOS always fills in si_code for SIG{BUS,ILL,SEGV} as if it were a real hardware fault, so returning from the handler is not guaranteed to re- trigger the signal. Fixes: aecdabb ("sighook: Return instead of re-raising for faults") Link: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2386463/4/util/posix/signals_test.cc Link: https://github.com/chromium/crashpad/commit/e0d8a0aa01ac176804077f1f128ccc894c098f79 | ||||
* | sanity: New sanitize_resize() function | Tavian Barnes | 2024-12-16 | 2 | -16/+33 |
| | | | | | This wraps __sanitizer_annotate_contiguous_container() to give byte-precise tracking of usable allocation sizes with ASan. | ||||
* | sanity: Get rid of sanitize_ignore() | Tavian Barnes | 2024-12-16 | 2 | -11/+6 |
| | | | | | It's probably nicer to avoid evaluating expensive arguments when not sanitizing, rather than relying on the optimizer to clean them up. | ||||
* | ioq: Refactor ioq_ring_probe_flags() | Tavian Barnes | 2024-12-04 | 1 | -11/+13 |
| | |||||
* | ioq: Try spinning before blocking in ioq_slot_wait() | Tavian Barnes | 2024-12-03 | 1 | -1/+17 |
| | |||||
* | ioq: Submit and pop requests in batches | Tavian Barnes | 2024-12-03 | 3 | -17/+42 |
| | | | | | The new ioq_submit() function is now necessary to call to ensure the pending request batch is flushed. | ||||
* | ioq: Add more io_uring setup flags | Tavian Barnes | 2024-12-03 | 1 | -20/+55 |
| | |||||
* | ioq: Refactor io_uring submission logic | Tavian Barnes | 2024-12-03 | 1 | -94/+145 |
| | |||||
* | ioq: Use ioq_batch for both pushing and popping | Tavian Barnes | 2024-12-03 | 1 | -47/+84 |
| | |||||
* | ioq: Add a hash function between slots and monitors | Tavian Barnes | 2024-12-03 | 1 | -1/+11 |
| | | | | | | This helps avoid situations where multiple waiters block on different slots using the same monitor, which happened more often than expected due to correlations caused by batching. | ||||
* | ioq: Prefetch pointers before popping them | Tavian Barnes | 2024-12-03 | 2 | -8/+10 |
| | | | | | Also, cache-align struct ioq_ent to avoid false sharing when two workers are handling neighbouring requests. | ||||
* | ioq: Add an ioq_nop() operation for benchmarking | Tavian Barnes | 2024-12-02 | 3 | -0/+62 |
| | |||||
* | xtime: New timespec utility functions | Tavian Barnes | 2024-12-02 | 3 | -23/+95 |
| | |||||
* | sighook: New SH_ONESHOT flag | Tavian Barnes | 2024-12-02 | 2 | -1/+21 |
| | |||||
* | bfstd: Add more strto*() wrappers | Tavian Barnes | 2024-12-02 | 2 | -24/+69 |
| | |||||
* | ioq: Set the worker thread names to ioq-%d | Tavian Barnes | 2024-11-27 | 1 | -2/+8 |
| | |||||
* | thread: New thread_setname() function | Tavian Barnes | 2024-11-27 | 2 | -0/+17 |
| | |||||
* | sighook: Return instead of re-raising for faults | Tavian Barnes | 2024-11-23 | 1 | -5/+11 |
| | | | | | | | | | | | This makes the death look exactly like it would if we didn't handle the signal at all. Coredumps will point at the right instruction, segfaults will get logged in dmesg again, etc. Technically POSIX says this is undefined, but if we get a fault, we've already done something undefined anyway ;) Link: https://github.com/rust-lang/rust/issues/26458 | ||||
* | sighook: Check for SA_RESTART before using it | Tavian Barnes | 2024-11-23 | 1 | -1/+7 |
| | | | | QNX doesn't support SA_RESTART. | ||||
* | bfstd: makedev() takes 3 arguments on QNX | Tavian Barnes | 2024-11-23 | 1 | -1/+3 |
| | |||||
* | prelude: Define _QNX_SOURCE | Tavian Barnes | 2024-11-23 | 1 | -0/+5 |
| | |||||
* | ioq: Enable IORING_SETUP_SUBMIT_ALL | Tavian Barnes | 2024-11-20 | 1 | -2/+18 |
| | |||||
* | color: Squelch a -Wmaybe-uninitialized warning on non-LTO builds | Tavian Barnes | 2024-11-20 | 1 | -1/+1 |
| |