Me@178: /* Me@178: * Copyright 2009 OpenSourceCodeStewardshipFoundation.org Me@178: * Licensed under GNU General Public License version 2 Me@178: * Me@178: * Author: seanhalle@yahoo.com Me@178: * Me@178: * Created on November 14, 2009, 9:07 PM Me@178: */ Me@178: Me@178: #ifndef _VMALLOC_H Me@178: #define _VMALLOC_H Me@178: Me@178: #include Me@178: #include Me@178: #include "VMS_primitive_data_types.h" Me@178: Me@178: typedef struct _MallocProlog MallocProlog; Me@178: Me@178: struct _MallocProlog Me@178: { Me@178: MallocProlog *nextChunkInFreeList; Me@178: MallocProlog *prevChunkInFreeList; Me@178: MallocProlog *nextHigherInMem; Me@178: MallocProlog *nextLowerInMem; Me@178: }; Me@178: //MallocProlog Me@178: Me@178: typedef struct Me@178: { Me@178: MallocProlog *firstChunkInFreeList; Me@178: int32 numInList; //TODO not used Me@178: } Me@178: FreeListHead; Me@178: Me@178: void * Me@200: VMS_int__malloc( size_t sizeRequested ); Me@178: Me@178: void * Me@200: VMS_int__malloc_aligned( size_t sizeRequested ); Me@178: Me@178: void Me@200: VMS_int__free( void *ptrToFree ); Me@200: Me@200: #define VMS_PI__malloc VMS_int__malloc Me@200: #define VMS_PI__malloc_aligned VMS_int__malloc_aligned Me@200: #define VMS_PI__free VMS_int__free Me@200: /* For now, the PI is protected by master lock, so int malloc fine Me@200: void * Me@200: VMS_PI__malloc( size_t sizeRequested ); Me@200: Me@200: void * Me@200: VMS_PI__malloc_aligned( size_t sizeRequested ); Me@200: Me@200: void Me@200: VMS_PI__free( void *ptrToFree ); Me@200: */ Me@200: Me@200: //TODO: protect WL malloc from concurrency!! shared freelist can be corrupted Me@200: #define VMS_WL__malloc VMS_int__malloc Me@200: #define VMS_WL__malloc_aligned VMS_int__malloc_aligned Me@200: #define VMS_WL__free VMS_int__free Me@200: /* Me@200: void * Me@200: VMS_WL__malloc( size_t sizeRequested ); Me@200: Me@200: void * Me@200: VMS_WL__malloc_aligned( size_t sizeRequested ); Me@200: Me@200: void Me@200: VMS_WL__free( void *ptrToFree ); Me@200: */ Me@178: Me@178: /*Allocates memory from the external system -- higher overhead Me@178: */ Me@178: void * Me@178: VMS__malloc_in_ext( size_t sizeRequested ); Me@178: Me@178: /*Frees memory that was allocated in the external system -- higher overhead Me@178: */ Me@178: void Me@178: VMS__free_in_ext( void *ptrToFree ); Me@178: Me@178: Me@178: MallocProlog * Me@178: VMS_ext__create_free_list(); Me@178: Me@178: void Me@178: VMS_ext__free_free_list( MallocProlog *freeListHead ); Me@178: Me@65: #endif