mirror of
https://github.com/dimoniche/solarium.vlad.git
synced 2026-01-30 13:03:30 +03:00
229 lines
11 KiB
C
229 lines
11 KiB
C
/*
|
||
*********************************************************************************************************
|
||
* uC/TCP-IP
|
||
* The Embedded TCP/IP Suite
|
||
*
|
||
* (c) Copyright 2003-2007; Micrium, Inc.; Weston, FL
|
||
*
|
||
* All rights reserved. Protected by international copyright laws.
|
||
*
|
||
* uC/TCP-IP is provided in source form for FREE evaluation, for educational
|
||
* use or peaceful research. If you plan on using uC/TCP-IP in a commercial
|
||
* product you need to contact Micrium to properly license its use in your
|
||
* product. We provide ALL the source code for your convenience and to help
|
||
* you experience uC/TCP-IP. The fact that the source code is provided does
|
||
* NOT mean that you can use it without paying a licensing fee.
|
||
*
|
||
* Knowledge of the source code may NOT be used to develop a similar product.
|
||
*
|
||
* Please help us continue to provide the Embedded community with the finest
|
||
* software available. Your honesty is greatly appreciated.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
*
|
||
* NETWORK STATISTICS MANAGEMENT
|
||
*
|
||
* Filename : net_stat.h
|
||
* Version : V1.89
|
||
* Programmer(s) : ITJ
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* EXTERNS
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#ifdef NET_STAT_MODULE
|
||
#define NET_STAT_EXT
|
||
#else
|
||
#define NET_STAT_EXT extern
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* DEFINES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* NETWORK STATISTICS POOL TYPE DEFINES
|
||
*
|
||
* Note(s) : (1) NET_STAT_TYPE_??? #define values specifically chosen as ASCII representations of the network
|
||
* statistics pool types. Memory displays of statistics pools will display the statistics pool
|
||
* TYPE with the chosen ASCII name.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/* ---------------- NET STAT POOL TYPES --------------- */
|
||
#if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG)
|
||
#define NET_STAT_TYPE_NONE 0x4E4F4E45 /* "NONE" in ASCII. */
|
||
#define NET_STAT_TYPE_POOL 0x504F4F4C /* "POOL" in ASCII. */
|
||
|
||
#else
|
||
|
||
#if (CPU_CFG_DATA_SIZE == CPU_WORD_SIZE_32)
|
||
#define NET_STAT_TYPE_NONE 0x454E4F4E /* "NONE" in ASCII. */
|
||
#define NET_STAT_TYPE_POOL 0x4C4F4F50 /* "POOL" in ASCII. */
|
||
|
||
#elif (CPU_CFG_DATA_SIZE == CPU_WORD_SIZE_16)
|
||
#define NET_STAT_TYPE_NONE 0x4F4E454E /* "NONE" in ASCII. */
|
||
#define NET_STAT_TYPE_POOL 0x4F504C4F /* "POOL" in ASCII. */
|
||
|
||
#else /* Dflt CPU_WORD_SIZE_08. */
|
||
#define NET_STAT_TYPE_NONE 0x4E4F4E45 /* "NONE" in ASCII. */
|
||
#define NET_STAT_TYPE_POOL 0x504F4F4C /* "POOL" in ASCII. */
|
||
|
||
#endif
|
||
#endif
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* DATA TYPES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* NETWORK STATISTICS POOL QUANTITY DATA TYPE
|
||
*
|
||
* Note(s) : (1) Statistics pool quantity data type MUST be configured with an appropriate-sized network
|
||
* data type large enough to perform calculations on the following data types :
|
||
*
|
||
* (a) NET_BUF_QTY
|
||
* (b) NET_TMR_QTY
|
||
* (c) NET_CONN_QTY
|
||
* (d) NET_CONN_LIST_QTY
|
||
* (e) NET_ARP_CACHE_QTY
|
||
* (f) NET_ICMP_SRC_QUENCH_QTY
|
||
* (g) NET_TCP_CONN_QTY
|
||
* (h) NET_SOCK_QTY
|
||
*
|
||
* (2) NET_STAT_POOL_NBR_MAX SHOULD be globally #define'd AFTER 'NET_STAT_POOL_QTY' data type
|
||
* declared.
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
typedef CPU_INT16U NET_STAT_POOL_QTY; /* Defines max qty of stat pool entries to support. */
|
||
|
||
#define NET_STAT_POOL_NBR_MAX DEF_INT_16U_MAX_VAL /* See Note #2. */
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* NETWORK STATISTICS POOL DATA TYPE
|
||
*
|
||
* Note(s) : (1) Forced word-alignment at start of statistics pool NOT required since first data member
|
||
* 'Type' is declared as 'CPU_INT32U'.
|
||
*
|
||
* (2) Pool statistic entries MUST ALWAYS be accessed in CRITICAL sections.
|
||
*
|
||
* (3) (a) 'EntriesInit'/'EntriesTot' indicate the initial/current total number of entries in the
|
||
* statistics pool.
|
||
*
|
||
* (b) 'EntriesAvail'/'EntriesUsed' track the current number of entries available/used for the
|
||
* statistics pool.
|
||
*
|
||
* (c) 'EntriesLostCur'/'EntriesLostTot' track the current/total number of unrecoverable invalid/
|
||
* corrupted entries lost from the statistics pool. Lost entries MUST be determined by the
|
||
* owner of the statistics pool.
|
||
*
|
||
* (d) 'EntriesAllocatedCtr'/'EntriesDeallocatedCtr' tracks the current number of allocated/
|
||
* deallocated entries in the statistics pool.
|
||
*
|
||
* (4) Assuming statistics pool are always accessed in CRITICAL sections, the following equations
|
||
* for statistics pools are true at all times :
|
||
*
|
||
* EntriesInit = EntriesTot + EntriesLostTot
|
||
*
|
||
* EntriesTot = EntriesAvail + EntriesUsed
|
||
*
|
||
* EntriesUsed = EntriesAllocatedCtr - EntriesDeallocatedCtr - EntriesLostCur
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
/* ------------------- NET POOL STAT ------------------ */
|
||
typedef struct net_stat_pool {
|
||
NET_TYPE Type; /* Type cfg'd @ init : NET_STAT_TYPE_POOL. */
|
||
|
||
NET_STAT_POOL_QTY EntriesInit; /* Init nbr entries in pool. */
|
||
NET_STAT_POOL_QTY EntriesTot; /* Tot nbr entries in pool. */
|
||
NET_STAT_POOL_QTY EntriesAvail; /* Avail nbr entries in pool. */
|
||
NET_STAT_POOL_QTY EntriesUsed; /* Used nbr entries from pool. */
|
||
NET_STAT_POOL_QTY EntriesUsedMax; /* Max nbr entries used from pool. */
|
||
NET_STAT_POOL_QTY EntriesLostCur; /* Cur nbr entries lost from pool. */
|
||
NET_STAT_POOL_QTY EntriesLostTot; /* Tot nbr entries lost from pool. */
|
||
|
||
CPU_INT32U EntriesAllocatedCtr; /* Total nbr entries successfully allocated. */
|
||
CPU_INT32U EntriesDeallocatedCtr; /* Total nbr entries successfully deallocated. */
|
||
} NET_STAT_POOL;
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* GLOBAL VARIABLES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
#if (NET_CTR_CFG_ERR_EN == DEF_ENABLED) /* ------------------- NET STAT ERRS ------------------ */
|
||
#if (NET_ERR_CFG_ARG_CHK_DBG_EN == DEF_ENABLED)
|
||
NET_STAT_EXT NET_CTR NetStat_ErrNullPtrCtr; /* Nbr null net stat ptr accesses. */
|
||
NET_STAT_EXT NET_CTR NetStat_ErrInvalidTypeCtr; /* Nbr net stat invalid type accesses. */
|
||
#endif
|
||
#endif
|
||
|
||
|
||
/*
|
||
*********************************************************************************************************
|
||
* FUNCTION PROTOTYPES
|
||
*********************************************************************************************************
|
||
*/
|
||
|
||
void NetStat_Init (void);
|
||
|
||
|
||
/* --------- STAT POOL API FNCTS ---------- */
|
||
void NetStat_PoolInit (NET_STAT_POOL *pstat_pool,
|
||
NET_STAT_POOL_QTY nbr_avail,
|
||
NET_ERR *perr);
|
||
|
||
void NetStat_PoolClr (NET_STAT_POOL *pstat_pool,
|
||
NET_ERR *perr);
|
||
|
||
|
||
void NetStat_PoolReset (NET_STAT_POOL *pstat_pool,
|
||
NET_ERR *perr);
|
||
|
||
void NetStat_PoolResetUsedMax(NET_STAT_POOL *pstat_pool,
|
||
NET_ERR *perr);
|
||
|
||
|
||
void NetStat_PoolEntryUsedInc(NET_STAT_POOL *pstat_pool,
|
||
NET_ERR *perr);
|
||
|
||
void NetStat_PoolEntryUsedDec(NET_STAT_POOL *pstat_pool,
|
||
NET_ERR *perr);
|
||
|
||
void NetStat_PoolEntryLostInc(NET_STAT_POOL *pstat_pool,
|
||
NET_ERR *perr);
|
||
|
||
|
||
/*$PAGE*/
|
||
/*
|
||
*********************************************************************************************************
|
||
* CONFIGURATION ERRORS
|
||
*********************************************************************************************************
|
||
*/
|
||
|