source: rtems/cpukit/rtems/src/msgqbroadcast.c @ 9b4422a2

4.11
Last change on this file since 9b4422a2 was 9b4422a2, checked in by Joel Sherrill <joel.sherrill@…>, on May 3, 2012 at 3:09:24 PM

Remove All CVS Id Strings Possible Using a Script

Script does what is expected and tries to do it as
smartly as possible.

+ remove occurrences of two blank comment lines

next to each other after Id string line removed.

+ remove entire comment blocks which only exited to

contain CVS Ids

+ If the processing left a blank line at the top of

a file, it was removed.

  • Property mode set to 100644
File size: 2.8 KB
Line 
1/*
2 *  Message Queue Manager
3 *
4 *
5 *  COPYRIGHT (c) 1989-2007.
6 *  On-Line Applications Research Corporation (OAR).
7 *
8 *  The license and distribution terms for this file may be
9 *  found in the file LICENSE in this distribution or at
10 *  http://www.rtems.com/license/LICENSE.
11 */
12
13#if HAVE_CONFIG_H
14#include "config.h"
15#endif
16
17#include <rtems/system.h>
18#include <rtems/score/sysstate.h>
19#include <rtems/score/chain.h>
20#include <rtems/score/isr.h>
21#include <rtems/score/coremsg.h>
22#include <rtems/score/object.h>
23#include <rtems/score/states.h>
24#include <rtems/score/thread.h>
25#include <rtems/score/wkspace.h>
26#if defined(RTEMS_MULTIPROCESSING)
27#include <rtems/score/mpci.h>
28#endif
29#include <rtems/rtems/status.h>
30#include <rtems/rtems/attr.h>
31#include <rtems/rtems/message.h>
32#include <rtems/rtems/options.h>
33#include <rtems/rtems/support.h>
34
35/*
36 *  rtems_message_queue_broadcast
37 *
38 *  This directive sends a message for every thread waiting on the queue
39 *  designated by id.
40 *
41 *  Input parameters:
42 *    id     - pointer to message queue
43 *    buffer - pointer to message buffer
44 *    size   - size of message to broadcast
45 *    count  - pointer to area to store number of threads made ready
46 *
47 *  Output parameters:
48 *    count             - number of threads made ready
49 *    RTEMS_SUCCESSFUL  - if successful
50 *    error code        - if unsuccessful
51 */
52
53rtems_status_code rtems_message_queue_broadcast(
54  rtems_id    id,
55  const void *buffer,
56  size_t      size,
57  uint32_t   *count
58)
59{
60  register Message_queue_Control *the_message_queue;
61  Objects_Locations               location;
62  CORE_message_queue_Status       core_status;
63
64  if ( !buffer )
65    return RTEMS_INVALID_ADDRESS;
66
67  if ( !count )
68    return RTEMS_INVALID_ADDRESS;
69
70  the_message_queue = _Message_queue_Get( id, &location );
71  switch ( location ) {
72
73    case OBJECTS_LOCAL:
74      core_status = _CORE_message_queue_Broadcast(
75                      &the_message_queue->message_queue,
76                      buffer,
77                      size,
78                      id,
79                      #if defined(RTEMS_MULTIPROCESSING)
80                        _Message_queue_Core_message_queue_mp_support,
81                      #else
82                        NULL,
83                      #endif
84                      count
85                    );
86
87      _Thread_Enable_dispatch();
88      return
89        _Message_queue_Translate_core_message_queue_return_code( core_status );
90
91#if defined(RTEMS_MULTIPROCESSING)
92    case OBJECTS_REMOTE:
93      _Thread_Executing->Wait.return_argument = count;
94
95      return
96        _Message_queue_MP_Send_request_packet(
97          MESSAGE_QUEUE_MP_BROADCAST_REQUEST,
98          id,
99          buffer,
100          &size,
101          0,                               /* option_set not used */
102          MPCI_DEFAULT_TIMEOUT
103        );
104#endif
105
106    case OBJECTS_ERROR:
107      break;
108  }
109  return RTEMS_INVALID_ID;
110}
Note: See TracBrowser for help on using the repository browser.