RTEMS  5.1
messageimpl.h
Go to the documentation of this file.
1 
9 /* COPYRIGHT (c) 1989-2008.
10  * On-Line Applications Research Corporation (OAR).
11  *
12  * The license and distribution terms for this file may be
13  * found in the file LICENSE in this distribution or at
14  * http://www.rtems.org/license/LICENSE.
15  */
16 
17 #ifndef _RTEMS_RTEMS_MESSAGEIMPL_H
18 #define _RTEMS_RTEMS_MESSAGEIMPL_H
19 
21 #include <rtems/score/objectimpl.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
41 typedef enum {
53 
65  rtems_id id,
66  const void *buffer,
67  size_t size,
68  Message_queue_Submit_types submit_type
69 );
70 
79  Message_queue_Control *the_message_queue
80 )
81 {
82  _Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
83 }
84 
86  Objects_Id id,
87  Thread_queue_Context *queue_context
88 )
89 {
90  _Thread_queue_Context_initialize( queue_context );
92  id,
93  &queue_context->Lock_context.Lock_context,
95  );
96 }
97 
98 RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Allocate( void )
99 {
100  return (Message_queue_Control *)
102 }
103 
106 #ifdef __cplusplus
107 }
108 #endif
109 
110 #if defined(RTEMS_MULTIPROCESSING)
111 #include <rtems/rtems/msgmp.h>
112 #endif
113 
114 #endif
115 /* end of include file */
RTEMS_INLINE_ROUTINE void _Message_queue_Free(Message_queue_Control *the_message_queue)
Deallocates a message queue control block into the inactive chain of free message queue control block...
Definition: messageimpl.h:78
Definition: messageimpl.h:51
Thread queue context for the thread queue methods.
Definition: threadq.h:198
Inlined Routines in the Core Message Handler.
Objects_Control Object
Definition: messagedata.h:40
Message_queue_Submit_types
Definition: messageimpl.h:41
Message Manager MP Support.
rtems_status_code _Message_queue_Submit(rtems_id id, const void *buffer, size_t size, Message_queue_Submit_types submit_type)
Message_queue_Submit.
Definition: messagedata.h:38
Objects_Control * _Objects_Allocate(Objects_Information *information)
Allocates an object.
Definition: objectallocate.c:42
Objects_Information _Message_queue_Information
The Classic Message Queue objects information.
rtems_status_code
Classic API Status.
Definition: status.h:43
Thread_queue_Lock_context Lock_context
The lock context for the thread queue acquire and release operations.
Definition: threadq.h:203
RTEMS_INLINE_ROUTINE void _Objects_Free(Objects_Information *information, Objects_Control *the_object)
Frees an object.
Definition: objectimpl.h:930
Classic Message Queue Manager API.
RTEMS_INLINE_ROUTINE void _Thread_queue_Context_initialize(Thread_queue_Context *queue_context)
Initializes a thread queue context.
Definition: threadqimpl.h:152
uint32_t Objects_Id
Definition: object.h:80
Objects_Control * _Objects_Get(Objects_Id id, ISR_lock_Context *lock_context, const Objects_Information *information)
Maps the specified object identifier to the associated local object control block.
Definition: objectgetlocal.c:28
Objects_Id rtems_id
Used to manage and manipulate RTEMS object identifiers.
Definition: types.h:83
ISR_lock_Context Lock_context
The lock context for the thread queue acquire and release operations.
Definition: threadq.h:130
Definition: messageimpl.h:46
Inlined Routines in the Object Handler.
unsigned size
Definition: tte.h:74
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:66