Lumiera
0.pre.03
»edit your freedom«
|
Go to the source code of this file.
Implementation of error-safe wrappers for some notorious C-Lib functions.
Definition in file safeclib.c.
#include "lib/error.h"
#include "lib/safeclib.h"
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <stdint.h>
#include <nobug.h>
Enumerations | |
enum | lumiera_resource { LUMIERA_RESOURCE_MEMORY, LUMIERA_RESOURCE_END } |
Resources known to the resource collector. More... | |
enum | lumiera_resource_try { LUMIERA_RESOURCE_NONE, LUMIERA_RESOURCE_ONE, LUMIERA_RESOURCE_SOME, LUMIERA_RESOURCE_MANY, LUMIERA_RESOURCE_ALL, LUMIERA_RESOURCE_PANIC, LUMIERA_RESOURCE_UNREGISTER } |
Iteration indicator. More... | |
Functions | |
static int | die_no_mem (enum lumiera_resource which, enum lumiera_resource_try *iteration, void *context) |
void * | lumiera_calloc (size_t n, size_t size) |
Allocate cleared memory for an array. More... | |
LUMIERA_ERROR_DEFINE (NO_MEMORY, "Out of Memory!") | |
void * | lumiera_malloc (size_t size) |
Allocate memory. More... | |
void * | lumiera_realloc (void *ptr, size_t size) |
Change the size of a memory block. More... | |
int | lumiera_streq (const char *a, const char *b) |
check 2 strings for identity. More... | |
int | lumiera_strncmp (const char *a, const char *b, size_t len) |
Compare two C strings. More... | |
char * | lumiera_strndup (const char *str, size_t len) |
Duplicate a C string. More... | |
enum lumiera_resource |
Resources known to the resource collector.
Definition at line 37 of file safeclib.c.
enum lumiera_resource_try |
Iteration indicator.
Handlers do not need to obey the request and shall return LUMIERA_RESOURCE_NONE which will then continue with the next handler. This goes through all available handlers until one returns a higher or same value than the current iteration to indicate that it freed enough resources to continue the task. Then control is passed back to the calling loop which retries the resource allocation. LUMIERA_RESOURCE_PANIC is somewhat special since it will always call all registered handlers for all resources, not only the queried one and finally _exit() the application. The exact amounts of resources to be freed for ONE, SOME and MANY in intentionally kept vague the handlers are free to interpret this in some sensible way.
Definition at line 74 of file safeclib.c.
|
static |
placeholder function in case the resource-collector was not installed
Definition at line 104 of file safeclib.c.
References LUMIERA_DIE.
void* lumiera_malloc | ( | size_t | sz | ) |
Allocate memory.
always succeeds or dies
size | memory to be allocated |
Definition at line 113 of file safeclib.c.
References LUMIERA_RESOURCE_ONE.
Referenced by lumiera_plugin_new().
void* lumiera_calloc | ( | size_t | n, |
size_t | size | ||
) |
Allocate cleared memory for an array.
always succeeds or dies
n | number of elements |
size | memory to be allocated |
Definition at line 130 of file safeclib.c.
References LUMIERA_RESOURCE_ONE.
void* lumiera_realloc | ( | void * | ptr, |
size_t | size | ||
) |
Change the size of a memory block.
ptr | pointer to the old memory block obtained by lumiera_malloc or lumiera_calloc |
size | new size of the block |
Definition at line 149 of file safeclib.c.
References LUMIERA_RESOURCE_ONE.
char* lumiera_strndup | ( | const char * | str, |
size_t | len | ||
) |
Duplicate a C string.
always succeeds or dies
str | string to be copied |
len | maximal length to be copied |
Definition at line 166 of file safeclib.c.
References LUMIERA_RESOURCE_ONE.
Referenced by lumiera_free(), and lumiera_plugin_new().
int lumiera_strncmp | ( | const char * | a, |
const char * | b, | ||
size_t | len | ||
) |
Compare two C strings.
Handles NULL pointers as "", shortcut for same addresses
a | first string for comparsion |
b | second string for comparsion |
len | maximal length for the comparsion |
Definition at line 184 of file safeclib.c.
Referenced by lumiera_free(), and lumiera_streq().
int lumiera_streq | ( | const char * | a, |
const char * | b | ||
) |
check 2 strings for identity.
a | first string for comparsion |
b | second string for comparsion |
Definition at line 191 of file safeclib.c.
References lumiera_strncmp().
Referenced by lumiera_free().