X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FIPStack%2Finclude%2Fbuffer.h;h=749fc18142d715bdc559adb0b548e937dd4bccd1;hb=e47f509e07718893b837826f981085829cf16c84;hp=62c1308c2eae0cc465d876d71a526f19366a6ec3;hpb=849329d50395b44ac97c5b5145fc2df0749eace2;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/IPStack/include/buffer.h b/KernelLand/Modules/IPStack/include/buffer.h index 62c1308c..749fc181 100644 --- a/KernelLand/Modules/IPStack/include/buffer.h +++ b/KernelLand/Modules/IPStack/include/buffer.h @@ -15,6 +15,10 @@ typedef void (*tIPStackBufferCb)(void *Arg, size_t HeadLen, size_t FootLen, cons * \brief Create a buffer object, with space for \a MaxSubBuffers calls to IPStack_Buffer_AppendSubBuffer */ extern tIPStackBuffer *IPStack_Buffer_CreateBuffer(int MaxSubBuffers); +/** + * \brief Clear a buffer object without deallocating it + */ +extern void IPStack_Buffer_ClearBuffer(tIPStackBuffer *Buffer); /** * \brief Destory a created buffer object */ @@ -38,6 +42,15 @@ extern void IPStack_Buffer_AppendSubBuffer(tIPStackBuffer *Buffer, * \brief Get the total length of a buffer */ extern size_t IPStack_Buffer_GetLength(tIPStackBuffer *Buffer); + +/** + * \brief Copy data from a buffer to a preallocated flat buffer + * \param Dest Destination flat buffer + * \param MaxBytes Maximum number of bytes to copy (size of \a Dest) + * \return Number of bytes copied + */ +extern size_t IPStack_Buffer_GetData(tIPStackBuffer *Buffer, void *Dest, size_t MaxBytes); + /** * \brief Get a sub-buffer from the buffer object * \param PrevID Previous return value, or -1 to start @@ -54,5 +67,8 @@ extern int IPStack_Buffer_GetBuffer(tIPStackBuffer *Buffer, int PrevID, size_t * */ extern void *IPStack_Buffer_CompactBuffer(tIPStackBuffer *Buffer, size_t *Length); +extern void IPStack_Buffer_LockBuffer(tIPStackBuffer *Buffer); +extern void IPStack_Buffer_UnlockBuffer(tIPStackBuffer *Buffer); + #endif