2 * Hyper Operating System Application Framework
5 * @brief %jp{パケットデータ用バッファクラス}
7 * Copyright (C) 2002-2007 by Project HOS
8 * http://sourceforge.jp/projects/hos/
12 #include "packetbuf_local.h"
16 /** 送信用バッファの取得(省コピー) */
17 unsigned int PacketBuf_GetBuf(C_PACKETBUF *self, void **ppBuf, unsigned int uiSize)
19 unsigned int uiAllocSize;
22 uiAllocSize = PACKETBUF_DATASIZE(uiSize) + sizeof(unsigned int);
25 if ( self->uiTail >= self->uiHead )
27 if ( self->uiTail > self->uiBufSize - uiAllocSize )
30 if ( self->uiHead <= uiAllocSize )
32 return 0; /* 割り当て不可 */
36 self->uiReturnPoint = self->uiTail;
42 if ( self->uiHead - self->uiTail <= uiAllocSize )
44 return 0; /* 割り当て不可 */
49 *ppBuf = (void *)(self->pubBuf + self->uiTail + sizeof(unsigned int));
51 return uiSize; /* 割り当てたサイズを返す */