📄 mqueue.h
字号:
/* rtems/posix/mqueue.h * * This include file contains all the private support information for * POSIX Message Queues. * * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. * * $Id: mqueue.h,v 1.15.2.1 2003/09/04 18:47:11 joel Exp $ */ #ifndef __RTEMS_POSIX_MESSAGE_QUEUE_h#define __RTEMS_POSIX_MESSAGE_QUEUE_h #ifdef __cplusplusextern "C" {#endif#include <signal.h>#include <rtems/score/coremsg.h>#include <rtems/score/object.h>/* * Data Structure used to manage a POSIX message queue */ typedef struct { Objects_Control Object; int process_shared; boolean named; boolean linked; unsigned32 open_count; CORE_message_queue_Control Message_queue; struct sigevent notification;} POSIX_Message_queue_Control;typedef struct { Objects_Control Object; POSIX_Message_queue_Control *Queue; int oflag;} POSIX_Message_queue_Control_fd;/* * The following defines the information control block used to manage * this class of objects. The second item is used to manage the set * of "file descriptors" associated with the message queues. */ POSIX_EXTERN Objects_Information _POSIX_Message_queue_Information;POSIX_EXTERN Objects_Information _POSIX_Message_queue_Information_fds; /* * _POSIX_Message_queue_Manager_initialization * * DESCRIPTION: * * This routine performs the initialization necessary for this manager. */ void _POSIX_Message_queue_Manager_initialization( unsigned32 maximum_message_queues); /* * * _POSIX_Message_queue_Create_support * * DESCRIPTION: * * This routine performs the creation of a message queue utilizing the * core message queue. */ int _POSIX_Message_queue_Create_support( const char *name, int pshared, struct mq_attr *attr, POSIX_Message_queue_Control **message_queue);/* * _POSIX_Message_queue_Delete * * DESCRIPTION: * * This routine supports the mq_unlink and mq_close routines by * doing most of the work involved with removing a message queue. */ void _POSIX_Message_queue_Delete( POSIX_Message_queue_Control *the_mq);/* * _POSIX_Message_queue_Receive_support * * DESCRIPTION: * * This routine supports the various flavors of receiving a message. */ssize_t _POSIX_Message_queue_Receive_support( mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned int *msg_prio, Watchdog_Interval timeout);/* * _POSIX_Message_queue_Send_support * * DESCRIPTION: * * This routine posts a message to a specified message queue. */int _POSIX_Message_queue_Send_support( mqd_t mqdes, const char *msg_ptr, unsigned32 msg_len, unsigned32 msg_prio, Watchdog_Interval timeout);/* * _POSIX_Message_queue_Allocate * * DESCRIPTION: * * This function allocates a message queue control block from * the inactive chain of free message queue control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Allocate( void ); /* * _POSIX_Message_queue_Free * * DESCRIPTION: * * This routine frees a message queue control block to the * inactive chain of free message queue control blocks. */ RTEMS_INLINE_ROUTINE void _POSIX_Message_queue_Free ( POSIX_Message_queue_Control *the_mq); /* * _POSIX_Message_queue_Get * * DESCRIPTION: * * 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. */ RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Get ( Objects_Id id, Objects_Locations *location); /* * _POSIX_Message_queue_Is_null * * DESCRIPTION: * * This function returns TRUE if the_message_queue is NULL and FALSE otherwise. */ RTEMS_INLINE_ROUTINE boolean _POSIX_Message_queue_Is_null ( POSIX_Message_queue_Control *the_mq);/* * _POSIX_Message_queue_Name_to_id * * DESCRIPTION: * * This routine looks up the specified name for a message queue and returns the * id of the message queue associated with it. */int _POSIX_Message_queue_Name_to_id( const char *name, Objects_Id *id);/* * _POSIX_Message_queue_Priority_to_core * * DESCRIPTION: * * XXX */ RTEMS_INLINE_ROUTINE CORE_message_queue_Submit_types _POSIX_Message_queue_Priority_to_core( unsigned int priority);/* * _POSIX_Message_queue_Priority_from_core * * DESCRIPTION: * * XXX */ RTEMS_INLINE_ROUTINE unsigned int _POSIX_Message_queue_Priority_from_core( CORE_message_queue_Submit_types priority);/*PAGE * * _POSIX_Message_queue_Translate_core_message_queue_return_code * * DESCRIPTION: * * XXX */int _POSIX_Message_queue_Translate_core_message_queue_return_code( unsigned32 the_message_queue_status);#include <rtems/posix/mqueue.inl>#if defined(RTEMS_MULTIPROCESSING)#include <rtems/posix/mqueuemp.h>#endif#ifdef __cplusplus}#endif #endif/* end of include file */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -