X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Fadt.h;h=67e12665ab3dd74d2e54e70ffb209782a5ee49e4;hb=0b24cbc2f18942b3d1d74efa025ecfa318ab35ec;hp=724877c624b579c5832cb65ac72f2a9b6cb06221;hpb=946922b365befebcf03ceab0c5eae9c284465def;p=tpg%2Facess2.git diff --git a/Kernel/include/adt.h b/Kernel/include/adt.h index 724877c6..67e12665 100644 --- a/Kernel/include/adt.h +++ b/Kernel/include/adt.h @@ -6,15 +6,16 @@ #define _ADT_H_ /** - * \name Ring Buffer + * \name Ring Buffers * \{ */ typedef struct sRingBuffer { - size_t Start; - size_t Length; - size_t Space; - char Data[]; + size_t Start; //!< Start of data in ring buffer + size_t Length; //!< Number of data bytes in buffer + size_t Space; //!< Allocated space in buffer + tShortSpinlock Lock; //!< Lock to prevent collisions + char Data[]; //!< Buffer } tRingBuffer; /** @@ -23,8 +24,22 @@ typedef struct sRingBuffer * \return Pointer to the buffer structure */ extern tRingBuffer *RingBuffer_Create(size_t Space); +/** + * \brief Read at most \a Length bytes from the buffer + * \param Dest Destinaton buffer + * \param Buffer Source ring buffer + * \param Length Requested number of bytes + * \return Number of bytes read + */ extern size_t RingBuffer_Read(void *Dest, tRingBuffer *Buffer, size_t Length); -extern size_t RingBuffer_Write(tRingBuffer *Buffer, void *Source, size_t Length); +/** + * \brief Write at most \a Length bytes to the buffer + * \param Buffer Destination ring buffer + * \param Source Source buffer + * \param Length Provided number of bytes + * \return Number of bytes written + */ +extern size_t RingBuffer_Write(tRingBuffer *Buffer, const void *Source, size_t Length); /** * \} */