summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* bench/ioq: Use nproc()HEADmainTavian Barnes2025-03-121-1/+1
|
* bfstd: Fix nproc() on systems without dynamically sized CPU masksTavian Barnes2025-03-101-2/+14
| | | | Notes: Fixes: a36774b ("bfstd: Take sched_getaffinity() into account in nproc()")
* build/flags: Add -lrt on FreeBSD for timer_create()Tavian Barnes2025-03-101-0/+1
| | | | Notes: Fixes: 881d590 ("xtime: Add a wrapper for timer_create()/setitimer()")
* tests/xtime: Don't waste time checking the system's timegm()Tavian Barnes2025-03-101-2/+9
| | | | Just check our wrapper's error detection, like we do for xmktime().
* tests: Add missing #include <sys/wait.h>Tavian Barnes2025-03-101-0/+1
| | | | Notes: Fixes: 1aefb83 ("tests/units: Run each test in a separate process")
* diag: Don't leave unused assertion messages in the binaryTavian Barnes2025-03-042-14/+27
| | | | | 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_locationTavian Barnes2025-03-045-70/+56
| | | | | | | | 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.
* tests/units: Run each test in a separate processTavian Barnes2025-02-271-27/+161
|
* bfstd: Take sched_getaffinity() into account in nproc()Tavian Barnes2025-02-273-5/+58
|
* bfstd: New nproc() functionTavian Barnes2025-02-273-15/+21
|
* Release 4.0.64.0.6Tavian Barnes2025-02-263-2/+22
|
* Micro-optimize word-at-a-time loop tailsTavian Barnes2025-02-212-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.
* tests/gnu/fls_overflow: Skip if the FS doesn't support 64-bit timesTavian Barnes2025-02-211-1/+1
| | | | Notes: Fixes: dd5df1f ("eval: Don't error out in -ls if the time overflows")
* ioq: Fix typo in commentTavian Barnes2025-02-181-1/+1
|
* tests/xspawn: Test bfs_spawn_resolve() with a relative $PATHTavian Barnes2025-02-181-26/+62
|
* trie: Use load8_beu*() for trie_mismatch()Tavian Barnes2025-02-131-29/+23
|
* bfstd: Use load8_leu*() for asciinlen()Tavian Barnes2025-02-131-24/+20
|
* bit: Add the load8_[bl]euN() utilitiesTavian Barnes2025-02-132-2/+63
|
* trie: Make nibble indices big-endianTavian Barnes2025-02-132-7/+11
| | | | Otherwise the order doesn't match lexicographical order on bytes.
* tests/xtouch: Use xstrtol()Tavian Barnes2025-02-131-5/+2
|
* trie: New trie_node_size() helperTavian Barnes2025-02-131-3/+9
|
* configure: Add separate --enable-lto knobTavian Barnes2025-02-132-3/+9
|
* configure: Add warn() helper functionTavian Barnes2025-02-121-6/+13
|
* trie: Clean up some bounds checkingTavian Barnes2025-02-121-6/+6
|
* trie: Micro-optimize trie_representative()Tavian Barnes2025-02-111-4/+5
| | | | | popcount(map & (bit - 1) & mask) has a longer critical path than popcount(map & (bit - 1)) & mask.
* tests: Don't shell out to tr just to replace slashes with dashesTavian Barnes2025-02-071-3/+1
|
* tests: Make --no-clean listen to $NO_COLORTavian Barnes2025-02-071-1/+1
|
* tests/color: Use /dev/tty over $TTYTavian Barnes2025-02-071-2/+2
| | | | | | | | | | | | | $TTY is the actual TTY, e.g. /dev/pts/3, which may not be accessible by the current user. This can happen e.g. if the PTY is owned by root, who then does root@host# su user user@host$ ./tests/tests.sh ./tests/color.sh: line 81: /dev/pts/3: Permission denied Notes: Fixes: 59b1c52 ("tests: Print progress outside the scroll region")
* eval: Don't error out in -ls if the time overflowsTavian Barnes2025-02-072-19/+34
|
* tests: Use $EPOCHSECONDS if it existsTavian Barnes2025-02-071-2/+7
| | | | | | | Bash 5 adds that special variable, which should be more reliable than the awk trick, which is known to be broken on mawk. Fixes: https://github.com/tavianator/bfs/issues/152
* ioq: Use getppid() for the heavy NOP syscallTavian Barnes2025-02-061-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 Barnes2025-02-063-2/+31
| | | | | | | | | 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 Barnes2025-02-063-2/+40
|
* trie: New trie_{get,set}_{str,mem}() functionsTavian Barnes2025-02-064-23/+93
|
* diag: Try to make diagnostics signal-saferTavian Barnes2025-02-063-3/+25
| | | | Link: https://sourceware.org/bugzilla/show_bug.cgi?id=16060
* tests/posix/exec_sigmask: Make portableTavian Barnes2025-02-041-2/+14
| | | | | | | | | | | The test was Linux-only, and didn't pass on at least mips64el due to a different signal mask size. The new version should be fully portable, but will hang forever on failure. Link: https://buildd.debian.org/status/fetch.php?pkg=bfs&arch=mips64el&ver=4.0.5-1&stamp=1737761227&raw=0 Notes: Fixes: 4859d49 ("tests: Add a test for sigmask restoration")
* ioq: Rewrite the spin loop to avoid a warningTavian Barnes2025-02-031-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.
* ci/diag.sh: Try to make sed unbufferedTavian Barnes2025-02-031-1/+6
|
* ci/diag.sh: Simplify sed expressionTavian Barnes2025-01-271-2/+1
|
* ci: Update to NetBSD 10.1Tavian Barnes2025-01-271-1/+1
|
* build(deps): bump cross-platform-actions/action from 0.26.0 to 0.27.0dependabot[bot]2025-01-271-3/+3
| | | | | | | | | | | | | | | Bumps [cross-platform-actions/action](https://github.com/cross-platform-actions/action) from 0.26.0 to 0.27.0. - [Release notes](https://github.com/cross-platform-actions/action/releases) - [Changelog](https://github.com/cross-platform-actions/action/blob/master/changelog.md) - [Commits](https://github.com/cross-platform-actions/action/compare/v0.26.0...v0.27.0) --- updated-dependencies: - dependency-name: cross-platform-actions/action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
* ci: Add an Arm64 Linux jobTavian Barnes2025-01-231-3/+34
|
* ci: Remove mmap_rnd_bits workaroundTavian Barnes2025-01-231-2/+0
| | | | Link: https://github.com/actions/runner-images/issues/9524#issuecomment-2002065399
* ci: Update to macos-15Tavian Barnes2025-01-231-4/+2
|
* tests/sighook: Fix Valgrind compatibilityTavian Barnes2025-01-211-39/+43
| | | | | | | | | | | | | | | | | | | | Valgrind does not deliver async signals in a timely manner; by default, it polls for new signals every 1,000 basic blocks. That means we can get SIGALRM delivered after timer_delete(), or kill(SIGSEGV) never delivered after pause(). Fix the timer_delete() issue by reordering the cleanup path. Valgrind always polls pending signals after pthread_sigmask(), so call that between timer_delete() and sigunhook(). Fix the pause() issue by sleeping in a loop instead. Note that --fair-sched=yes is required to avoid starvation of the background thread. Link: https://bugs.kde.org/show_bug.cgi?id=492678 Link: https://bugs.kde.org/show_bug.cgi?id=343357 Link: https://bugs.kde.org/show_bug.cgi?id=498936
* sighook: Fix sigreset() error handlingTavian Barnes2025-01-201-9/+16
| | | | Notes: Fixes: 62928dd ("sighook: New sigreset() function to reset all handlers")
* Release 4.0.54.0.5Tavian Barnes2025-01-184-4/+22
|
* tests: Add a test for sigmask restorationTavian Barnes2025-01-182-0/+5
|
* sighook: Don't forget to check `initialized` in sigreset()Tavian Barnes2025-01-181-0/+4
|
* sighook: Fix up siginit() error pathsTavian Barnes2025-01-181-8/+14
|