RTEMS 6.1-rc1
messageimpl.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-2-Clause */
2
12/* COPYRIGHT (c) 1989-2008.
13 * On-Line Applications Research Corporation (OAR).
14 *
15 * Redistribution and use in source and binary forms, with or without
16 * modification, are permitted provided that the following conditions
17 * are met:
18 * 1. Redistributions of source code must retain the above copyright
19 * notice, this list of conditions and the following disclaimer.
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in the
22 * documentation and/or other materials provided with the distribution.
23 *
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
28 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 */
36
37#ifndef _RTEMS_RTEMS_MESSAGEIMPL_H
38#define _RTEMS_RTEMS_MESSAGEIMPL_H
39
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
63typedef enum {
75
87 rtems_id id,
88 const void *buffer,
89 size_t size,
91);
92
100static inline void _Message_queue_Free (
101 Message_queue_Control *the_message_queue
102)
103{
104 _Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
105}
106
107static inline Message_queue_Control *_Message_queue_Get(
108 Objects_Id id,
109 Thread_queue_Context *queue_context
110)
111{
112 _Thread_queue_Context_initialize( queue_context );
114 id,
115 &queue_context->Lock_context.Lock_context,
117 );
118}
119
120static inline Message_queue_Control *_Message_queue_Allocate( void )
121{
122 return (Message_queue_Control *)
124}
125
139 rtems_id *id,
141);
142
145#ifdef __cplusplus
146}
147#endif
148
149#if defined(RTEMS_MULTIPROCESSING)
150#include <rtems/rtems/msgmp.h>
151#endif
152
153#endif
154/* end of include file */
This header file provides interfaces of the Message Queue Handler which are used by the implementatio...
rtems_status_code
This enumeration provides status codes for directives of the Classic API.
Definition: status.h:85
Objects_Id rtems_id
This type represents RTEMS object identifiers.
Definition: types.h:94
Objects_Information _Message_queue_Information
The Classic Message Queue objects information.
Message_queue_Submit_types
Definition: messageimpl.h:63
rtems_status_code _Message_queue_Create(const rtems_message_queue_config *config, rtems_id *id, CORE_message_queue_Allocate_buffers allocate_buffers)
Creates a message queue.
Definition: msgqconstruct.c:84
rtems_status_code _Message_queue_Submit(rtems_id id, const void *buffer, size_t size, Message_queue_Submit_types submit_type)
Message_queue_Submit.
@ MESSAGE_QUEUE_URGENT_REQUEST
Definition: messageimpl.h:73
@ MESSAGE_QUEUE_SEND_REQUEST
Definition: messageimpl.h:68
void *(* CORE_message_queue_Allocate_buffers)(CORE_message_queue_Control *the_message_queue, size_t size, const void *arg)
This handler shall allocate the message buffer storage area for a message queue.
Definition: coremsgimpl.h:107
Objects_Control * _Objects_Allocate(Objects_Information *information)
Allocates an object.
Definition: objectallocate.c:43
uint32_t Objects_Id
Definition: object.h:101
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:43
This header file provides data structures used by the implementation and the Application Configuratio...
This header file provides the implementation interfaces of the Message Manager Multiprocessing (MP) S...
This header file provides interfaces of the Object Handler which are only used by the implementation.
Definition: messagedata.h:58
Objects_Control Object
Definition: messagedata.h:60
Thread queue context for the thread queue methods.
Definition: threadq.h:216
Thread_queue_Lock_context Lock_context
The lock context for the thread queue acquire and release operations.
Definition: threadq.h:221
ISR_lock_Context Lock_context
The lock context for the thread queue acquire and release operations.
Definition: threadq.h:148
Definition: deflate.c:114
This structure defines the configuration of a message queue constructed by rtems_message_queue_constr...
Definition: message.h:90
unsigned size
Definition: tte.h:1