1*52a38012Sejakowatz /******************************************************************************* 2*52a38012Sejakowatz / 3*52a38012Sejakowatz / File: RealtimeAlloc.h 4*52a38012Sejakowatz / 5*52a38012Sejakowatz / Description: Allocation from separate "pools" of memory. Those pools 6*52a38012Sejakowatz / will be locked in RAM if realtime allocators are turned 7*52a38012Sejakowatz / on in the BMediaRoster, so don't waste this memory unless 8*52a38012Sejakowatz / it's needed. Also, the shared pool is a scarce resource, 9*52a38012Sejakowatz / so it's better if you create your own pool for your own 10*52a38012Sejakowatz / needs and leave the shared pool for BMediaNode instances 11*52a38012Sejakowatz / and the needs of the Media Kit. 12*52a38012Sejakowatz / 13*52a38012Sejakowatz / Copyright 1998-99, Be Incorporated, All Rights Reserved 14*52a38012Sejakowatz / 15*52a38012Sejakowatz *******************************************************************************/ 16*52a38012Sejakowatz 17*52a38012Sejakowatz #if !defined(_REALTIME_ALLOC_H) 18*52a38012Sejakowatz #define _REALTIME_ALLOC_H 19*52a38012Sejakowatz 20*52a38012Sejakowatz #include <SupportDefs.h> 21*52a38012Sejakowatz 22*52a38012Sejakowatz #if defined(__cplusplus) 23*52a38012Sejakowatz extern "C" { 24*52a38012Sejakowatz #endif 25*52a38012Sejakowatz 26*52a38012Sejakowatz typedef struct rtm_pool rtm_pool; 27*52a38012Sejakowatz 28*52a38012Sejakowatz /* If out_pool is NULL, the default pool will be created if it isn't already. */ 29*52a38012Sejakowatz /* If the default pool is already created, it will return EALREADY. */ 30*52a38012Sejakowatz #if defined(__cplusplus) 31*52a38012Sejakowatz _IMPEXP_MEDIA status_t rtm_create_pool(rtm_pool ** out_pool, size_t total_size, const char * name=NULL); 32*52a38012Sejakowatz #else 33*52a38012Sejakowatz _IMPEXP_MEDIA status_t rtm_create_pool(rtm_pool ** out_pool, size_t total_size, const char * name); 34*52a38012Sejakowatz #endif 35*52a38012Sejakowatz _IMPEXP_MEDIA status_t rtm_delete_pool(rtm_pool * pool); 36*52a38012Sejakowatz /* If NULL is passed for pool, the default pool is used (if created). */ 37*52a38012Sejakowatz _IMPEXP_MEDIA void * rtm_alloc(rtm_pool * pool, size_t size); 38*52a38012Sejakowatz _IMPEXP_MEDIA status_t rtm_free(void * data); 39*52a38012Sejakowatz _IMPEXP_MEDIA status_t rtm_realloc(void ** data, size_t new_size); 40*52a38012Sejakowatz _IMPEXP_MEDIA status_t rtm_size_for(void * data); 41*52a38012Sejakowatz _IMPEXP_MEDIA status_t rtm_phys_size_for(void * data); 42*52a38012Sejakowatz 43*52a38012Sejakowatz /* Return the default pool, or NULL if not yet initialized */ 44*52a38012Sejakowatz _IMPEXP_MEDIA rtm_pool * rtm_default_pool(); 45*52a38012Sejakowatz 46*52a38012Sejakowatz #if defined(__cplusplus) 47*52a38012Sejakowatz } 48*52a38012Sejakowatz #endif 49*52a38012Sejakowatz 50*52a38012Sejakowatz #endif // _REALTIME_ALLOC_H 51*52a38012Sejakowatz 52