Header
page.h
Prototype
unsigned page_initialize(void __BF *baseptr, unsigned pagesize);
Description
The page_initialize function creates a page heap for the block
of memory pointed to by baseptr which has a size of pagesize.
The page_initialize function converts the buffer at baseptr
to a page heap. __BF is defined to be __far for the 16-bit memory
models, and __near for the 32-bit memory models.
If you use page_initialize to create a page heap, you must use
page_functions to manage this heap.
Return Value
The size of the largest allocatable block in baseptr.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
page_calloc
page_malloc
page_free
Example
/* Example for page_initialize */
#include <stdio.h>
#include <stdlib. h>
#include <page. h>
#include <dos.h>
#include <io. h>
#define HEAPSIZE 0x4000
static char buffer[HEAPSIZE];
void main ()
{
unsigned maxsize, offset;
char __far *baseptr;
int __far *fp, i;
baseptr = MK_FP (getDS (), buffer);
maxsize = page_initialize (baseptr, HEAPSIZE);
printf (" The maximum allocateable size is
%04x bytes\n", maxsize);
if ((offset = page_malloc (baseptr, 0x800)) == 0)
{
printf (" Unable to allocate 0x800 bytes
with page_malloc ()\n");
exit (EXIT_FAILURE);
}
printf (" Allocated 0x800 bytes
successfully\n");
fp = page_toptr (baseptr, offset);
for (i = 0; i < 255; i++)
fp[i] = i;
printf (" fp[50] = %d\n", fp[50]);
if ((offset = page_realloc (baseptr, offset,
0x1000)) == 0)
{
printf (" Unable to reallocate 0x1000
bytes\n"); exit (EXIT_FAILURE);
}
printf (" Reallocated to 0x1000 bytes\n");
fp = page_toptr (baseptr, offset);
printf (" fp[50] = %d\n", fp[50]);
maxsize = page_maxfree(baseptr);
printf (" Maximum free block remaining is %04x
bytes \n", maxsize);
if (page_free (baseptr, offset) == -1)
{
printf (" Unable to free allocated
block\n");
exit (EXIT_FAILURE);
}
printf (" Page freed successfully\n");
}
Output
The maximum allocateable size is 3ff4 bytes
Allocated 0x800 bytes successfully
fp[50] = 50
Reallocated to 0x1000 bytes
fp[50] = 50
Maximum free block remaining is 27f0 bytes
Page freed successfully
page_malloc
Header
page.h
Prototype
unsigned page_malloc(void __BF *baseptr, unsigned size);
Description
The page_malloc function allocates a block of data from a page
heap. baseptr points to a page heap that was initialized by
page_initialize; size indicates the number of bytes to
allocate. __BF is defined to be __far for the 16-bit memory models,
and __near for the 32-bit memory models.
Return Value
The offset of the allocated data within baseptr. If the allocation
fails, 0 is returned.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
page_calloc
page_initialize
page_free
page_realloc
Example
See page_initialize
page_maxfree
Header
page.h
Prototype
unsigned page_maxfree(void __BF *baseptr);
Description
The page_maxfree function determines size of largest free block
in the page heap pointed to by baseptr. This heap must have
been initialized with page_initialize. __BF is defined to be
__far for the 16-bit memory models, and __near for the 32-bit
memory models.
Return Value
The size of the largest free block.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
page_initialize
page_free
Example
See page_initialize
page_realloc
Header
page.h
Prototype
unsigned page_realloc(void __BF *baseptr, unsigned p, unsigned nbytes);
Description
The page_realloc function reallocates (changes the size of) a
block of memory that was allocated by page_malloc or
page_calloc. __BF is defined to be __far for the 16-bit memory
models, and __near for the 32-bit memory models.
Return Value
The offset of the reallocated data block from baseptr. If the
reallocation fails, 0 is returned.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
page_calloc
page_malloc
page_initialize
page_free
Example
See page_initialize
page_size
Header
page.h
Prototype
unsigned page_size(void __far *baseptr, unsigned p);
Description
The page_size function returns the number of bytes allocated for
the block of memory at offset p that was allocated by
page_malloc, page_calloc, or page_realloc.
Return Value
The number of bytes in the block.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
page_calloc
page_malloc
page_initialize
page_free
page_realloc
Example
See page_initialize
page_toptr
Header
page.h
Prototype
void __BF * __near page_toptr(void __BF *baseptr, unsigned p);
Description
The page_toptr function converts a pointer to a page heap, and
an offset into it of p, into a void *pointer. baseptr is a pointer to
a heap that was initialized with page_initialize; p is an offset into the
heap. __BF is defined to be __far for the 16-bit memory models, and
__near for the 32-bit memory models.
Return Value
A far pointer to the position in the page corresponding to offset p.
Compatibility
DOS Windows 3.x Phar Lap DOSX Win32
See Also
page_initialize
Example
See page_initialize