In general, an attribute set is built by a bitwise OR of the desired attribute components. The following table lists the set of valid semaphore attributes:
RTEMS_FIFO
- tasks wait by FIFO (default)
RTEMS_PRIORITY
- tasks wait by priority
RTEMS_BINARY_SEMAPHORE
- restrict values to
0 and 1 (default)
RTEMS_COUNTING_SEMAPHORE
- no restriction on values
RTEMS_NO_INHERIT_PRIORITY
- do not use priority
inheritance (default)
RTEMS_INHERIT_PRIORITY
- use priority inheritance
RTEMS_PRIORITY_CEILING
- use priority ceiling
RTEMS_NO_PRIORITY_CEILING
- do not use priority
ceiling (default)
RTEMS_LOCAL
- local task (default)
RTEMS_GLOBAL
- global task
Attribute values are specifically designed to be
mutually exclusive, therefore bitwise OR and addition operations
are equivalent as long as each attribute appears exactly once in
the component list. An attribute listed as a default is not
required to appear in the attribute list, although it is a good
programming practice to specify default attributes. If all
defaults are desired, the attribute
RTEMS_DEFAULT_ATTRIBUTES
should be
specified on this call.
This example demonstrates the attribute_set parameter
needed to create a local semaphore with the task priority
waiting queue discipline. The attribute_set parameter passed to
the rtems_semaphore_create
directive could be either
RTEMS_PRIORITY
or
RTEMS_LOCAL | RTEMS_PRIORITY
.
The attribute_set parameter can be set to RTEMS_PRIORITY
because RTEMS_LOCAL
is the default for all created tasks. If a
similar semaphore were to be known globally, then the
attribute_set parameter would be
RTEMS_GLOBAL | RTEMS_PRIORITY
.
Copyright © 1988-1998 OAR Corporation