Space-independent memory allocation functions. More...
Go to the source code of this file.
Defines | |
#define | qos_create(type) |
Create an instance of the supplied type. | |
Functions | |
void * | qos_malloc (long size) |
Allocates a memory segment either in user-space or in kernel-space. | |
void * | qos_malloc_named (long size, const char *name) |
Like qos_malloc(), but adds a name for the chunk useful when debugging. | |
void | qos_free (void *ptr) |
Deallocates a memory segment. | |
int | qos_mem_valid (void *ptr) |
Check if the supplied pointer is within allocated segments. | |
int | qos_mem_clean (void) |
If memory check enabled, return 1 if all allocated memory chunks have been freed, and no chunk-related errors occurred ever during qos_malloc() / qos_free(). |
Space-independent memory allocation functions.
These functions allocate and free a memory segment, independently of the space in which they are being compiled. For user-space, they map to malloc() and free(). For kernel-space, they map to kmalloc() and kfree().
Check what are the proper flags to use with kmalloc().
These functions may be made static inline.
Definition in file qos_memory.h.
#define qos_create | ( | type | ) |
({ \ type *__ptr = qos_malloc_named(sizeof(type), #type); \ if (__ptr == NULL) \ qos_log_err("Could not allocate memory for " #type); \ __ptr; \ })
Create an instance of the supplied type.
Definition at line 48 of file qos_memory.h.
Referenced by qos_func_define(), qsup_add_group_constraints(), qsup_create_server(), rres_add(), rres_create_server(), and rres_init().
void qos_free | ( | void * | ptr | ) |
Deallocates a memory segment.
Definition at line 176 of file qos_memory.c.
References qos_ll_free(), qos_log_crit, and qos_log_debug.
Referenced by qos_func_define(), qsup_cleanup(), qsup_create_server(), qsup_destroy_server(), rres_cleanup(), rres_del(), and rres_destroy_server().
void* qos_malloc | ( | long | size | ) |
Allocates a memory segment either in user-space or in kernel-space.
In case of no memory available returns 0.
#define qos_malloc(x) do { x = xalloc(sizeof (*(x))); } while (0)
Definition at line 147 of file qos_memory.c.
References qos_malloc_named().
Referenced by get_user_info(), qres_setup_qsup_for_rres(), and qsup_add_user_constraints().
void* qos_malloc_named | ( | long | size, | |
const char * | name | |||
) |
Like qos_malloc(), but adds a name for the chunk useful when debugging.
Definition at line 151 of file qos_memory.c.
References qos_ll_free(), qos_ll_malloc(), qos_log_crit, and qos_log_debug.
Referenced by qos_malloc().
int qos_mem_clean | ( | void | ) |
If memory check enabled, return 1 if all allocated memory chunks have been freed, and no chunk-related errors occurred ever during qos_malloc() / qos_free().
Definition at line 198 of file qos_memory.c.
References qos_log_debug.
Referenced by rres_cleanup_module().
int qos_mem_valid | ( | void * | ptr | ) |
Check if the supplied pointer is within allocated segments.
If memory chunks tracking is disabled, then this function returns always 1.
Definition at line 125 of file qos_memory.c.
Referenced by hrt_callback(), rres_any_blocked_task(), rres_any_ready_task(), rres_detach_task_nosched(), rres_schedule(), and timer_callback().