1 libnbaio (for "Non-Blocking Audio I/O") was originally intended to 2 be a purely non-blocking API. It has evolved to now include 3 a few blocking implementations of the interface. 4 5 Note: as used here, "short transfer count" means the return value for 6 read() or write() that indicates the actual number of successfully 7 transferred frames is less than the requested number of frames. 8 9 Pipe 10 ---- 11 supports 1 writer and N readers 12 13 no mutexes, so safe to use between SCHED_NORMAL and SCHED_FIFO threads 14 15 writes: 16 non-blocking 17 never return a short transfer count 18 overwrite data if not consumed quickly enough 19 20 reads: 21 non-blocking 22 return a short transfer count if not enough data 23 will lose data if reader doesn't keep up 24 25 MonoPipe 26 -------- 27 supports 1 writer and 1 reader 28 29 no mutexes, so safe to use between SCHED_NORMAL and SCHED_FIFO threads 30 31 write are optionally blocking: 32 if configured to block, then will wait until space available before returning 33 if configured to not block, then will return a short transfer count 34 and will never overwrite data 35 36 reads: 37 non-blocking 38 return a short transfer count if not enough data 39 never lose data 40 41