Files
vxWorks/h/wrn/ipsec/ipsec_memory_routines.h
2025-08-20 18:25:46 +08:00

99 lines
2.8 KiB
C

/* ipsec_memory_routines.h - Memory routines for IPsec */
/* Copyright 2004 Wind River Systems, Inc. */
/*
modification history
--------------------
01d,30nov04,jfb Beautified again
01c,29nov04,jfb Beautified
01b,28sep04,cdw Added configuration for IPsec memory pool. Added
documentation for IPsec memory pool configuration.
01a,17sep04,cdw created
*/
#ifndef __IPSEC_MEMORY_ROUTINES_H__
#define __IPSEC_MEMORY_ROUTINES_H__
#ifdef __cplusplus
extern "C"
{
#endif
#include <vxWorks.h>
/* Use the netbufLib memory pools to allocate small buffers. Using
* this feature requires tuning of the data clusters used by the
* memory pool. The following is recommended as a starting point, but
* additional tuning may be required:
*
* 64 byte clusters - IPSEC_NUM_64 1500
* 128 byte clusters - IPSEC_NUM_128 1500
* 256 byte clusters - IPSEC_NUM_256 50
* 512 byte clusters - IPSEC_NUM_512 50
* 1024 byte clusters - IPSEC_NUM_1024 25
* 2048 byte clusters - IPSEC_NUM_2048 10
*
* Use ipsecMemoryPoolShow() to observe remaining free clusters.
*/
#define IPSEC_MEMORY_USE_MEMORY_POOL
#ifdef IPSEC_MEMORY_USE_MEMORY_POOL
void ipsecMemoryPoolShow (void);
#define IPSEC_NUM_64 1500
#define IPSEC_NUM_128 1500
#define IPSEC_NUM_256 50
#define IPSEC_NUM_512 50
#define IPSEC_NUM_1024 25
#define IPSEC_NUM_2048 10
#endif
/* Enable IPsec memory usage statistics - Observe results with
* ipsec_memory_stats() */
#define IPSEC_MEMORY_STATISTICS
/* taskSuspend() on memory allocation in tNetTask context. Controlled
* at runtime by setting/clearing the global BOOL tNetTaskAllocationDebugging */
#undef IPSEC_MEMORY_NETTASK_ALLOC_DEBUGGING
/* taskSuspend() the calling task on memory allocation failure */
#undef IPSEC_MEMORY_SUSPEND_ON_FAILURE
/* Initialize all buffers to IPSEC_MEMORY_INITIALIZATION_FIELD after
* allocation and prior to freeing. This is meant as a debugging aid,
* it should normally be undefined for performance reasons. */
#undef IPSEC_MEMORY_INITIALIZE
#define IPSEC_MEMORY_INITIALIZATION_FIELD ((unsigned char)0xfd)
extern BOOL tNetTaskAllocationDebugging;
STATUS ipsecMemoryStats (void);
void *ipsecMemoryAllocate
(
UINT elemSize
);
void *ipsecMemoryCalloc
(
UINT elemNum,
UINT elemSize
);
void ipsecMemoryFree (
void *p_object);
/* IPSEC_MEMORY_ALLOCATED_MAGIC indicates that the buffer was
* allocated using the ipsecMemory allocation routines */
#define IPSEC_MEMORY_ALLOCATED_MAGIC 0xadfacade
typedef struct
{
UINT reserved; /* Set to IPSEC_MEMORY_ALLOCATED_MAGIC */
UINT bufferType; /* May indicate type of buffer (use is optional) */
UINT bufferLength; /* The allocated length of *buffer */
} IPSEC_MEMORY_NODE;
/* buffer types */
#define IPSEC_MEMORY_MBLK_ALLOCATED 0x80000000
#ifdef __cplusplus
}
#endif
#endif /* __IPSEC_MEMORY_ROUTINES_H__ */