source: rtems/cpukit/score/include/rtems/score/interr.h @ 5870ac55

4.104.114.84.95
Last change on this file since 5870ac55 was 5870ac55, checked in by Joel Sherrill <joel.sherrill@…>, on 01/05/00 at 22:19:21

Added support for simple binary semaphores in addition to the high
power binary/mutex style semaphores already supported by RTEMS. This
was done at the request of Eric Norum <eric@…> in support
of his effort to port EPICS to RTEMS. This change consisted of
changing the nesting_allowed boolean into a lock_nesting_behavior
enumerated value as well as allowing the core mutex object to optionally
support ensuring that the holder of a binary semaphore released it.
Finally, a more subtle enhancement was to allow the non-holder to release
a priority inheritance/ceiling mutex and still allow the holding task
to return to its original priority.

  • Property mode set to 100644
File size: 2.2 KB
Line 
1/*  interr.h
2 *
3 *  This include file contains constants and prototypes related
4 *  to the Internal Error Handler.
5 *
6 *
7 *  COPYRIGHT (c) 1989-1999.
8 *  On-Line Applications Research Corporation (OAR).
9 *
10 *  The license and distribution terms for this file may be
11 *  found in the file LICENSE in this distribution or at
12 *  http://www.OARcorp.com/rtems/license.html.
13 *
14 *  $Id$
15 */
16
17#ifndef __RTEMS_INTERNAL_ERROR_h
18#define __RTEMS_INTERNAL_ERROR_h
19
20#ifdef __cplusplus
21extern "C" {
22#endif
23
24/*
25 *  This type lists the possible sources from which an error
26 *  can be reported.
27 */
28
29typedef enum {
30  INTERNAL_ERROR_CORE,
31  INTERNAL_ERROR_RTEMS_API,
32  INTERNAL_ERROR_POSIX_API,
33  INTERNAL_ERROR_ITRON_API
34} Internal_errors_Source;
35
36/*
37 *  A list of errors which are generated internally by the executive core.
38 */
39
40typedef enum {
41  INTERNAL_ERROR_NO_CONFIGURATION_TABLE,
42  INTERNAL_ERROR_NO_CPU_TABLE,
43  INTERNAL_ERROR_INVALID_WORKSPACE_ADDRESS,
44  INTERNAL_ERROR_TOO_LITTLE_WORKSPACE,
45  INTERNAL_ERROR_WORKSPACE_ALLOCATION,
46  INTERNAL_ERROR_INTERRUPT_STACK_TOO_SMALL,
47  INTERNAL_ERROR_THREAD_EXITTED,
48  INTERNAL_ERROR_INCONSISTENT_MP_INFORMATION,
49  INTERNAL_ERROR_INVALID_NODE,
50  INTERNAL_ERROR_NO_MPCI,
51  INTERNAL_ERROR_BAD_PACKET,
52  INTERNAL_ERROR_OUT_OF_PACKETS,
53  INTERNAL_ERROR_OUT_OF_GLOBAL_OBJECTS,
54  INTERNAL_ERROR_OUT_OF_PROXIES,
55  INTERNAL_ERROR_INVALID_GLOBAL_ID,
56  INTERNAL_ERROR_BAD_STACK_HOOK,
57  INTERNAL_ERROR_BAD_ATTRIBUTES
58} Internal_errors_Core_list;
59
60/*
61 *  This type holds the fatal error information.
62 */
63 
64typedef struct {
65  Internal_errors_Source  the_source;
66  boolean                 is_internal;
67  unsigned32              the_error;
68} Internal_errors_Information;
69
70/*
71 *  When a fatal error occurs, the error information is stored here.
72 */
73
74SCORE_EXTERN Internal_errors_Information Internal_errors_What_happened;
75
76/*
77 *  _Internal_error_Occurred
78 *
79 *  DESCRIPTION:
80 *
81 *  This routine is invoked when the application or the executive itself
82 *  determines that a fatal error has occurred.
83 */
84
85void volatile _Internal_error_Occurred(
86  Internal_errors_Source  the_source,
87  boolean                 is_internal,
88  unsigned32              the_error
89);
90
91#ifdef __cplusplus
92}
93#endif
94
95#endif
96/* end of include file */
Note: See TracBrowser for help on using the repository browser.