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