16 Commits

Author SHA1 Message Date
28520dc0bb Experimenting with the restrict keyword 2026-05-04 17:27:01 +01:00
b8104b0fc7 MPMC queues implementation
Now we have 3 different API compatible MPMC queues that we can swap with
swapping the header.
mt_mpmc.h, a blocking queue that uses a mutex/critical section.
lf_mpmc.h, a lock free queue that uses atomics.
sm_mpmc.h, a hybrid queue that uses atomics and a semaphore to block
when the queue is empty.
In this program, for max performance it is recommanded to use sm_mpmc.h
or mt_mpmc.h, they are designed to avoid busy waiting which frees more
CPU time to do useful work.
2026-05-04 14:06:48 +01:00
759fdfda1e Project reordering and mpmc code 2026-05-04 13:39:49 +01:00
73aa4808f2 Reworking process_completion() function 2026-05-02 16:48:21 +01:00
fb83c3114f Add a build system 2026-05-01 20:59:51 +01:00
5cb47a17a2 Minor fixes after the merge
Deleting some duplicate functions and header
2026-04-28 22:04:53 +01:00
0faf2bc792 Merge branch 'io_ring' 2026-04-28 17:55:41 +01:00
b4487cd3a6 Finalizing the implementation of file registration
Adding the file system check in Linux(can be enabled from the config
file)
Adding a more options to the config file
Writing the README
2026-04-28 17:52:02 +01:00
3393129c5f Implementing registered files in io_uring
The windows implementation is disabled, currently registering files in
IO Ring when there is inflight IO operations causes corruptions.

Implementing a config file.

Some code cleanup
2026-04-24 15:30:04 +01:00
ab31776658 Reworking IO Ring pipeline to fully support multiple infilght files
Reworking the filequeue, the buffer chaining logic and the error
handling.
Renaming functions.
Fix bug in arena.
2026-04-23 19:53:58 +01:00
b8e577b5bb Porting IO Ring to linux by implementing io_uring 2026-04-15 23:15:00 +01:00
657752313e j'ai du faire ses changement pour que ca compile sur linux 2026-04-14 00:39:00 +01:00
0294498538 Add support for multiple inflight files and one shot hash small files
The IO Ring now supports bashing multiple submissions and can handle
multiple files at the same time.

Hashing small files using XXH3_128bits() instead of the streaming
pipeline(XXH3_128bits_reset(), XXH3_128bits_update(),
XXH3_128bits_digest()), this reduses the overhead of creating a state
and digest, coupled with the IO Ring it improves the hashing of small
files whose size is inferior to the size of IO Ring buffers
2026-04-02 14:31:58 +01:00
41ac164881 Updating the IO Ring, Updating the progress printing fn 2026-03-31 19:33:39 +01:00
d4ba121b56 Implementation of IO Ring in Windows
Fixing the two compilation warnings.
2026-03-31 00:26:03 +01:00
81d47fb675 Linux porting
Porting to linux
Reorganising the code
Improving the scan function
2026-03-18 23:38:54 +01:00