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.

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?

UserRevisionLine numberNew 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 */