annotate vmalloc.h @ 208:eaf7e4c58c9e

Create common_ancestor brch -- all branches will be closed, then new ones created with this as the common ancestor of all branches -- it is incomplete! only code that is common to all HW and Feat and FeatDev branches is in here
author Some Random Person <seanhalle@yahoo.com>
date Wed, 22 Feb 2012 11:39:12 -0800
parents
children 0c83ea8adefc
rev   line source
seanhalle@208 1 /*
seanhalle@208 2 * Copyright 2009 OpenSourceCodeStewardshipFoundation.org
seanhalle@208 3 * Licensed under GNU General Public License version 2
seanhalle@208 4 *
seanhalle@208 5 * Author: seanhalle@yahoo.com
seanhalle@208 6 *
seanhalle@208 7 * Created on November 14, 2009, 9:07 PM
seanhalle@208 8 */
seanhalle@208 9
seanhalle@208 10 #ifndef _VMALLOC_H
seanhalle@208 11 #define _VMALLOC_H
seanhalle@208 12
seanhalle@208 13 #include <malloc.h>
seanhalle@208 14 #include <inttypes.h>
seanhalle@208 15 #include "VMS_primitive_data_types.h"
seanhalle@208 16
seanhalle@208 17 typedef struct _MallocProlog MallocProlog;
seanhalle@208 18
seanhalle@208 19 struct _MallocProlog
seanhalle@208 20 {
seanhalle@208 21 MallocProlog *nextChunkInFreeList;
seanhalle@208 22 MallocProlog *prevChunkInFreeList;
seanhalle@208 23 MallocProlog *nextHigherInMem;
seanhalle@208 24 MallocProlog *nextLowerInMem;
seanhalle@208 25 };
seanhalle@208 26 //MallocProlog
seanhalle@208 27
seanhalle@208 28 typedef struct
seanhalle@208 29 {
seanhalle@208 30 MallocProlog *firstChunkInFreeList;
seanhalle@208 31 int32 numInList; //TODO not used
seanhalle@208 32 }
seanhalle@208 33 FreeListHead;
seanhalle@208 34
seanhalle@208 35 void *
seanhalle@208 36 VMS_int__malloc( size_t sizeRequested );
seanhalle@208 37
seanhalle@208 38 void *
seanhalle@208 39 VMS_int__malloc_aligned( size_t sizeRequested );
seanhalle@208 40
seanhalle@208 41 void
seanhalle@208 42 VMS_int__free( void *ptrToFree );
seanhalle@208 43
seanhalle@208 44 #define VMS_PI__malloc VMS_int__malloc
seanhalle@208 45 #define VMS_PI__malloc_aligned VMS_int__malloc_aligned
seanhalle@208 46 #define VMS_PI__free VMS_int__free
seanhalle@208 47 /* For now, the PI is protected by master lock, so int malloc fine
seanhalle@208 48 void *
seanhalle@208 49 VMS_PI__malloc( size_t sizeRequested );
seanhalle@208 50
seanhalle@208 51 void *
seanhalle@208 52 VMS_PI__malloc_aligned( size_t sizeRequested );
seanhalle@208 53
seanhalle@208 54 void
seanhalle@208 55 VMS_PI__free( void *ptrToFree );
seanhalle@208 56 */
seanhalle@208 57
seanhalle@208 58 //TODO: protect WL malloc from concurrency!! shared freelist can be corrupted
seanhalle@208 59 #define VMS_WL__malloc VMS_int__malloc
seanhalle@208 60 #define VMS_WL__malloc_aligned VMS_int__malloc_aligned
seanhalle@208 61 #define VMS_WL__free VMS_int__free
seanhalle@208 62 /*
seanhalle@208 63 void *
seanhalle@208 64 VMS_WL__malloc( size_t sizeRequested );
seanhalle@208 65
seanhalle@208 66 void *
seanhalle@208 67 VMS_WL__malloc_aligned( size_t sizeRequested );
seanhalle@208 68
seanhalle@208 69 void
seanhalle@208 70 VMS_WL__free( void *ptrToFree );
seanhalle@208 71 */
seanhalle@208 72
seanhalle@208 73 /*Allocates memory from the external system -- higher overhead
seanhalle@208 74 */
seanhalle@208 75 void *
seanhalle@208 76 VMS__malloc_in_ext( size_t sizeRequested );
seanhalle@208 77
seanhalle@208 78 /*Frees memory that was allocated in the external system -- higher overhead
seanhalle@208 79 */
seanhalle@208 80 void
seanhalle@208 81 VMS__free_in_ext( void *ptrToFree );
seanhalle@208 82
seanhalle@208 83
seanhalle@208 84 MallocProlog *
seanhalle@208 85 VMS_ext__create_free_list();
seanhalle@208 86
seanhalle@208 87 void
seanhalle@208 88 VMS_ext__free_free_list( MallocProlog *freeListHead );
seanhalle@208 89
seanhalle@208 90 #endif