Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > VMS_impls > VMS__MC_shared_impl
annotate vmalloc.h @ 203:caa8512f7bdc
changed __brch__ contents for update naming scheme
| author | Me@portablequad |
|---|---|
| date | Mon, 13 Feb 2012 09:23:27 -0800 |
| parents | c1784868dcea |
| children |
| rev | line source |
|---|---|
| Me@178 | 1 /* |
| Me@178 | 2 * Copyright 2009 OpenSourceCodeStewardshipFoundation.org |
| Me@178 | 3 * Licensed under GNU General Public License version 2 |
| Me@178 | 4 * |
| Me@178 | 5 * Author: seanhalle@yahoo.com |
| Me@178 | 6 * |
| Me@178 | 7 * Created on November 14, 2009, 9:07 PM |
| Me@178 | 8 */ |
| Me@178 | 9 |
| Me@178 | 10 #ifndef _VMALLOC_H |
| Me@178 | 11 #define _VMALLOC_H |
| Me@178 | 12 |
| Me@178 | 13 #include <malloc.h> |
| Me@178 | 14 #include <inttypes.h> |
| Me@178 | 15 #include "VMS_primitive_data_types.h" |
| Me@178 | 16 |
| Me@178 | 17 typedef struct _MallocProlog MallocProlog; |
| Me@178 | 18 |
| Me@178 | 19 struct _MallocProlog |
| Me@178 | 20 { |
| Me@178 | 21 MallocProlog *nextChunkInFreeList; |
| Me@178 | 22 MallocProlog *prevChunkInFreeList; |
| Me@178 | 23 MallocProlog *nextHigherInMem; |
| Me@178 | 24 MallocProlog *nextLowerInMem; |
| Me@178 | 25 }; |
| Me@178 | 26 //MallocProlog |
| Me@178 | 27 |
| Me@178 | 28 typedef struct |
| Me@178 | 29 { |
| Me@178 | 30 MallocProlog *firstChunkInFreeList; |
| Me@178 | 31 int32 numInList; //TODO not used |
| Me@178 | 32 } |
| Me@178 | 33 FreeListHead; |
| Me@178 | 34 |
| Me@178 | 35 void * |
| Me@200 | 36 VMS_int__malloc( size_t sizeRequested ); |
| Me@178 | 37 |
| Me@178 | 38 void * |
| Me@200 | 39 VMS_int__malloc_aligned( size_t sizeRequested ); |
| Me@178 | 40 |
| Me@178 | 41 void |
| Me@200 | 42 VMS_int__free( void *ptrToFree ); |
| Me@200 | 43 |
| Me@200 | 44 #define VMS_PI__malloc VMS_int__malloc |
| Me@200 | 45 #define VMS_PI__malloc_aligned VMS_int__malloc_aligned |
| Me@200 | 46 #define VMS_PI__free VMS_int__free |
| Me@200 | 47 /* For now, the PI is protected by master lock, so int malloc fine |
| Me@200 | 48 void * |
| Me@200 | 49 VMS_PI__malloc( size_t sizeRequested ); |
| Me@200 | 50 |
| Me@200 | 51 void * |
| Me@200 | 52 VMS_PI__malloc_aligned( size_t sizeRequested ); |
| Me@200 | 53 |
| Me@200 | 54 void |
| Me@200 | 55 VMS_PI__free( void *ptrToFree ); |
| Me@200 | 56 */ |
| Me@200 | 57 |
| Me@200 | 58 //TODO: protect WL malloc from concurrency!! shared freelist can be corrupted |
| Me@200 | 59 #define VMS_WL__malloc VMS_int__malloc |
| Me@200 | 60 #define VMS_WL__malloc_aligned VMS_int__malloc_aligned |
| Me@200 | 61 #define VMS_WL__free VMS_int__free |
| Me@200 | 62 /* |
| Me@200 | 63 void * |
| Me@200 | 64 VMS_WL__malloc( size_t sizeRequested ); |
| Me@200 | 65 |
| Me@200 | 66 void * |
| Me@200 | 67 VMS_WL__malloc_aligned( size_t sizeRequested ); |
| Me@200 | 68 |
| Me@200 | 69 void |
| Me@200 | 70 VMS_WL__free( void *ptrToFree ); |
| Me@200 | 71 */ |
| Me@178 | 72 |
| Me@178 | 73 /*Allocates memory from the external system -- higher overhead |
| Me@178 | 74 */ |
| Me@178 | 75 void * |
| Me@178 | 76 VMS__malloc_in_ext( size_t sizeRequested ); |
| Me@178 | 77 |
| Me@178 | 78 /*Frees memory that was allocated in the external system -- higher overhead |
| Me@178 | 79 */ |
| Me@178 | 80 void |
| Me@178 | 81 VMS__free_in_ext( void *ptrToFree ); |
| Me@178 | 82 |
| Me@178 | 83 |
| Me@178 | 84 MallocProlog * |
| Me@178 | 85 VMS_ext__create_free_list(); |
| Me@178 | 86 |
| Me@178 | 87 void |
| Me@178 | 88 VMS_ext__free_free_list( MallocProlog *freeListHead ); |
| Me@178 | 89 |
| Me@65 | 90 #endif |
