summaryrefslogtreecommitdiffstats
path: root/c/src/exec/rtems/include/rtems/rtems/eventset.h
blob: a25dabe58b1f71fb9331c2a4377503249ed6d8cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/*  eventset.h
 *
 *  This include file contains the information pertaining to the
 *  Event Sets Handler.  This handler provides methods for the manipulation
 *  of event sets which will be sent and received by tasks.
 *
 *  COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
 *  On-Line Applications Research Corporation (OAR).
 *  All rights assigned to U.S. Government, 1994.
 *
 *  This material may be reproduced by or for the U.S. Government pursuant
 *  to the copyright license under the clause at DFARS 252.227-7013.  This
 *  notice must appear in all copies of this file and its derivatives.
 *
 *  $Id$
 */

#ifndef __RTEMS_EVENT_SET_h
#define __RTEMS_EVENT_SET_h

#ifdef __cplusplus
extern "C" {
#endif

/*
 *  The following defines the type used to control event sets.
 */

typedef unsigned32 rtems_event_set;

/*
 *  The following constants define the individual events which may
 *  be used to compose an event set.
 */

#define RTEMS_PENDING_EVENTS      0           /* receive pending events   */
#define RTEMS_ALL_EVENTS  0xFFFFFFFF

#define RTEMS_EVENT_0     0x00000001
#define RTEMS_EVENT_1     0x00000002
#define RTEMS_EVENT_2     0x00000004
#define RTEMS_EVENT_3     0x00000008
#define RTEMS_EVENT_4     0x00000010
#define RTEMS_EVENT_5     0x00000020
#define RTEMS_EVENT_6     0x00000040
#define RTEMS_EVENT_7     0x00000080
#define RTEMS_EVENT_8     0x00000100
#define RTEMS_EVENT_9     0x00000200
#define RTEMS_EVENT_10    0x00000400
#define RTEMS_EVENT_11    0x00000800
#define RTEMS_EVENT_12    0x00001000
#define RTEMS_EVENT_13    0x00002000
#define RTEMS_EVENT_14    0x00004000
#define RTEMS_EVENT_15    0x00008000
#define RTEMS_EVENT_16    0x00010000
#define RTEMS_EVENT_17    0x00020000
#define RTEMS_EVENT_18    0x00040000
#define RTEMS_EVENT_19    0x00080000
#define RTEMS_EVENT_20    0x00100000
#define RTEMS_EVENT_21    0x00200000
#define RTEMS_EVENT_22    0x00400000
#define RTEMS_EVENT_23    0x00800000
#define RTEMS_EVENT_24    0x01000000
#define RTEMS_EVENT_25    0x02000000
#define RTEMS_EVENT_26    0x04000000
#define RTEMS_EVENT_27    0x08000000
#define RTEMS_EVENT_28    0x10000000
#define RTEMS_EVENT_29    0x20000000
#define RTEMS_EVENT_30    0x40000000
#define RTEMS_EVENT_31    0x80000000


/*
 *  The following constant is the value of an event set which
 *  has no events pending.
 */

#define EVENT_SETS_NONE_PENDING 0

/*
 *  _Event_sets_Is_empty
 *
 *  DESCRIPTION:
 *
 *  This function returns TRUE if on events are posted in the event_set,
 *  and FALSE otherwise.
 */

STATIC INLINE boolean _Event_sets_Is_empty(
  rtems_event_set the_event_set
);

/*
 *  _Event_sets_Post
 *
 *  DESCRIPTION:
 *
 *  This routine posts the given new_events into the event_set
 *  passed in.  The result is returned to the user in event_set.
 */

STATIC INLINE void _Event_sets_Post(
  rtems_event_set  the_new_events,
  rtems_event_set *the_event_set
);

/*
 *  _Event_sets_Get
 *
 *  DESCRIPTION:
 *
 *  This function returns the events in event_condition which are
 *  set in event_set.
 */

STATIC INLINE rtems_event_set _Event_sets_Get(
  rtems_event_set the_event_set,
  rtems_event_set the_event_condition
);

/*
 *  _Event_sets_Clear
 *
 *  DESCRIPTION:
 *
 *  This function removes the events in mask from the event_set
 *  passed in.  The result is returned to the user in event_set.
 */

STATIC INLINE rtems_event_set _Event_sets_Clear(
 rtems_event_set the_event_set,
 rtems_event_set the_mask
);

#include <rtems/eventset.inl>

#ifdef __cplusplus
}
#endif

#endif
/* end of include file */