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
RTEMS_COUNTING_SEMAPHORE
- no restriction on values
(default)
RTEMS_SIMPLE_BINARY_SEMAPHORE
- restrict values to
0 and 1, do not allow nested access, allow deletion of locked semaphore.
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-2008 OAR Corporation