Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | bfstd: Fix nproc() on systems without dynamically sized CPU masks | Tavian Barnes | 2025-03-10 | 1 | -2/+14 |
| | | | | Notes: Fixes: a36774b ("bfstd: Take sched_getaffinity() into account in nproc()") | ||||
* | diag: Don't leave unused assertion messages in the binary | Tavian Barnes | 2025-03-04 | 1 | -6/+19 |
| | | | | | Rather than hiding them with %.0s, use a ternary to replace them with an empty string if they would be unused. | ||||
* | diag: Get rid of struct bfs_location | Tavian Barnes | 2025-03-04 | 2 | -51/+40 |
| | | | | | | | | Just add the standard prefix to the passed format string in the diagnostic macros themselves. This lets us write the whole message with one dprintf() call, minimizing interleaving. It's also a net win for binary size. | ||||
* | bfstd: Take sched_getaffinity() into account in nproc() | Tavian Barnes | 2025-02-27 | 1 | -5/+48 |
| | |||||
* | bfstd: New nproc() function | Tavian Barnes | 2025-02-27 | 3 | -15/+21 |
| | |||||
* | Micro-optimize word-at-a-time loop tails | Tavian Barnes | 2025-02-21 | 2 | -10/+14 |
| | | | | | | Compilers apparently aren't smart enough to infer that the odd tail length fixup "loops" run at most once, and could be converted to ifs, so do that manually. | ||||
* | ioq: Fix typo in comment | Tavian Barnes | 2025-02-18 | 1 | -1/+1 |
| | |||||
* | trie: Use load8_beu*() for trie_mismatch() | Tavian Barnes | 2025-02-13 | 1 | -29/+23 |
| | |||||
* | bfstd: Use load8_leu*() for asciinlen() | Tavian Barnes | 2025-02-13 | 1 | -24/+20 |
| | |||||
* | bit: Add the load8_[bl]euN() utilities | Tavian Barnes | 2025-02-13 | 1 | -1/+53 |
| | |||||
* | trie: Make nibble indices big-endian | Tavian Barnes | 2025-02-13 | 1 | -7/+7 |
| | | | | Otherwise the order doesn't match lexicographical order on bytes. | ||||
* | trie: New trie_node_size() helper | Tavian Barnes | 2025-02-13 | 1 | -3/+9 |
| | |||||
* | trie: Clean up some bounds checking | Tavian Barnes | 2025-02-12 | 1 | -6/+6 |
| | |||||
* | trie: Micro-optimize trie_representative() | Tavian Barnes | 2025-02-11 | 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 | 2025-02-07 | 1 | -19/+30 |
| | |||||
* | ioq: Use getppid() for the heavy NOP syscall | Tavian Barnes | 2025-02-06 | 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 | 2025-02-06 | 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 | 2025-02-06 | 3 | -2/+40 |
| | |||||
* | trie: New trie_{get,set}_{str,mem}() functions | Tavian Barnes | 2025-02-06 | 4 | -23/+93 |
| | |||||
* | diag: Try to make diagnostics signal-safer | Tavian Barnes | 2025-02-06 | 1 | -3/+16 |
| | | | | Link: https://sourceware.org/bugzilla/show_bug.cgi?id=16060 | ||||
* | ioq: Rewrite the spin loop to avoid a warning | Tavian Barnes | 2025-02-03 | 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 |
| | | | | Notes: Fixes: 62928dd ("sighook: New sigreset() function to reset all handlers") | ||||
* | 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 |
| | | | | Notes: Fixes: 90791fc ("list: Make SLIST_REMOVE() more type-safe") | ||||
* | 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 |
| |