ChibiOS 21.11.5
chfactory.c File Reference

ChibiOS objects factory and registry code. More...

#include <string.h>
#include "ch.h"

Go to the source code of this file.

Macros

#define F_LOCK()
#define F_UNLOCK()

Functions

static bool add_size (size_t a, size_t b, size_t *result)
static bool mul_size (size_t a, size_t b, size_t *result)
static bool align_size (size_t size, unsigned align, size_t *result)
static void copy_name (const char *sp, char *dp)
static void dyn_list_init (dyn_list_t *dlp)
static dyn_element_t * dyn_list_find (const char *name, dyn_list_t *dlp)
static dyn_element_t * dyn_list_find_prev (dyn_element_t *element, dyn_list_t *dlp)
static dyn_element_t * dyn_list_unlink (dyn_element_t *prev)
static dyn_element_t * dyn_create_object_heap (const char *name, dyn_list_t *dlp, size_t size, unsigned align)
static void dyn_release_object_heap (dyn_element_t *dep, dyn_list_t *dlp)
static dyn_element_t * dyn_create_object_pool (const char *name, dyn_list_t *dlp, memory_pool_t *mp)
static void dyn_release_object_pool (dyn_element_t *dep, dyn_list_t *dlp, memory_pool_t *mp)
static dyn_element_t * dyn_find_object (const char *name, dyn_list_t *dlp)
void __factory_init (void)
 Initializes the objects factory.
dyn_element_t * chFactoryDuplicateReference (dyn_element_t *dep)
 Duplicates an object reference.
registered_object_t * chFactoryRegisterObject (const char *name, void *objp)
 Registers a generic object.
registered_object_t * chFactoryFindObject (const char *name)
 Retrieves a registered object.
registered_object_t * chFactoryFindObjectByPointer (void *objp)
 Retrieves a registered object by pointer.
void chFactoryReleaseObject (registered_object_t *rop)
 Releases a registered object.
dyn_buffer_t * chFactoryCreateBuffer (const char *name, size_t size)
 Creates a generic dynamic buffer object.
dyn_buffer_t * chFactoryFindBuffer (const char *name)
 Retrieves a dynamic buffer object.
void chFactoryReleaseBuffer (dyn_buffer_t *dbp)
 Releases a dynamic buffer object.
dyn_semaphore_t * chFactoryCreateSemaphore (const char *name, cnt_t n)
 Creates a dynamic semaphore object.
dyn_semaphore_t * chFactoryFindSemaphore (const char *name)
 Retrieves a dynamic semaphore object.
void chFactoryReleaseSemaphore (dyn_semaphore_t *dsp)
 Releases a dynamic semaphore object.
dyn_mailbox_t * chFactoryCreateMailbox (const char *name, size_t n)
 Creates a dynamic mailbox object.
dyn_mailbox_t * chFactoryFindMailbox (const char *name)
 Retrieves a dynamic mailbox object.
void chFactoryReleaseMailbox (dyn_mailbox_t *dmp)
 Releases a dynamic mailbox object.
dyn_objects_fifo_t * chFactoryCreateObjectsFIFO (const char *name, size_t objsize, size_t objn, unsigned objalign)
 Creates a dynamic "objects FIFO" object.
dyn_objects_fifo_t * chFactoryFindObjectsFIFO (const char *name)
 Retrieves a dynamic "objects FIFO" object.
void chFactoryReleaseObjectsFIFO (dyn_objects_fifo_t *dofp)
 Releases a dynamic "objects FIFO" object.
dyn_pipe_t * chFactoryCreatePipe (const char *name, size_t size)
 Creates a dynamic pipe object.
dyn_pipe_t * chFactoryFindPipe (const char *name)
 Retrieves a dynamic pipe object.
void chFactoryReleasePipe (dyn_pipe_t *dpp)
 Releases a dynamic pipe object.

Variables

objects_factory_t ch_factory
 Factory object static instance.

Detailed Description

ChibiOS objects factory and registry code.

Definition in file chfactory.c.