xref: /haiku/headers/os/media/RealtimeAlloc.h (revision 52a380120846174213ccce9c4aab0dda17c72083)
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