 |
Buffer Manager
|
The AMX Buffer Manager provides fast, efficient access to multiple pools of buffers, each buffer representing a fixed size block of memory. This form of memory management meets the requirements of most typical applications. It is best suited for real-time use when memory block availability must be predictable and the execution time penalties and memory fragmentation imposed by dynamic allocation schemes cannot be tolerated.
Application modules can request the Buffer Manager to get a buffer from a pool. When released, the buffer is automatically returned by the Buffer Manager to the buffer pool to which the buffer belongs. Buffer ownership can be increased so that more than one task can simultaneously own a shared buffer. Special facilities are provided to assure that if a buffer is owned by more than one task, it is only returned to its pool when the slowest owner finally releases it.
The Buffer Manager offers the advantage that speed of execution is not dependent on the number of buffer pools or the number of buffers in each pool. The number of buffers in a pool and the number of pools which can be supported is limited only by memory availability. However, for some processors which use memory segmentation, all buffers in one pool must reside in the same segment.
|
Buffer Manager |
| Function |
Service |
| cjbmcreate |
Create a buffer pool |
| cjbmdelete |
Delete a buffer pool |
| cjbmget |
Get a buffer from a specific buffer pool |
| cjbmfree |
Free a buffer |
| cjbmsize |
Get the size of a buffer |
| cjbmuse |
Add to a buffer's use count |
| cjbmstatus |
Get status of a buffer pool |
|
|