The FreeRADIUS server $Id: 15bac2a4c627c01d1aa2047687b3418955ac7f00 $
Loading...
Searching...
No Matches
Functions
pipe.h File Reference

BIO pipe handlers. More...

Go to the source code of this file.

Functions

fr_bio_tfr_bio_pipe_alloc (TALLOC_CTX *ctx, fr_bio_cb_funcs_t *cb, size_t buffer_size)
 Allocate a thread-safe pipe which can be used for both reads and writes.
 

Detailed Description

BIO pipe handlers.

Id
335a19132bed9264d99844c53c4b0ffb3e585757

Definition in file pipe.h.

Function Documentation

◆ fr_bio_pipe_alloc()

fr_bio_t * fr_bio_pipe_alloc ( TALLOC_CTX *  ctx,
fr_bio_cb_funcs_t cb,
size_t  buffer_size 
)

Allocate a thread-safe pipe which can be used for both reads and writes.

Due to talloc issues with multiple threads, if the caller wants a bi-directional pipe, this function will need to be called twice. That way a free in each context won't result in a race condition on two mutex locks.

For now, it's too difficult to emulate the pipe[2] behavior, where two identical "connected" things are returned, and either can be used for reading or for writing.

i.e. a pipe is really a mutex-protected memory buffer. One side should call write (and never read). The other side should call read (and never write).

The pipe should be freed only after both ends have set EOF.

Definition at line 181 of file pipe.c.

+ Here is the call graph for this function: