<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ouroboros/src/lib/shm_rbuff_pthr.c, branch master</title>
<subtitle>Ouroboros main repository</subtitle>
<id>http://www.ouroboros.rocks/cgit/ouroboros/atom?h=master</id>
<link rel='self' href='http://www.ouroboros.rocks/cgit/ouroboros/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/'/>
<updated>2026-01-07T13:33:39+00:00</updated>
<entry>
<title>lib: Remove the not-so lockless rbuff_ll</title>
<updated>2026-01-07T13:33:39+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2025-12-24T09:23:02+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=cef9a910aa9c2315aa4d4ab6c196b078ca2fad90'/>
<id>urn:sha1:cef9a910aa9c2315aa4d4ab6c196b078ca2fad90</id>
<content type='text'>
The "lockless" rbuff was mixing paradigms as it still has mutexes and
condvars to avoid spinning on blocking behaviour. This was a bad
idea. We'll add proper lockless implementations later.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>irmd: Revise IRMd internals</title>
<updated>2024-02-19T10:49:07+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2024-02-17T09:19:46+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=06ee3370998f965b469d1c2859e3e34159c71e20'/>
<id>urn:sha1:06ee3370998f965b469d1c2859e3e34159c71e20</id>
<content type='text'>
This is a full revision of the IRMd internal implementation.

The registry is now a proper subcomponent managing its own internal
lock (a single mutex). Some tests are added for the registry and its
data structures. Some macros for tests are added in &lt;ouroboros/test.h&gt;.

Flow allocation is now more symmetric between the client side (alloc)
and server size (accept). Each will create a flow in pending state
(ALLOC_PENDING/ACCEPT_PENDING) that is potentially fulfilled by an
IPCP using respond_alloc and respond_accept primitives. Deallocation
is split in flow_dealloc (application side) and ipcp_flow_dealloc
(IPCP side) to get the flow in DEALLOC_PENDING and DEALLOCATED state.

Cleanup of failed flow allocation is now properly handled instead of
relying on the sanitizer thread. The new sanitizer only needs to
monitor crashed processes.

On shutdown, the IRMd will now detect hanging processes and SIGKILL
them and clean up their fuse mountpoints if needed.

A lot of other things have been cleaned up and shuffled around a bit.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Update licenses to 2024</title>
<updated>2024-01-13T09:20:14+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2024-01-05T08:07:30+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=8742a31bf672c5bc087601ec39ab1feb206d2446'/>
<id>urn:sha1:8742a31bf672c5bc087601ec39ab1feb206d2446</id>
<content type='text'>
Slow but steady.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Wrap pthread_cond_timedwait for NULL abstime</title>
<updated>2023-10-25T07:53:27+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-10-07T12:26:23+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=5706bf3efa8d8262982bbed15fb041e536f56cf2'/>
<id>urn:sha1:5706bf3efa8d8262982bbed15fb041e536f56cf2</id>
<content type='text'>
We often have the pattern where we NULL-check abstime for
pthread_cond_timedwait to call pthread_cond_wait if it is.
Added a __timedwait function to wrap this.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Update copyright to 2023</title>
<updated>2023-02-13T20:10:10+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2023-02-09T16:38:30+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=c3814fa77eb7afbe6e798ded0fdff2df74ad8642'/>
<id>urn:sha1:c3814fa77eb7afbe6e798ded0fdff2df74ad8642</id>
<content type='text'>
2022 was a rather slow year...

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>build: Update copyright to 2022</title>
<updated>2022-04-03T16:01:02+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2022-04-02T08:44:18+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=9639e28fd2dfdb4c2c1fb544b07f2ab6a0395934'/>
<id>urn:sha1:9639e28fd2dfdb4c2c1fb544b07f2ab6a0395934</id>
<content type='text'>
Growing pains.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Add rbuff support for FLOWPEER state</title>
<updated>2022-03-30T13:05:05+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2022-03-26T19:28:56+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=56654f2cd1813d87d32695f126939bbfaad52385'/>
<id>urn:sha1:56654f2cd1813d87d32695f126939bbfaad52385</id>
<content type='text'>
This allows setting the FLOWPEER state on a flow to signal a peer is
unresponsive.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Flag all flows down as the IRMd exits</title>
<updated>2022-03-03T11:05:57+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2022-02-26T17:20:08+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=8969cd1f19409b110c761ed5dda1d6cb57399a64'/>
<id>urn:sha1:8969cd1f19409b110c761ed5dda1d6cb57399a64</id>
<content type='text'>
On exit of the IRMd all flows will now be flagged as down, so external
applications will not hang anymore. Note: reads keep work from flows
that are down until there are no more remaining packets in the buffer,
but no more packets can be written.

When the RIB is used, the external application may exit a bit later
than the IRMd, so I added a brief sleep before the IRMd tries to
remove the fuse main directory.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib: Handle FLOWDOWN during blocking read</title>
<updated>2022-02-21T08:05:27+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2022-02-20T12:51:06+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=d30154086afa32df203606817ed4d614cbe37b31'/>
<id>urn:sha1:d30154086afa32df203606817ed4d614cbe37b31</id>
<content type='text'>
The blocking read from the rbuff was not correctly handling flow down
states, returning a valid index. The attempt to fetch the header then
failed on an assertion. The blocking read will now return -EFLOWDOWN
if the flow is marked down by the IPCP.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
<entry>
<title>lib, ipcpd, irmd: Wrap pthread unlocks for cleanup</title>
<updated>2021-06-23T06:36:48+00:00</updated>
<author>
<name>Dimitri Staessens</name>
<email>dimitri@ouroboros.rocks</email>
</author>
<published>2021-06-21T18:24:03+00:00</published>
<link rel='alternate' type='text/html' href='http://www.ouroboros.rocks/cgit/ouroboros/commit/?id=8ca960fa0274018cb4f94a1826029d74e6f762e0'/>
<id>urn:sha1:8ca960fa0274018cb4f94a1826029d74e6f762e0</id>
<content type='text'>
This add an ouroboros/pthread.h header that wraps the
pthread_..._unlock() functions for cleanup using
pthread_cleanup_push() as this casting is not safe (and there were
definitely bad casts in the code). The close() function is now also
wrapped for cleanup in ouroboros/sockets.h.
This allows enabling more compiler checks.

Signed-off-by: Dimitri Staessens &lt;dimitri@ouroboros.rocks&gt;
Signed-off-by: Sander Vrijders &lt;sander@ouroboros.rocks&gt;
</content>
</entry>
</feed>
