summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/threadsync.h
blob: fa7aeeb003043fd8106edccbeaaf8da63937093a (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
/**
 *  @file rtems/score/threadsync.h
 *
 *  @brief Synchronize Thread Blocking Operations with Actions in an ISR
 *
 *  This include file contains all constants and structures associated
 *  with synchronizing a thread blocking operation with potential
 *  actions in an ISR.
 */

/*
 *  COPYRIGHT (c) 1989-2008.
 *  On-Line Applications Research Corporation (OAR).
 *
 *  The license and distribution terms for this file may be
 *  found in the file LICENSE in this distribution or at
 *  http://www.rtems.org/license/LICENSE.
 */

#ifndef _RTEMS_SCORE_THREAD_SYNC_H
#define _RTEMS_SCORE_THREAD_SYNC_H

/**
 *  @defgroup ScoreThreadSync Thread Blocking Operation Synchronization Handler
 *
 *  @ingroup Score
 *
 *  This handler encapsulates functionality related to the management of
 *  synchronization critical sections during blocking operations.
 */
/**@{*/

#ifdef __cplusplus
extern "C" {
#endif

/**
 *  The following enumerated types indicate what happened while the thread
 *  blocking was in the synchronization window.
 */
typedef enum {
  THREAD_BLOCKING_OPERATION_SYNCHRONIZED,
  THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED,
  THREAD_BLOCKING_OPERATION_TIMEOUT,
  THREAD_BLOCKING_OPERATION_SATISFIED
}  Thread_blocking_operation_States;

/*
 *  Operations require a thread pointer so they are prototyped
 *  in thread.h
 */

#ifdef __cplusplus
}
#endif

/**@}*/

#endif
/* end of include file */