| /* |
| * Copyright (C) 1995 Advanced RISC Machines Limited. All rights reserved. |
| * |
| * This software may be freely used, copied, modified, and distributed |
| * provided that the above copyright notice is preserved in all copies of the |
| * software. |
| */ |
| |
| /* -*-C-*- |
| * |
| * $Revision$ |
| * $Date$ |
| * |
| * |
| * Project: ANGEL |
| * |
| * Title: Public interface to buffer management |
| */ |
| |
| #ifndef angel_buffers_h |
| #define angel_buffers_h |
| |
| #include "chandefs.h" /* CHAN_HEADER_SIZE */ |
| |
| |
| /* the handle to a buffer */ |
| typedef unsigned char *p_Buffer; |
| |
| |
| /* |
| * Angel Packets are structured as a fixed size header, followed |
| * by the packet data |
| */ |
| #ifdef TARGET |
| # define BUFFERDATA(b) (b) /* channels layer takes care of it */ |
| #else |
| # define BUFFERDATA(b) (&((b)[CHAN_HEADER_SIZE])) |
| #endif |
| |
| |
| /* |
| * The buffer management function prototypes are only applicable |
| * when compiling target code |
| */ |
| #ifdef TARGET |
| |
| /* |
| * Function: Angel_BufferQuerySizes |
| * Purpose: Request infomation on the default and maximum buffer sizes |
| * that can be allocated |
| * |
| * Params: |
| * In/Out: default_size, max_size: pointers to place the |
| * sizes in on return |
| */ |
| |
| void Angel_BufferQuerySizes(unsigned int *default_size, |
| unsigned int *max_size ); |
| |
| /* |
| * Function: Angel_RxEnginBuffersLeft |
| * Purpose: return the number of free buffers |
| * |
| * Params: |
| * Returns: number of free buffers |
| */ |
| unsigned int Angel_BuffersLeft( void ); |
| |
| /* |
| * Function: Angel_BufferAlloc |
| * Purpose: allocate a buffer that is at least req_size bytes long |
| * |
| * Params: |
| * Input: req_size the required size of the buffer |
| * |
| * Returns: pointer to the buffer NULL if unable to |
| * fulfil the request |
| */ |
| p_Buffer Angel_BufferAlloc(unsigned int req_size); |
| |
| /* |
| * Function: Angel_BufferRelease |
| * Purpose: release a buffer back to the free pool |
| * |
| * Params: |
| * Input: pointer to the buffer to free |
| */ |
| void Angel_BufferRelease(p_Buffer buffer); |
| |
| |
| /* return values for angel_InitBuffers */ |
| typedef enum buf_init_error{ |
| INIT_BUF_OK, |
| INIT_BUF_FAIL |
| } buf_init_error; |
| |
| /* |
| * Function: Angel_InitBuffers |
| * Purpose: Initalised and malloc the buffer pool |
| * |
| * Params: |
| * Returns: see above |
| */ |
| |
| buf_init_error Angel_InitBuffers(void); |
| |
| #endif /* def TARGET */ |
| |
| #endif /* ndef angel_buffers_h */ |
| |
| /* EOF buffers.h */ |