⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coremsg.inl

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 INL
字号:
/*  coremsg.inl * *  This include file contains the static inline implementation of all *  inlined routines in the Core Message Handler. * *  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: coremsg.inl,v 1.13.4.2 2005/09/01 16:31:22 joel Exp $ */#ifndef __CORE_MESSAGE_QUEUE_inl#define __CORE_MESSAGE_QUEUE_inl#include <string.h>   /* needed for memcpy */ /*PAGE * *  _CORE_message_queue_Send * *  DESCRIPTION: * *  This routine sends a message to the end of the specified message queue. */ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Send(  CORE_message_queue_Control                *the_message_queue,  void                                      *buffer,  unsigned32                                 size,  Objects_Id                                 id,  CORE_message_queue_API_mp_support_callout  api_message_queue_mp_support,  boolean                                    wait,  Watchdog_Interval                          timeout){  return _CORE_message_queue_Submit(    the_message_queue,    buffer,    size,    id,#if defined(RTEMS_MULTIPROCESSING)    api_message_queue_mp_support,#else    NULL,#endif    CORE_MESSAGE_QUEUE_SEND_REQUEST,    wait,     /* sender may block */    timeout   /* timeout interval */  );} /*PAGE * *  _CORE_message_queue_Urgent * *  DESCRIPTION: * *  This routine sends a message to the front of the specified message queue. */ RTEMS_INLINE_ROUTINE CORE_message_queue_Status _CORE_message_queue_Urgent(  CORE_message_queue_Control                *the_message_queue,  void                                      *buffer,  unsigned32                                 size,  Objects_Id                                 id,  CORE_message_queue_API_mp_support_callout  api_message_queue_mp_support,  boolean                                    wait,  Watchdog_Interval                          timeout){  return _CORE_message_queue_Submit(    the_message_queue,    buffer,    size,    id,#if defined(RTEMS_MULTIPROCESSING)    api_message_queue_mp_support,#else    NULL,#endif    CORE_MESSAGE_QUEUE_URGENT_REQUEST,    wait,     /* sender may block */    timeout   /* timeout interval */ );}/*PAGE * *  _CORE_message_queue_Copy_buffer * *  DESCRIPTION: * *  This routine copies the contents of the source message buffer *  to the destination message buffer. */RTEMS_INLINE_ROUTINE void _CORE_message_queue_Copy_buffer (  void      *source,  void      *destination,  unsigned32 size){  memcpy(destination, source, size);}/*PAGE * *  _CORE_message_queue_Allocate_message_buffer * *  DESCRIPTION: * *  This function allocates a message buffer from the inactive *  message buffer chain. */RTEMS_INLINE_ROUTINE CORE_message_queue_Buffer_control *_CORE_message_queue_Allocate_message_buffer (    CORE_message_queue_Control *the_message_queue){   return (CORE_message_queue_Buffer_control *)     _Chain_Get( &the_message_queue->Inactive_messages );}/*PAGE * *  _CORE_message_queue_Free_message_buffer * *  DESCRIPTION: * *  This routine frees a message buffer to the inactive *  message buffer chain. */RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer (    CORE_message_queue_Control        *the_message_queue,    CORE_message_queue_Buffer_control *the_message){  _Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );}/*PAGE * *  _CORE_message_queue_Get_pending_message * *  DESCRIPTION: * *  This function removes the first message from the_message_queue *  and returns a pointer to it. */RTEMS_INLINE_ROUTINE  CORE_message_queue_Buffer_control *_CORE_message_queue_Get_pending_message (  CORE_message_queue_Control *the_message_queue){  return (CORE_message_queue_Buffer_control *)    _Chain_Get_unprotected( &the_message_queue->Pending_messages );}/*PAGE * *  _CORE_message_queue_Is_priority * *  DESCRIPTION: * *  This function returns TRUE if the priority attribute is *  enabled in the attribute_set and FALSE otherwise. */ RTEMS_INLINE_ROUTINE boolean _CORE_message_queue_Is_priority(  CORE_message_queue_Attributes *the_attribute){  return (the_attribute->discipline == CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY);}/*PAGE * *  _CORE_message_queue_Append_unprotected * *  DESCRIPTION: * *  This routine places the_message at the rear of the outstanding *  messages on the_message_queue. */RTEMS_INLINE_ROUTINE void _CORE_message_queue_Append_unprotected (  CORE_message_queue_Control        *the_message_queue,  CORE_message_queue_Buffer_control *the_message){  _Chain_Append_unprotected(    &the_message_queue->Pending_messages,    &the_message->Node  );}/*PAGE * *  _CORE_message_queue_Prepend_unprotected * *  DESCRIPTION: * *  This routine places the_message at the front of the outstanding *  messages on the_message_queue. */RTEMS_INLINE_ROUTINE void _CORE_message_queue_Prepend_unprotected (  CORE_message_queue_Control        *the_message_queue,  CORE_message_queue_Buffer_control *the_message){  _Chain_Prepend_unprotected(    &the_message_queue->Pending_messages,    &the_message->Node  );}/*PAGE * *  _CORE_message_queue_Is_null * *  DESCRIPTION: * *  This function returns TRUE if the_message_queue is TRUE and FALSE otherwise. */RTEMS_INLINE_ROUTINE boolean _CORE_message_queue_Is_null (  CORE_message_queue_Control *the_message_queue){  return ( the_message_queue == NULL  );}/*PAGE * *  _CORE_message_queue_Is_notify_enabled * *  DESCRIPTION: * *  This function returns TRUE if notification is enabled on this message *  queue and FALSE otherwise. */ RTEMS_INLINE_ROUTINE boolean _CORE_message_queue_Is_notify_enabled (  CORE_message_queue_Control *the_message_queue){  return (the_message_queue->notify_handler != NULL);} /*PAGE * *  _CORE_message_queue_Set_notify * *  DESCRIPTION: * *  This routine initializes the notification information for the_message_queue. */ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Set_notify (  CORE_message_queue_Control        *the_message_queue,  CORE_message_queue_Notify_Handler  the_handler,  void                              *the_argument){  the_message_queue->notify_handler  = the_handler;  the_message_queue->notify_argument = the_argument;}#endif/* end of include file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -