source: rtems/cpukit/score/include/rtems/score/corebarrier.h @ 7e119990

4.115
Last change on this file since 7e119990 was c499856, checked in by Chris Johns <chrisj@…>, on 03/20/14 at 21:10:47

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 2.3 KB
Line 
1/**
2 *  @file rtems/score/corebarrier.h
3 *
4 *  @brief Constants and Structures Associated with the Barrier Handler
5 *
6 *  This include file contains all the constants and structures associated
7 *  with the Barrier Handler.
8 */
9
10/*
11 *  COPYRIGHT (c) 1989-2007.
12 *  On-Line Applications Research Corporation (OAR).
13 *
14 *  The license and distribution terms for this file may be
15 *  found in the file LICENSE in this distribution or at
16 *  http://www.rtems.org/license/LICENSE.
17 */
18
19#ifndef _RTEMS_SCORE_COREBARRIER_H
20#define _RTEMS_SCORE_COREBARRIER_H
21
22#include <rtems/score/threadq.h>
23
24#ifdef __cplusplus
25extern "C" {
26#endif
27
28/**
29 *  @defgroup ScoreBarrier Barrier Handler
30 *
31 *  @ingroup Score
32 *
33 *  This handler encapsulates functionality which provides the foundation
34 *  Barrier services used in all of the APIs supported by RTEMS.
35 */
36/**@{*/
37
38/**
39 *  Flavors of barriers.
40 */
41typedef enum {
42  /** This specifies that the barrier will automatically release when
43   *  the user specified number of threads have arrived at the barrier.
44   */
45  CORE_BARRIER_AUTOMATIC_RELEASE,
46  /** This specifies that the user will have to manually release the barrier
47   *  in order to release the waiting threads.
48   */
49  CORE_BARRIER_MANUAL_RELEASE
50}   CORE_barrier_Disciplines;
51
52/**
53 *  The following defines the control block used to manage the
54 *  attributes of each barrier.
55 */
56typedef struct {
57  /** This field indicates whether the barrier is automatic or manual.
58   */
59  CORE_barrier_Disciplines  discipline;
60  /** This element indicates the number of threads which must arrive at the
61   *  barrier to trip the automatic release.
62   */
63  uint32_t                  maximum_count;
64}   CORE_barrier_Attributes;
65
66/**
67 *  The following defines the control block used to manage each
68 *  barrier.
69 */
70typedef struct {
71  /** This field is the Waiting Queue used to manage the set of tasks
72   *  which are blocked waiting for the barrier to be released.
73   */
74  Thread_queue_Control     Wait_queue;
75  /** This element is the set of attributes which define this instance's
76   *  behavior.
77   */
78  CORE_barrier_Attributes  Attributes;
79  /** This element contains the current number of thread waiting for this
80   *  barrier to be released. */
81  uint32_t                 number_of_waiting_threads;
82}   CORE_barrier_Control;
83
84/**@}*/
85
86#ifdef __cplusplus
87}
88#endif
89
90#endif
91/*  end of include file */
Note: See TracBrowser for help on using the repository browser.