summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ioq: Try spinning before blocking in ioq_slot_wait()Tavian Barnes2024-12-031-1/+17
|
* ioq: Submit and pop requests in batchesTavian Barnes2024-12-035-17/+44
| | | | | The new ioq_submit() function is now necessary to call to ensure the pending request batch is flushed.
* ioq: Add more io_uring setup flagsTavian Barnes2024-12-031-20/+55
|
* ioq: Refactor io_uring submission logicTavian Barnes2024-12-031-94/+145
|
* ioq: Use ioq_batch for both pushing and poppingTavian Barnes2024-12-031-47/+84
|
* ioq: Add a hash function between slots and monitorsTavian Barnes2024-12-031-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 themTavian Barnes2024-12-032-8/+10
| | | | | Also, cache-align struct ioq_ent to avoid false sharing when two workers are handling neighbouring requests.
* bench/ioq: New ioq microbenchmarkTavian Barnes2024-12-032-1/+332
|
* ioq: Add an ioq_nop() operation for benchmarkingTavian Barnes2024-12-023-0/+62
|
* xtime: New timespec utility functionsTavian Barnes2024-12-023-23/+95
|
* sighook: New SH_ONESHOT flagTavian Barnes2024-12-022-1/+21
|
* bfstd: Add more strto*() wrappersTavian Barnes2024-12-022-24/+69
|
* ioq: Set the worker thread names to ioq-%dTavian Barnes2024-11-271-2/+8
|
* thread: New thread_setname() functionTavian Barnes2024-11-275-0/+37
|
* sighook: Return instead of re-raising for faultsTavian Barnes2024-11-231-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 itTavian Barnes2024-11-231-1/+7
| | | | QNX doesn't support SA_RESTART.
* bfstd: makedev() takes 3 arguments on QNXTavian Barnes2024-11-231-1/+3
|
* prelude: Define _QNX_SOURCETavian Barnes2024-11-231-0/+5
|
* build: Check for -pthread before using itTavian Barnes2024-11-232-2/+12
| | | | | | QNX's qcc, for example, will complain that cc1: error: command-line option '-pthread' is valid for the driver but not for C
* tests/getopts: Remove unused variableTavian Barnes2024-11-211-1/+0
|
* docs/bfs.1: Simplify the formattingTavian Barnes2024-11-201-64/+105
|
* ioq: Enable IORING_SETUP_SUBMIT_ALLTavian Barnes2024-11-201-2/+18
|
* color: Squelch a -Wmaybe-uninitialized warning on non-LTO buildsTavian Barnes2024-11-201-1/+1
|
* build(deps): bump codecov/codecov-action from 4 to 5dependabot[bot]2024-11-181-1/+1
| | | | | | | | | | | | | | | Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5. - [Release notes](https://github.com/codecov/codecov-action/releases) - [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/codecov/codecov-action/compare/v4...v5) --- updated-dependencies: - dependency-name: codecov/codecov-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
* ioq: Check for io_uring_register_iowq_max_workers() before using itTavian Barnes2024-11-113-0/+15
| | | | | | | This allows us to build against liburing as old as version 2.0, which is apparently shipped by the latest Amazon Linux distribution. Fixes: https://github.com/tavianator/bfs/issues/147
* sanity: Don't mark memory uninit in sanitize_{alloc,free}()Tavian Barnes2024-11-023-19/+45
| | | | | We might want to change the size of an allocated region without changing which bytes are initialized.
* alloc: Stop supporting pathological flexible array ABIsTavian Barnes2024-11-023-22/+29
|
* alloc: Add macro versions of alignment utilsTavian Barnes2024-11-021-3/+12
|
* trie: Fix varena_free() with wrong sizeTavian Barnes2024-11-021-8/+8
| | | | | | | In trie_remove(), clearing the bit before trie_node_collapse() causes us to free the old node with size 1 instead of 2, putting it on the wrong freelist. This is technically safe with the current arena implementation, but not intentional.
* alloc: Don't require size % align == 0Tavian Barnes2024-11-025-39/+27
| | | | | | | | | Allowing unaligned sizes will allow us to allocate aligned slabs with additional metadata in the tail without ballooning the allocation size for large alignments. Link: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2244.htm#dr_460 Link: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2072.htm
* Release 4.0.44.0.4Tavian Barnes2024-10-313-2/+20
|
* Merge pull request #146 from jody-frankowski/fix/capa-color-non-linuxTavian Barnes2024-10-315-1/+43
|\ | | | | Fix bfs coloring all files as if they had a capability, on non-Linux systems
| * color: Handle bfs_check_capabilities error code (-1) in cpath_has_capabilitiesJody Frankowski2024-10-315-1/+43
|/ | | | | | | | | | | On non-Linux systems, bfs_check_capabilities always returned -1, so cpath_has_capabilities would always return true. If bfs was called with an LS_COLORS containing the `ca` statement, e.g. `ca=30;41`, bfs would color ALL the files. While including the `ca` statement in LS_COLORS on non-Linux systems is unusual, this is not an error and is a valid use-case (e.g. Using GNU ls or lsd). Fixes: 1520d4d3 ("color: Don't color files like directories on ENOTDIR")
* bit: Add bswap() overloads for every primitive typeTavian Barnes2024-10-272-9/+41
| | | | Fixes: https://github.com/tavianator/bfs/issues/145
* tests/posix: Add a test for overly aggressive -exec {} + matchingTavian Barnes2024-10-272-0/+33
| | | | Link: https://savannah.gnu.org/bugs/?66365
* Merge pull request #144 from ryandesign/patch-1Tavian Barnes2024-10-261-1/+1
|\ | | | | Fix typo in manpage
| * Fix typo in manpageRyan Carsten Schmidt2024-10-261-1/+1
|/
* Release 4.0.34.0.3Tavian Barnes2024-10-223-2/+20
|
* build: New make dist[sign] targetsTavian Barnes2024-10-221-1/+11
|
* dstring: Add an infallible dstrshrink() functionTavian Barnes2024-10-174-9/+47
| | | | And mark the fallible ones with _nodiscard.
* color: Don't color files like directories on ENOTDIRTavian Barnes2024-10-162-116/+232
|
* color: Fix an infinite loop colorizing some invalid pathsTavian Barnes2024-10-133-8/+13
| | | | | | | | | | | | | | Previously, given $ touch file $ ln -s file/file notdir $ bfs notdir/file bfs would loop forever when printing the error message, since it expected stripping the trailing slash from "notdir/" to fix the ENOTDIR error, but the broken symlink still gave the same error. Fixes: b4c3201 ("color: Only highlight the trailing slash on ENOTDIR")
* tests/gnu: Test -L -printf %YTavian Barnes2024-10-102-0/+18
|
* tests/trie: Improve code coverageTavian Barnes2024-10-101-1/+4
|
* sighook: Don't forget to reset list->tail on the last sigpop()Tavian Barnes2024-10-102-0/+9
| | | | | | | This was causing a UAF if we ever unregistered the last hook for a signal and then re-registered one. Fixes: 75b7f70 ("sighook: Make sigunhook() O(1)")
* eval: Use xtimer_start() for status bar updatesTavian Barnes2024-10-101-36/+76
|
* tests/sighook: Use the new xtimer_start() APITavian Barnes2024-10-101-8/+6
|
* xtime: Add a wrapper for timer_create()/setitimer()Tavian Barnes2024-10-104-0/+130
| | | | | | setitimer() is obsolescent in POSIX 2008 and removed from POSIX 2024. However, at least macOS doesn't implement the new timer_create() API, so we still need the setitimer() fallback.
* Adjust in/out parameter docsTavian Barnes2024-10-105-11/+11
|
* Fix some -Wundef-prefix warningsTavian Barnes2024-10-104-6/+14
|