The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.
Dependents: hello SerialTestv11 SerialTestv12 Sierpinski ... more
mbed 2
This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.
TARGET_ARM_BEETLE_SOC/TOOLCHAIN_ARM_STD/wsf_buf.h@172:65be27845400, 2019-02-20 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Feb 20 20:53:29 2019 +0000
- Revision:
- 172:65be27845400
- Parent:
- 171:3a7713b1edbc
mbed library release version 165
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 171:3a7713b1edbc | 1 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 2 | /*! |
AnnaBridge | 171:3a7713b1edbc | 3 | * \file wsf_buf.h |
AnnaBridge | 171:3a7713b1edbc | 4 | * |
AnnaBridge | 171:3a7713b1edbc | 5 | * \brief Buffer pool service. |
AnnaBridge | 171:3a7713b1edbc | 6 | * |
AnnaBridge | 171:3a7713b1edbc | 7 | * $Date: 2015-12-20 15:10:41 -0800 (Sun, 20 Dec 2015) $ |
AnnaBridge | 171:3a7713b1edbc | 8 | * $Revision: 4927 $ |
AnnaBridge | 171:3a7713b1edbc | 9 | * |
AnnaBridge | 171:3a7713b1edbc | 10 | * Copyright (c) 2009 Wicentric, Inc., all rights reserved. |
AnnaBridge | 171:3a7713b1edbc | 11 | * Wicentric confidential and proprietary. |
AnnaBridge | 171:3a7713b1edbc | 12 | * |
AnnaBridge | 171:3a7713b1edbc | 13 | * IMPORTANT. Your use of this file is governed by a Software License Agreement |
AnnaBridge | 171:3a7713b1edbc | 14 | * ("Agreement") that must be accepted in order to download or otherwise receive a |
AnnaBridge | 171:3a7713b1edbc | 15 | * copy of this file. You may not use or copy this file for any purpose other than |
AnnaBridge | 171:3a7713b1edbc | 16 | * as described in the Agreement. If you do not agree to all of the terms of the |
AnnaBridge | 171:3a7713b1edbc | 17 | * Agreement do not use this file and delete all copies in your possession or control; |
AnnaBridge | 171:3a7713b1edbc | 18 | * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior |
AnnaBridge | 171:3a7713b1edbc | 19 | * to any use, copying or further distribution of this software. |
AnnaBridge | 171:3a7713b1edbc | 20 | */ |
AnnaBridge | 171:3a7713b1edbc | 21 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 22 | #ifndef WSF_BUF_H |
AnnaBridge | 171:3a7713b1edbc | 23 | #define WSF_BUF_H |
AnnaBridge | 171:3a7713b1edbc | 24 | |
AnnaBridge | 171:3a7713b1edbc | 25 | #ifdef __cplusplus |
AnnaBridge | 171:3a7713b1edbc | 26 | extern "C" { |
AnnaBridge | 171:3a7713b1edbc | 27 | #endif |
AnnaBridge | 171:3a7713b1edbc | 28 | |
AnnaBridge | 171:3a7713b1edbc | 29 | /************************************************************************************************** |
AnnaBridge | 171:3a7713b1edbc | 30 | Macros |
AnnaBridge | 171:3a7713b1edbc | 31 | **************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 32 | |
AnnaBridge | 171:3a7713b1edbc | 33 | /*! Length of the buffer statistics array */ |
AnnaBridge | 171:3a7713b1edbc | 34 | #define WSF_BUF_STATS_MAX_LEN 128 |
AnnaBridge | 171:3a7713b1edbc | 35 | |
AnnaBridge | 171:3a7713b1edbc | 36 | /************************************************************************************************** |
AnnaBridge | 171:3a7713b1edbc | 37 | Data Types |
AnnaBridge | 171:3a7713b1edbc | 38 | **************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 39 | |
AnnaBridge | 171:3a7713b1edbc | 40 | /*! Buffer pool descriptor structure */ |
AnnaBridge | 171:3a7713b1edbc | 41 | typedef struct |
AnnaBridge | 171:3a7713b1edbc | 42 | { |
AnnaBridge | 171:3a7713b1edbc | 43 | uint16_t len; /*! length of buffers in pool */ |
AnnaBridge | 171:3a7713b1edbc | 44 | uint8_t num; /*! number of buffers in pool */ |
AnnaBridge | 171:3a7713b1edbc | 45 | } wsfBufPoolDesc_t; |
AnnaBridge | 171:3a7713b1edbc | 46 | |
AnnaBridge | 171:3a7713b1edbc | 47 | /*! Pool statistics */ |
AnnaBridge | 171:3a7713b1edbc | 48 | typedef struct |
AnnaBridge | 171:3a7713b1edbc | 49 | { |
AnnaBridge | 171:3a7713b1edbc | 50 | uint16_t bufSize; /*!< Pool buffer size. */ |
AnnaBridge | 171:3a7713b1edbc | 51 | uint8_t numBuf; /*!< Total number of buffers. */ |
AnnaBridge | 171:3a7713b1edbc | 52 | uint8_t numAlloc; /*!< Number of outstanding allocations. */ |
AnnaBridge | 171:3a7713b1edbc | 53 | uint8_t maxAlloc; /*!< High allocation watermark. */ |
AnnaBridge | 171:3a7713b1edbc | 54 | } WsfBufPoolStat_t; |
AnnaBridge | 171:3a7713b1edbc | 55 | |
AnnaBridge | 171:3a7713b1edbc | 56 | |
AnnaBridge | 171:3a7713b1edbc | 57 | /************************************************************************************************** |
AnnaBridge | 171:3a7713b1edbc | 58 | Function Declarations |
AnnaBridge | 171:3a7713b1edbc | 59 | **************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 60 | |
AnnaBridge | 171:3a7713b1edbc | 61 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 62 | /*! |
AnnaBridge | 171:3a7713b1edbc | 63 | * \fn WsfBufInit |
AnnaBridge | 171:3a7713b1edbc | 64 | * |
AnnaBridge | 171:3a7713b1edbc | 65 | * \brief Initialize the buffer pool service. This function should only be called once |
AnnaBridge | 171:3a7713b1edbc | 66 | * upon system initialization. |
AnnaBridge | 171:3a7713b1edbc | 67 | * |
AnnaBridge | 171:3a7713b1edbc | 68 | * \param bufMemLen Length in bytes of memory pointed to by pBufMem. |
AnnaBridge | 171:3a7713b1edbc | 69 | * \param pBufMem Memory in which to store the pools used by the buffer pool service. |
AnnaBridge | 171:3a7713b1edbc | 70 | * \param numPools Number of buffer pools. |
AnnaBridge | 171:3a7713b1edbc | 71 | * \param pDesc Array of buffer pool descriptors, one for each pool. |
AnnaBridge | 171:3a7713b1edbc | 72 | * |
AnnaBridge | 171:3a7713b1edbc | 73 | * \return Amount of pBufMem used or 0 for failures. |
AnnaBridge | 171:3a7713b1edbc | 74 | */ |
AnnaBridge | 171:3a7713b1edbc | 75 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 76 | uint16_t WsfBufInit(uint16_t bufMemLen, uint8_t *pBufMem, uint8_t numPools, wsfBufPoolDesc_t *pDesc); |
AnnaBridge | 171:3a7713b1edbc | 77 | |
AnnaBridge | 171:3a7713b1edbc | 78 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 79 | /*! |
AnnaBridge | 171:3a7713b1edbc | 80 | * \fn WsfBufAlloc |
AnnaBridge | 171:3a7713b1edbc | 81 | * |
AnnaBridge | 171:3a7713b1edbc | 82 | * \brief Allocate a buffer. |
AnnaBridge | 171:3a7713b1edbc | 83 | * |
AnnaBridge | 171:3a7713b1edbc | 84 | * \param len Length of buffer to allocate. |
AnnaBridge | 171:3a7713b1edbc | 85 | * |
AnnaBridge | 171:3a7713b1edbc | 86 | * \return Pointer to allocated buffer or NULL if allocation fails. |
AnnaBridge | 171:3a7713b1edbc | 87 | */ |
AnnaBridge | 171:3a7713b1edbc | 88 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 89 | void *WsfBufAlloc(uint16_t len); |
AnnaBridge | 171:3a7713b1edbc | 90 | |
AnnaBridge | 171:3a7713b1edbc | 91 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 92 | /*! |
AnnaBridge | 171:3a7713b1edbc | 93 | * \fn WsfBufFree |
AnnaBridge | 171:3a7713b1edbc | 94 | * |
AnnaBridge | 171:3a7713b1edbc | 95 | * \brief Free a buffer. |
AnnaBridge | 171:3a7713b1edbc | 96 | * |
AnnaBridge | 171:3a7713b1edbc | 97 | * \param pBuf Buffer to free. |
AnnaBridge | 171:3a7713b1edbc | 98 | * |
AnnaBridge | 171:3a7713b1edbc | 99 | * \return None. |
AnnaBridge | 171:3a7713b1edbc | 100 | */ |
AnnaBridge | 171:3a7713b1edbc | 101 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 102 | void WsfBufFree(void *pBuf); |
AnnaBridge | 171:3a7713b1edbc | 103 | |
AnnaBridge | 171:3a7713b1edbc | 104 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 105 | /*! |
AnnaBridge | 171:3a7713b1edbc | 106 | * \fn WsfBufGetMaxAlloc |
AnnaBridge | 171:3a7713b1edbc | 107 | * |
AnnaBridge | 171:3a7713b1edbc | 108 | * \brief Diagnostic function to get maximum allocated buffers from a pool. |
AnnaBridge | 171:3a7713b1edbc | 109 | * |
AnnaBridge | 171:3a7713b1edbc | 110 | * \param pool Buffer pool number. |
AnnaBridge | 171:3a7713b1edbc | 111 | * |
AnnaBridge | 171:3a7713b1edbc | 112 | * \return Number of allocated buffers. |
AnnaBridge | 171:3a7713b1edbc | 113 | */ |
AnnaBridge | 171:3a7713b1edbc | 114 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 115 | uint8_t WsfBufGetMaxAlloc(uint8_t pool); |
AnnaBridge | 171:3a7713b1edbc | 116 | |
AnnaBridge | 171:3a7713b1edbc | 117 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 118 | /*! |
AnnaBridge | 171:3a7713b1edbc | 119 | * \fn WsfBufGetNumAlloc |
AnnaBridge | 171:3a7713b1edbc | 120 | * |
AnnaBridge | 171:3a7713b1edbc | 121 | * \brief Diagnostic function to get the number of currently allocated buffers in a pool. |
AnnaBridge | 171:3a7713b1edbc | 122 | * |
AnnaBridge | 171:3a7713b1edbc | 123 | * \param pool Buffer pool number. |
AnnaBridge | 171:3a7713b1edbc | 124 | * |
AnnaBridge | 171:3a7713b1edbc | 125 | * \return Number of allocated buffers. |
AnnaBridge | 171:3a7713b1edbc | 126 | */ |
AnnaBridge | 171:3a7713b1edbc | 127 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 128 | uint8_t WsfBufGetNumAlloc(uint8_t pool); |
AnnaBridge | 171:3a7713b1edbc | 129 | |
AnnaBridge | 171:3a7713b1edbc | 130 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 131 | /*! |
AnnaBridge | 171:3a7713b1edbc | 132 | * \fn WsfBufGetAllocStats |
AnnaBridge | 171:3a7713b1edbc | 133 | * |
AnnaBridge | 171:3a7713b1edbc | 134 | * \brief Diagnostic function to get the buffer allocation statistics. |
AnnaBridge | 171:3a7713b1edbc | 135 | * |
AnnaBridge | 171:3a7713b1edbc | 136 | * \return Buffer allocation statistics array. |
AnnaBridge | 171:3a7713b1edbc | 137 | */ |
AnnaBridge | 171:3a7713b1edbc | 138 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 139 | uint8_t *WsfBufGetAllocStats(void); |
AnnaBridge | 171:3a7713b1edbc | 140 | |
AnnaBridge | 171:3a7713b1edbc | 141 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 142 | /*! |
AnnaBridge | 171:3a7713b1edbc | 143 | * \fn WsfBufGetNumPool |
AnnaBridge | 171:3a7713b1edbc | 144 | * |
AnnaBridge | 171:3a7713b1edbc | 145 | * \brief Get number of pools. |
AnnaBridge | 171:3a7713b1edbc | 146 | * |
AnnaBridge | 171:3a7713b1edbc | 147 | * \return Number of pools. |
AnnaBridge | 171:3a7713b1edbc | 148 | */ |
AnnaBridge | 171:3a7713b1edbc | 149 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 150 | uint8_t WsfBufGetNumPool(void); |
AnnaBridge | 171:3a7713b1edbc | 151 | |
AnnaBridge | 171:3a7713b1edbc | 152 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 153 | /*! |
AnnaBridge | 171:3a7713b1edbc | 154 | * \fn WsfBufGetPoolStats |
AnnaBridge | 171:3a7713b1edbc | 155 | * |
AnnaBridge | 171:3a7713b1edbc | 156 | * \brief Get statistics for each pool. |
AnnaBridge | 171:3a7713b1edbc | 157 | * |
AnnaBridge | 171:3a7713b1edbc | 158 | * \param pStat Buffer to store the statistics. |
AnnaBridge | 171:3a7713b1edbc | 159 | * \param numPool Number of pool elements. |
AnnaBridge | 171:3a7713b1edbc | 160 | * |
AnnaBridge | 171:3a7713b1edbc | 161 | * \return Pool statistics. |
AnnaBridge | 171:3a7713b1edbc | 162 | */ |
AnnaBridge | 171:3a7713b1edbc | 163 | /*************************************************************************************************/ |
AnnaBridge | 171:3a7713b1edbc | 164 | void WsfBufGetPoolStats(WsfBufPoolStat_t *pStat, uint8_t numPool); |
AnnaBridge | 171:3a7713b1edbc | 165 | |
AnnaBridge | 171:3a7713b1edbc | 166 | |
AnnaBridge | 171:3a7713b1edbc | 167 | #ifdef __cplusplus |
AnnaBridge | 171:3a7713b1edbc | 168 | }; |
AnnaBridge | 171:3a7713b1edbc | 169 | #endif |
AnnaBridge | 171:3a7713b1edbc | 170 | |
AnnaBridge | 171:3a7713b1edbc | 171 | #endif /* WSF_BUF_H */ |