Tizen Native API  5.5
Safe Pointer

These functions provide a wrapper that protect access to pointers.

Eina_Safepointer is an pointer to index converter that allows an increased level of safety by forbidding direct access to the pointer. The protection works by using a set of indirection tables that are mmapped and mprotected against write access. Thus the pointer they store and that map to a specific index is always correct. Also once a pointer is unregistered the index won't be served back for 2^8 on 32 bits system and 2^28 on 64 bits system for that specific slot. Finally we guarantee that the lower 2 bits of the returned index are actually never used and completely ignored by our API. So you can safely store whatever information you want in it, we will ignore it and treat as if it wasn't there.

Note:
The use of Eina_Safepointer is thread safe.

Functions

static void * eina_safepointer_get (const Eina_Safepointer *safe)
 Get the associated pointer from an Eina_Safepointer mapping.

Typedefs

typedef struct _Eina_Safepointer Eina_Safepointer

Typedef Documentation

Type of the protected index.


Function Documentation

static void* eina_safepointer_get ( const Eina_Safepointer safe) [static]

Get the associated pointer from an Eina_Safepointer mapping.

Parameters:
[in]safeThe Eina_Safepointer index to lookup at.
Returns:
The pointer registered with that index or NULL in any other case.
Note:
It is always safe to ask for a pointer for any value of the mapping. If the pointer is invalid or NULL, we will return NULL and not crash.