39 if ( the_message != NULL ) {
42 *size_p = the_message->
size;
47 #if !defined(RTEMS_SCORE_COREMSG_ENABLE_BLOCKING_SEND) 54 return STATUS_SUCCESSFUL;
70 if ( the_thread == NULL ) {
76 return STATUS_SUCCESSFUL;
97 return STATUS_SUCCESSFUL;
104 return STATUS_UNSATISFIED;
static __inline__ CORE_message_queue_Buffer * _CORE_message_queue_Get_pending_message(CORE_message_queue_Control *the_message_queue)
Gets first message of message queue and removes it.
static __inline__ Thread_Control * _Thread_queue_First_locked(Thread_queue_Control *the_thread_queue, const Thread_queue_Operations *operations)
Returns the first thread on the thread queue if it exists, otherwise NULL.
Thread_Wait_information Wait
Thread queue context for the thread queue methods.
Inlined Routines in the Core Message Handler.
int CORE_message_queue_Submit_types
The modes in which a message may be submitted to a message queue.
Data Related to the Management of Processor Interrupt Levels.
static __inline__ void _CORE_message_queue_Free_message_buffer(CORE_message_queue_Control *the_message_queue, CORE_message_queue_Buffer *the_message)
Frees a message buffer to inactive message buffer chain.
static __inline__ void _CORE_message_queue_Copy_buffer(const void *source, void *destination, size_t size)
Copies the source message buffer to the destination message buffer.
Status_Control _CORE_message_queue_Seize(CORE_message_queue_Control *the_message_queue, Thread_Control *executing, void *buffer, size_t *size_p, bool wait, Thread_queue_Context *queue_context)
Seizes a message from the message queue.
const Thread_queue_Operations * operations
The thread queue operations according to the blocking discipline.
uint32_t number_of_pending_messages
Thread_queue_Queue Queue
The actual thread queue.
static __inline__ void _Thread_queue_Context_set_thread_state(Thread_queue_Context *queue_context, States_Control thread_state)
Sets the thread state for the thread to enqueue in the thread queue context.
void _CORE_message_queue_Insert_message(CORE_message_queue_Control *the_message_queue, CORE_message_queue_Buffer *the_message, const void *content_source, size_t content_size, CORE_message_queue_Submit_types submit_type)
Inserts a message into the message queue.
size_t size
This member defines the size of this message.
size_t buffer[RTEMS_ZERO_LENGTH_ARRAY]
This member contains the actual message.
static __inline__ int _CORE_message_queue_Get_message_priority(const CORE_message_queue_Buffer *the_message)
Gets message priority.
The structure is used to organize message buffers of a message queue.
Inlined Routines Associated with Thread State Information.
#define STATES_WAITING_FOR_MESSAGE
Control block used to manage each message queue.
Inlined Routines from the Thread Handler.
static __inline__ Status_Control _Thread_Wait_get_status(const Thread_Control *the_thread)
Get the status of the wait return code of the thread.
void _Thread_queue_Enqueue(Thread_queue_Queue *queue, const Thread_queue_Operations *operations, Thread_Control *the_thread, Thread_queue_Context *queue_context)
Blocks the thread and places it on the thread queue.
static __inline__ void _CORE_message_queue_Release(CORE_message_queue_Control *the_message_queue, Thread_queue_Context *queue_context)
Releases the message queue.
void _Thread_queue_Extract_critical(Thread_queue_Queue *queue, const Thread_queue_Operations *operations, Thread_Control *the_thread, Thread_queue_Context *queue_context)
Extracts the thread from the thread queue and unblocks it.
Thread_queue_Control Wait_queue