tkernel_2/include/sys/imalloc.h | bare source | permlink (0.02 seconds) |
1: /* 2: *---------------------------------------------------------------------- 3: * T-Kernel 2.0 Software Package 4: * 5: * Copyright 2011 by Ken Sakamura. 6: * This software is distributed under the latest version of T-License 2.x. 7: *---------------------------------------------------------------------- 8: * 9: * Released by T-Engine Forum(http://www.t-engine.org/) at 2011/05/17. 10: * Modified by TRON Forum(http://www.tron.org/) at 2015/06/01. 11: * 12: *---------------------------------------------------------------------- 13: */ 14: 15: /* 16: * @(#)imalloc.h (sys) 17: * 18: * Kernel memory allocation 19: * 20: * A function for allocating memory used in parts of T-Kernel. 21: * Not for general use. 22: */ 23: 24: #ifndef __SYS_IMALLOC_H__ 25: #define __SYS_IMALLOC_H__ 26: 27: #include <basic.h> 28: #include <tk/typedef.h> 29: #include <tk/sysmgr.h> 30: 31: #ifdef __cplusplus 32: extern "C" { 33: #endif 34: 35: /* 36: * Allocates resident memory which has the lowest protection 37: * level (TSCVLimit) in which level where a T-Kernel system call 38: * can be issued. 39: */ 40: IMPORT void* Imalloc( size_t size ); 41: IMPORT void* Icalloc( size_t nmemb, size_t size ); 42: IMPORT void Ifree( void *ptr ); 43: 44: /* 45: * Allocates memory with the attributes specified in 'attr'. 46: * attr = TA_RNGn | TA_NORESIDENT 47: */ 48: IMPORT void* IAmalloc( size_t size, UINT attr ); 49: IMPORT void* IAcalloc( size_t nmemb, size_t size, UINT attr ); 50: IMPORT void IAfree( void *ptr, UINT attr ); 51: 52: /* 53: * In all cases, malloc and calloc cannot be called while interrupt or 54: * dispatch are disabled. 55: * Only free can always be called while interrupt or dispatch are 56: * disabled; however memory release may not complete. For this reason, 57: * it is preferable to issue the call when interrupt and dispatch are 58: * both enabled. 59: * If release has not completed, the area is allocated in accordance 60: * with the subsequent 61: * malloc and calloc. 62: */ 63: 64: /* ------------------------------------------------------------------------ */ 65: 66: /* 67: * System memory management in block units 68: */ 69: IMPORT void* GetSysMemBlk( INT nblk, UINT attr ); 70: IMPORT ER RelSysMemBlk( CONST void *addr ); 71: IMPORT ER RefSysMemInfo( T_RSMB *rsmb ); 72: 73: #ifdef __cplusplus 74: } 75: #endif 76: #endif /* __SYS_IMALLOC_H__ */