RTEMS CPU Kit with SuperCore
4.11.3
|
Private Inlined Routines for POSIX Message Queue. More...
#include <rtems/posix/mqueue.h>
#include <rtems/posix/posixapi.h>
#include <rtems/score/coremsgimpl.h>
Go to the source code of this file.
Functions | |
void | _POSIX_Message_queue_Manager_initialization (void) |
Initialize message_queue manager related data structures. More... | |
int | _POSIX_Message_queue_Create_support (const char *name, size_t name_len, int pshared, struct mq_attr *attr, POSIX_Message_queue_Control **message_queue) |
POSIX Message Queue Create Support. More... | |
void | _POSIX_Message_queue_Delete (POSIX_Message_queue_Control *the_mq) |
Delete a POSIX Message Queue. More... | |
ssize_t | _POSIX_Message_queue_Receive_support (mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio, bool wait, Watchdog_Interval timeout) |
int | _POSIX_Message_queue_Send_support (mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned int msg_prio, bool wait, Watchdog_Interval timeout) |
POSIX Message Queue Send Support. More... | |
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control * | _POSIX_Message_queue_Allocate (void) |
POSIX Message Queue Allocate. More... | |
RTEMS_INLINE_ROUTINE void | _POSIX_Message_queue_Free (POSIX_Message_queue_Control *the_mq) |
POSIX Message Queue Free. More... | |
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control * | _POSIX_Message_queue_Get (Objects_Id id, Objects_Locations *location) |
POSIX Message Queue Get. More... | |
RTEMS_INLINE_ROUTINE CORE_message_queue_Submit_types | _POSIX_Message_queue_Priority_to_core (unsigned int priority) |
RTEMS_INLINE_ROUTINE unsigned int | _POSIX_Message_queue_Priority_from_core (CORE_message_queue_Submit_types priority) |
int | _POSIX_Message_queue_Translate_core_message_queue_return_code (uint32_t the_message_queue_status) |
POSIX Message Queue Translate Score Return Code. More... | |
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd * | _POSIX_Message_queue_Allocate_fd (void) |
POSIX Message Queue Allocate File Descriptor. | |
RTEMS_INLINE_ROUTINE void | _POSIX_Message_queue_Free_fd (POSIX_Message_queue_Control_fd *the_mq_fd) |
POSIX Message Queue Free File Descriptor. | |
RTEMS_INLINE_ROUTINE void | _POSIX_Message_queue_Namespace_remove (POSIX_Message_queue_Control *the_mq) |
POSIX Message Queue Remove from Namespace. | |
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd * | _POSIX_Message_queue_Get_fd (mqd_t id, Objects_Locations *location) |
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd * | _POSIX_Message_queue_Get_fd_interrupt_disable (mqd_t id, Objects_Locations *location, ISR_lock_Context *lock_context) |
RTEMS_INLINE_ROUTINE int | _POSIX_Message_queue_Name_to_id (const char *name, Objects_Id *id, size_t *len) |
Variables | |
POSIX_EXTERN Objects_Information | _POSIX_Message_queue_Information |
This defines the information control block used to manage this class of objects. | |
POSIX_EXTERN Objects_Information | _POSIX_Message_queue_Information_fds |
The is used to manage the set of "file descriptors" associated with the message queues. | |
Private Inlined Routines for POSIX Message Queue.
This include file contains the static inline implementation of the private inlined routines for POSIX Message Queue.
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control* _POSIX_Message_queue_Allocate | ( | void | ) |
POSIX Message Queue Allocate.
This function allocates a message queue control block from the inactive chain of free message queue control blocks.
References _Objects_Allocate().
int _POSIX_Message_queue_Create_support | ( | const char * | name, |
size_t | name_len, | ||
int | pshared, | ||
struct mq_attr * | attr, | ||
POSIX_Message_queue_Control ** | message_queue | ||
) |
POSIX Message Queue Create Support.
This routine performs the creation of a message queue utilizing the core message queue.
void _POSIX_Message_queue_Delete | ( | POSIX_Message_queue_Control * | the_mq | ) |
Delete a POSIX Message Queue.
This routine supports the mq_unlink and mq_close routines by doing most of the work involved with removing a message queue.
References _CORE_message_queue_Close(), _Objects_Close(), _POSIX_Message_queue_Free(), _POSIX_Message_queue_Information, _Workspace_Free(), CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED, Objects_Control::name, and printk().
RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free | ( | POSIX_Message_queue_Control * | the_mq | ) |
POSIX Message Queue Free.
This routine frees a message queue control block to the inactive chain of free message queue control blocks.
References _Objects_Free().
Referenced by _POSIX_Message_queue_Delete().
RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control* _POSIX_Message_queue_Get | ( | Objects_Id | id, |
Objects_Locations * | location | ||
) |
POSIX Message Queue Get.
This function maps message queue IDs to message queue control blocks. If ID corresponds to a local message queue, then it returns the_mq control pointer which maps to ID and location is set to OBJECTS_LOCAL. if the message queue ID is global and resides on a remote node, then location is set to OBJECTS_REMOTE, and the_message queue is undefined. Otherwise, location is set to OBJECTS_ERROR and the_mq is undefined.
References _Objects_Get(), and RTEMS_INLINE_ROUTINE.
void _POSIX_Message_queue_Manager_initialization | ( | void | ) |
Initialize message_queue manager related data structures.
This routine performs the initialization necessary for this manager.
References _Objects_Initialize_information(), and _POSIX_Message_queue_Information.
RTEMS_INLINE_ROUTINE int _POSIX_Message_queue_Name_to_id | ( | const char * | name, |
Objects_Id * | id, | ||
size_t * | len | ||
) |
References _POSIX_Name_to_id().
int _POSIX_Message_queue_Send_support | ( | mqd_t | mqdes, |
const char * | msg_ptr, | ||
size_t | msg_len, | ||
unsigned int | msg_prio, | ||
bool | wait, | ||
Watchdog_Interval | timeout | ||
) |
POSIX Message Queue Send Support.
This routine posts a message to a specified message queue.
int _POSIX_Message_queue_Translate_core_message_queue_return_code | ( | uint32_t | the_message_queue_status | ) |
POSIX Message Queue Translate Score Return Code.
References CORE_MESSAGE_QUEUE_STATUS_LAST.