Creates a memory pool and returns a handle to it.
MPOOL mpool_create(
void * base,
DWORD pool_size,
DWORD blk_size,
DWORD flags,
char *name
);
Parameters
base
- Valid values include:
NULL |
(Dynamic pool) Allocates pages as needed from the system memory pool. |
non-NULL |
(Static pool) Points to a buffer of at least one page in size (4K). This buffer should not be on the stack. |
These pools are respectively referred to as dynamic and static pools.
pool_size
- The upper limit of a pool:
0 (zero) |
The pool can grow to the limit of process memory. |
n |
The maximum pool size. |
Pool size may not be greater than LONG_MAX.
blk_size
- The basic allocation unit size when more memory is required. This value is expressed as a multiple of the system page size.
2
(two) is a very efficient value.
flags
- Valid values include:
MPOOL_NOLOCK |
Do not employ a lock for mutual exclusion. |
MPOOL_BEST_FIT |
Use the best fit for allocation. |
MPOOL_FIRST_FIT |
Use the first fit for allocation. |
MPOOL_ZAP |
Fill the buffers with 0 when freeing. |
MPOOL_FILL |
Fill the buffers with pattern "fill_char" when allocating; see MPOOL_CONFIG. |
-
If both MPOOL_BEST_FIT and MPOOL_FIRST_FIT are specified, MPOOL_BEST_FIT takes precedence.
name
- (Optional) A string that names the pool. If
name
is omitted, a default name is created of the form MPOOL-XXXXXXXX
where XXXXXXXX
represents in hexidecimal the value returned from mpool_create.
Remarks
Static pools may be created in memory defined by the process's data area, its stdlib heap, or memory returned from AllocateRtMemory and MapRtPhysicalMemory.
Return Values
- A handle to a memory pool.
- Success.
- NULL
- Failure. The function sets errno to one of these values:
E2BIG |
The value of pool_size is too large. |
EEXIST |
The pool is deleted. |
EINVAL |
A parameter is invalid. |
ENOSPC |
Out of virtual memory. |
ENOMEM |
Out of physical memory. |
Requirements
Versions |
Defined in |
Include |
Link to |
INtime 4.0 |
intime/rt/include/mpool.h |
mpool.h |
clib.lib |
See Also