|
ChibiOS 21.11.5
|
The object factory is a subsystem that allows to:
Allocated OS objects are handled using a reference counter, only when all references have been released then the object memory is freed in a pool.
CH_CFG_USE_MEMCORE and CH_CFG_USE_MEMPOOLS options to be set to TRUE. The option CH_CFG_USE_HEAP is also required if the support for variable length objects is enabled. 
Data Structures | |
| struct | ch_dyn_element |
| Type of a dynamic object list element. More... | |
| struct | ch_dyn_list |
| Type of a dynamic object list. More... | |
| struct | ch_registered_static_object |
| Type of a registered object. More... | |
| struct | ch_dyn_object |
| Type of a dynamic buffer object. More... | |
| struct | ch_dyn_semaphore |
| Type of a dynamic semaphore. More... | |
| struct | ch_dyn_mailbox |
| Type of a dynamic buffer object. More... | |
| struct | ch_dyn_objects_fifo |
| Type of a dynamic buffer object. More... | |
| struct | ch_dyn_pipe |
| Type of a dynamic pipe object. More... | |
| struct | ch_objects_factory |
| Type of the factory main object. More... | |
Macros | |
| #define | F_LOCK() |
| #define | F_UNLOCK() |
| #define | CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 |
| Maximum length for object names. | |
| #define | CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE |
| Enables the registry of generic objects. | |
| #define | CH_CFG_FACTORY_GENERIC_BUFFERS TRUE |
| Enables factory for generic buffers. | |
| #define | CH_CFG_FACTORY_SEMAPHORES TRUE |
| Enables factory for semaphores. | |
| #define | CH_CFG_FACTORY_SEMAPHORES FALSE |
| Enables factory for semaphores. | |
| #define | CH_CFG_FACTORY_MAILBOXES TRUE |
| Enables factory for mailboxes. | |
| #define | CH_CFG_FACTORY_MAILBOXES FALSE |
| Enables factory for mailboxes. | |
| #define | CH_CFG_FACTORY_OBJ_FIFOS TRUE |
| Enables factory for objects FIFOs. | |
| #define | CH_CFG_FACTORY_OBJ_FIFOS FALSE |
| Enables factory for objects FIFOs. | |
| #define | CH_CFG_FACTORY_PIPES TRUE |
| Enables factory for Pipes. | |
| #define | CH_CFG_FACTORY_PIPES FALSE |
| Enables factory for Pipes. | |
| #define | CH_FACTORY_REQUIRES_POOLS |
| #define | CH_FACTORY_REQUIRES_HEAP |
Typedefs | |
| typedef struct ch_dyn_element | dyn_element_t |
| Type of a dynamic object list element. | |
| typedef struct ch_dyn_list | dyn_list_t |
| Type of a dynamic object list. | |
| typedef struct ch_registered_static_object | registered_object_t |
| Type of a registered object. | |
| typedef struct ch_dyn_object | dyn_buffer_t |
| Type of a dynamic buffer object. | |
| typedef struct ch_dyn_semaphore | dyn_semaphore_t |
| Type of a dynamic semaphore. | |
| typedef struct ch_dyn_mailbox | dyn_mailbox_t |
| Type of a dynamic buffer object. | |
| typedef struct ch_dyn_objects_fifo | dyn_objects_fifo_t |
| Type of a dynamic buffer object. | |
| typedef struct ch_dyn_pipe | dyn_pipe_t |
| Type of a dynamic pipe object. | |
| typedef struct ch_objects_factory | objects_factory_t |
| Type of the factory main object. | |
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. | |
| static void * | chFactoryGetObject (registered_object_t *rop) |
| Returns the pointer to the inner registered object. | |
| static size_t | chFactoryGetBufferSize (dyn_buffer_t *dbp) |
| Returns the size of a generic dynamic buffer object. | |
| static uint8_t * | chFactoryGetBuffer (dyn_buffer_t *dbp) |
| Returns the pointer to the inner buffer. | |
| static semaphore_t * | chFactoryGetSemaphore (dyn_semaphore_t *dsp) |
| Returns the pointer to the inner semaphore. | |
| static mailbox_t * | chFactoryGetMailbox (dyn_mailbox_t *dmp) |
| Returns the pointer to the inner mailbox. | |
| static objects_fifo_t * | chFactoryGetObjectsFIFO (dyn_objects_fifo_t *dofp) |
| Returns the pointer to the inner objects FIFO. | |
| static pipe_t * | chFactoryGetPipe (dyn_pipe_t *dpp) |
| Returns the pointer to the inner pipe. | |
Variables | |
| objects_factory_t | ch_factory |
| Factory object static instance. | |
| #define F_LOCK | ( | ) |
Definition at line 55 of file chfactory.c.
Referenced by chFactoryCreateBuffer(), chFactoryCreateMailbox(), chFactoryCreateObjectsFIFO(), chFactoryCreatePipe(), chFactoryCreateSemaphore(), chFactoryDuplicateReference(), chFactoryFindBuffer(), chFactoryFindMailbox(), chFactoryFindObject(), chFactoryFindObjectByPointer(), chFactoryFindObjectsFIFO(), chFactoryFindPipe(), chFactoryFindSemaphore(), chFactoryRegisterObject(), chFactoryReleaseBuffer(), chFactoryReleaseMailbox(), chFactoryReleaseObject(), chFactoryReleaseObjectsFIFO(), chFactoryReleasePipe(), and chFactoryReleaseSemaphore().
| #define F_UNLOCK | ( | ) |
Definition at line 56 of file chfactory.c.
Referenced by chFactoryCreateBuffer(), chFactoryCreateMailbox(), chFactoryCreateObjectsFIFO(), chFactoryCreatePipe(), chFactoryCreateSemaphore(), chFactoryDuplicateReference(), chFactoryFindBuffer(), chFactoryFindMailbox(), chFactoryFindObject(), chFactoryFindObjectByPointer(), chFactoryFindObjectsFIFO(), chFactoryFindPipe(), chFactoryFindSemaphore(), chFactoryRegisterObject(), chFactoryReleaseBuffer(), chFactoryReleaseMailbox(), chFactoryReleaseObject(), chFactoryReleaseObjectsFIFO(), chFactoryReleasePipe(), and chFactoryReleaseSemaphore().
| #define CH_CFG_FACTORY_MAX_NAMES_LENGTH 8 |
Maximum length for object names.
If the specified length is zero then the name is stored by pointer but this could have unintended side effects.
Definition at line 46 of file chfactory.h.
| #define CH_CFG_FACTORY_OBJECTS_REGISTRY TRUE |
Enables the registry of generic objects.
Definition at line 53 of file chfactory.h.
| #define CH_CFG_FACTORY_GENERIC_BUFFERS TRUE |
Enables factory for generic buffers.
Definition at line 60 of file chfactory.h.
| #define CH_CFG_FACTORY_SEMAPHORES TRUE |
Enables factory for semaphores.
Definition at line 67 of file chfactory.h.
| #define CH_CFG_FACTORY_SEMAPHORES FALSE |
Enables factory for semaphores.
Definition at line 67 of file chfactory.h.
| #define CH_CFG_FACTORY_MAILBOXES TRUE |
Enables factory for mailboxes.
Definition at line 74 of file chfactory.h.
| #define CH_CFG_FACTORY_MAILBOXES FALSE |
Enables factory for mailboxes.
Definition at line 74 of file chfactory.h.
| #define CH_CFG_FACTORY_OBJ_FIFOS TRUE |
Enables factory for objects FIFOs.
Definition at line 81 of file chfactory.h.
| #define CH_CFG_FACTORY_OBJ_FIFOS FALSE |
Enables factory for objects FIFOs.
Definition at line 81 of file chfactory.h.
| #define CH_CFG_FACTORY_PIPES TRUE |
Enables factory for Pipes.
Definition at line 88 of file chfactory.h.
| #define CH_CFG_FACTORY_PIPES FALSE |
Enables factory for Pipes.
Definition at line 88 of file chfactory.h.
| #define CH_FACTORY_REQUIRES_POOLS |
Definition at line 123 of file chfactory.h.
| #define CH_FACTORY_REQUIRES_HEAP |
Definition at line 127 of file chfactory.h.
| typedef struct ch_dyn_element dyn_element_t |
Type of a dynamic object list element.
| typedef struct ch_dyn_list dyn_list_t |
Type of a dynamic object list.
| typedef struct ch_registered_static_object registered_object_t |
Type of a registered object.
| typedef struct ch_dyn_object dyn_buffer_t |
Type of a dynamic buffer object.
| typedef struct ch_dyn_semaphore dyn_semaphore_t |
Type of a dynamic semaphore.
| typedef struct ch_dyn_mailbox dyn_mailbox_t |
Type of a dynamic buffer object.
| typedef struct ch_dyn_objects_fifo dyn_objects_fifo_t |
Type of a dynamic buffer object.
| typedef struct ch_dyn_pipe dyn_pipe_t |
Type of a dynamic pipe object.
| typedef struct ch_objects_factory objects_factory_t |
Type of the factory main object.
|
static |
Definition at line 86 of file chfactory.c.
Referenced by chFactoryCreateBuffer(), chFactoryCreateMailbox(), chFactoryCreateObjectsFIFO(), and chFactoryCreatePipe().
|
static |
Definition at line 100 of file chfactory.c.
Referenced by chFactoryCreateMailbox(), and chFactoryCreateObjectsFIFO().
|
static |
Definition at line 113 of file chfactory.c.
References MEM_ALIGN_NEXT.
Referenced by chFactoryCreateObjectsFIFO().
|
static |
Definition at line 127 of file chfactory.c.
References CH_CFG_FACTORY_MAX_NAMES_LENGTH.
Referenced by dyn_create_object_heap(), and dyn_create_object_pool().
|
inlinestatic |
Definition at line 139 of file chfactory.c.
References ch_dyn_list::next.
Referenced by __factory_init().
|
static |
Definition at line 144 of file chfactory.c.
References CH_CFG_FACTORY_MAX_NAMES_LENGTH, ch_dyn_element::name, ch_dyn_element::next, and ch_dyn_list::next.
Referenced by dyn_create_object_heap(), dyn_create_object_pool(), and dyn_find_object().
|
static |
Definition at line 157 of file chfactory.c.
References ch_dyn_element::next.
Referenced by dyn_release_object_heap(), and dyn_release_object_pool().
|
static |
Definition at line 174 of file chfactory.c.
References ch_dyn_element::next.
Referenced by dyn_release_object_heap(), and dyn_release_object_pool().
|
static |
Definition at line 183 of file chfactory.c.
References chDbgCheck, chHeapAllocAligned(), copy_name(), dyn_list_find(), ch_dyn_element::name, ch_dyn_element::next, ch_dyn_list::next, and ch_dyn_element::refs.
Referenced by chFactoryCreateBuffer(), chFactoryCreateMailbox(), chFactoryCreateObjectsFIFO(), and chFactoryCreatePipe().

|
static |
Definition at line 214 of file chfactory.c.
References chDbgAssert, chDbgCheck, chHeapFree(), dyn_list_find_prev(), dyn_list_unlink(), and ch_dyn_element::refs.
Referenced by chFactoryReleaseBuffer(), chFactoryReleaseMailbox(), chFactoryReleaseObjectsFIFO(), and chFactoryReleasePipe().

|
static |
Definition at line 239 of file chfactory.c.
References chDbgCheck, chPoolAlloc(), copy_name(), dyn_list_find(), ch_dyn_element::name, ch_dyn_element::next, ch_dyn_list::next, and ch_dyn_element::refs.
Referenced by chFactoryCreateSemaphore(), and chFactoryRegisterObject().

|
static |
Definition at line 269 of file chfactory.c.
References chDbgAssert, chDbgCheck, chPoolFree(), dyn_list_find_prev(), dyn_list_unlink(), and ch_dyn_element::refs.
Referenced by chFactoryReleaseObject(), and chFactoryReleaseSemaphore().

|
static |
Definition at line 294 of file chfactory.c.
References chDbgCheck, dyn_list_find(), and ch_dyn_element::refs.
Referenced by chFactoryFindBuffer(), chFactoryFindMailbox(), chFactoryFindObject(), chFactoryFindObjectsFIFO(), chFactoryFindPipe(), and chFactoryFindSemaphore().

| void __factory_init | ( | void | ) |
Initializes the objects factory.
Definition at line 318 of file chfactory.c.
References ch_factory, chCoreAllocAlignedI(), chMtxObjectInit(), chPoolObjectInit(), chSemObjectInit, and dyn_list_init().
Referenced by __oslib_init().

| dyn_element_t * chFactoryDuplicateReference | ( | dyn_element_t * | dep | ) |
Duplicates an object reference.
| [in] | dep | pointer to the element field of the object |
Definition at line 361 of file chfactory.c.
References chDbgAssert, chDbgCheck, F_LOCK, F_UNLOCK, and ch_dyn_element::refs.
| registered_object_t * chFactoryRegisterObject | ( | const char * | name, |
| void * | objp ) |
Registers a generic object.
| [in] | name | name to be assigned to the registered object |
| [in] | objp | pointer to the object to be registered |
| NULL | if the object to be registered cannot be allocated or a registered object with the same name exists. |
Definition at line 390 of file chfactory.c.
References ch_factory, dyn_create_object_pool(), F_LOCK, F_UNLOCK, and ch_registered_static_object::objp.

| registered_object_t * chFactoryFindObject | ( | const char * | name | ) |
Retrieves a registered object.
| [in] | name | name of the registered object |
| NULL | if a registered object with the specified name does not exist. |
Definition at line 422 of file chfactory.c.
References ch_factory, dyn_find_object(), F_LOCK, and F_UNLOCK.

| registered_object_t * chFactoryFindObjectByPointer | ( | void * | objp | ) |
Retrieves a registered object by pointer.
| [in] | objp | pointer to the object to be retrieved |
| NULL | if a registered object with the specified pointer does not exist. |
Definition at line 447 of file chfactory.c.
References ch_factory, ch_registered_static_object::element, F_LOCK, F_UNLOCK, ch_dyn_element::next, ch_registered_static_object::objp, and ch_dyn_element::refs.
| void chFactoryReleaseObject | ( | registered_object_t * | rop | ) |
Releases a registered object.
The reference counter of the registered object is decreased by one, if reaches zero then the registered object memory is freed.
| [in] | rop | registered object reference |
Definition at line 481 of file chfactory.c.
References ch_factory, dyn_release_object_pool(), ch_registered_static_object::element, F_LOCK, and F_UNLOCK.

| dyn_buffer_t * chFactoryCreateBuffer | ( | const char * | name, |
| size_t | size ) |
Creates a generic dynamic buffer object.
| [in] | name | name to be assigned to the new dynamic buffer object |
| [in] | size | payload size of the dynamic buffer object to be created |
| NULL | if the dynamic buffer object cannot be allocated or a dynamic buffer object with the same name exists. |
Definition at line 509 of file chfactory.c.
References add_size(), ch_factory, CH_HEAP_ALIGNMENT, dyn_create_object_heap(), F_LOCK, and F_UNLOCK.

| dyn_buffer_t * chFactoryFindBuffer | ( | const char * | name | ) |
Retrieves a dynamic buffer object.
| [in] | name | name of the dynamic buffer object |
| NULL | if a dynamic buffer object with the specified name does not exist. |
Definition at line 546 of file chfactory.c.
References ch_factory, dyn_find_object(), F_LOCK, and F_UNLOCK.

| void chFactoryReleaseBuffer | ( | dyn_buffer_t * | dbp | ) |
Releases a dynamic buffer object.
The reference counter of the dynamic buffer object is decreased by one, if reaches zero then the dynamic buffer object memory is freed.
| [in] | dbp | dynamic buffer object reference |
Definition at line 568 of file chfactory.c.
References ch_factory, dyn_release_object_heap(), ch_dyn_object::element, F_LOCK, and F_UNLOCK.

| dyn_semaphore_t * chFactoryCreateSemaphore | ( | const char * | name, |
| cnt_t | n ) |
Creates a dynamic semaphore object.
| [in] | name | name to be assigned to the new dynamic semaphore object |
| [in] | n | dynamic semaphore object counter initialization value |
| NULL | if the dynamic semaphore object cannot be allocated or a dynamic semaphore with the same name exists. |
Definition at line 594 of file chfactory.c.
References ch_factory, chSemObjectInit, dyn_create_object_pool(), F_LOCK, F_UNLOCK, and ch_dyn_semaphore::sem.

| dyn_semaphore_t * chFactoryFindSemaphore | ( | const char * | name | ) |
Retrieves a dynamic semaphore object.
| [in] | name | name of the dynamic semaphore object |
| NULL | if a dynamic semaphore object with the specified name does not exist. |
Definition at line 625 of file chfactory.c.
References ch_factory, dyn_find_object(), F_LOCK, and F_UNLOCK.

| void chFactoryReleaseSemaphore | ( | dyn_semaphore_t * | dsp | ) |
Releases a dynamic semaphore object.
The reference counter of the dynamic semaphore object is decreased by one, if reaches zero then the dynamic semaphore object memory is freed.
| [in] | dsp | dynamic semaphore object reference |
Definition at line 647 of file chfactory.c.
References ch_factory, dyn_release_object_pool(), ch_dyn_semaphore::element, F_LOCK, and F_UNLOCK.

| dyn_mailbox_t * chFactoryCreateMailbox | ( | const char * | name, |
| size_t | n ) |
Creates a dynamic mailbox object.
| [in] | name | name to be assigned to the new dynamic mailbox object |
| [in] | n | mailbox buffer size as number of messages |
| NULL | if the dynamic mailbox object cannot be allocated or a dynamic mailbox object with the same name exists. |
Definition at line 675 of file chfactory.c.
References add_size(), ch_factory, CH_HEAP_ALIGNMENT, chMBObjectInit(), dyn_create_object_heap(), F_LOCK, F_UNLOCK, ch_dyn_mailbox::mbx, and mul_size().

| dyn_mailbox_t * chFactoryFindMailbox | ( | const char * | name | ) |
Retrieves a dynamic mailbox object.
| [in] | name | name of the dynamic mailbox object |
| NULL | if a dynamic mailbox object with the specified name does not exist. |
Definition at line 713 of file chfactory.c.
References ch_factory, dyn_find_object(), F_LOCK, and F_UNLOCK.

| void chFactoryReleaseMailbox | ( | dyn_mailbox_t * | dmp | ) |
Releases a dynamic mailbox object.
The reference counter of the dynamic mailbox object is decreased by one, if reaches zero then the dynamic mailbox object memory is freed.
| [in] | dmp | dynamic mailbox object reference |
Definition at line 735 of file chfactory.c.
References ch_factory, dyn_release_object_heap(), ch_dyn_mailbox::element, F_LOCK, and F_UNLOCK.

| dyn_objects_fifo_t * chFactoryCreateObjectsFIFO | ( | const char * | name, |
| size_t | objsize, | ||
| size_t | objn, | ||
| unsigned | objalign ) |
Creates a dynamic "objects FIFO" object.
| [in] | name | name to be assigned to the new dynamic "objects FIFO" object |
| [in] | objsize | size of objects |
| [in] | objn | number of objects available |
| [in] | objalign | required objects alignment |
| NULL | if the dynamic "objects FIFO" object cannot be allocated or a dynamic "objects FIFO" object with the same name exists. |
Definition at line 765 of file chfactory.c.
References add_size(), align_size(), ch_factory, chDbgCheck, chFifoObjectInitAligned(), dyn_create_object_heap(), F_LOCK, F_UNLOCK, ch_dyn_objects_fifo::fifo, MEM_IS_VALID_ALIGNMENT, mul_size(), and PORT_NATURAL_ALIGN.

| dyn_objects_fifo_t * chFactoryFindObjectsFIFO | ( | const char * | name | ) |
Retrieves a dynamic "objects FIFO" object.
| [in] | name | name of the dynamic "objects FIFO" object |
| NULL | if a dynamic "objects FIFO" object with the specified name does not exist. |
Definition at line 819 of file chfactory.c.
References ch_factory, dyn_find_object(), F_LOCK, and F_UNLOCK.

| void chFactoryReleaseObjectsFIFO | ( | dyn_objects_fifo_t * | dofp | ) |
Releases a dynamic "objects FIFO" object.
The reference counter of the dynamic "objects FIFO" object is decreased by one, if reaches zero then the dynamic "objects FIFO" object memory is freed.
| [in] | dofp | dynamic "objects FIFO" object reference |
Definition at line 841 of file chfactory.c.
References ch_factory, dyn_release_object_heap(), ch_dyn_objects_fifo::element, F_LOCK, and F_UNLOCK.

| dyn_pipe_t * chFactoryCreatePipe | ( | const char * | name, |
| size_t | size ) |
Creates a dynamic pipe object.
| [in] | name | name to be assigned to the new dynamic pipe object |
| [in] | size | pipe buffer size |
| NULL | if the dynamic pipe object cannot be allocated or a dynamic pipe object with the same name exists. |
Definition at line 869 of file chfactory.c.
References add_size(), ch_factory, CH_HEAP_ALIGNMENT, chPipeObjectInit(), dyn_create_object_heap(), F_LOCK, F_UNLOCK, and ch_dyn_pipe::pipe.

| dyn_pipe_t * chFactoryFindPipe | ( | const char * | name | ) |
Retrieves a dynamic pipe object.
| [in] | name | name of the pipe object |
| NULL | if a dynamic pipe object with the specified name does not exist. |
Definition at line 907 of file chfactory.c.
References ch_factory, dyn_find_object(), F_LOCK, and F_UNLOCK.

| void chFactoryReleasePipe | ( | dyn_pipe_t * | dpp | ) |
Releases a dynamic pipe object.
The reference counter of the dynamic pipe object is decreased by one, if reaches zero then the dynamic pipe object memory is freed.
| [in] | dpp | dynamic pipe object reference |
Definition at line 929 of file chfactory.c.
References ch_factory, dyn_release_object_heap(), ch_dyn_pipe::element, F_LOCK, and F_UNLOCK.

|
inlinestatic |
Returns the pointer to the inner registered object.
| [in] | rop | registered object reference |
Definition at line 404 of file chfactory.h.
References ch_registered_static_object::objp.
|
inlinestatic |
Returns the size of a generic dynamic buffer object.
| [in] | dbp | dynamic buffer object reference |
Definition at line 419 of file chfactory.h.
References chHeapGetSize().

|
inlinestatic |
Returns the pointer to the inner buffer.
| [in] | dbp | dynamic buffer object reference |
Definition at line 432 of file chfactory.h.
|
inlinestatic |
Returns the pointer to the inner semaphore.
| [in] | dsp | dynamic semaphore object reference |
Definition at line 447 of file chfactory.h.
References ch_dyn_semaphore::sem.
|
inlinestatic |
Returns the pointer to the inner mailbox.
| [in] | dmp | dynamic mailbox object reference |
Definition at line 462 of file chfactory.h.
References ch_dyn_mailbox::mbx.
|
inlinestatic |
Returns the pointer to the inner objects FIFO.
| [in] | dofp | dynamic "objects FIFO" object reference |
Definition at line 477 of file chfactory.h.
References ch_dyn_objects_fifo::fifo.
|
inlinestatic |
Returns the pointer to the inner pipe.
| [in] | dpp | dynamic pipe object reference |
Definition at line 492 of file chfactory.h.
References ch_dyn_pipe::pipe.
| objects_factory_t ch_factory |
Factory object static instance.
Definition at line 71 of file chfactory.c.
Referenced by __factory_init(), chFactoryCreateBuffer(), chFactoryCreateMailbox(), chFactoryCreateObjectsFIFO(), chFactoryCreatePipe(), chFactoryCreateSemaphore(), chFactoryFindBuffer(), chFactoryFindMailbox(), chFactoryFindObject(), chFactoryFindObjectByPointer(), chFactoryFindObjectsFIFO(), chFactoryFindPipe(), chFactoryFindSemaphore(), chFactoryRegisterObject(), chFactoryReleaseBuffer(), chFactoryReleaseMailbox(), chFactoryReleaseObject(), chFactoryReleaseObjectsFIFO(), chFactoryReleasePipe(), and chFactoryReleaseSemaphore().