OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [ecos-2.0/] [packages/] [kernel/] [v2_0/] [include/] [except.hxx] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1254 phoenix
#ifndef CYGONCE_KERNEL_EXCEPT_HXX
2
#define CYGONCE_KERNEL_EXCEPT_HXX
3
 
4
//==========================================================================
5
//
6
//      except.hxx
7
//
8
//      Exception handling declarations
9
//
10
//==========================================================================
11
//####ECOSGPLCOPYRIGHTBEGIN####
12
// -------------------------------------------
13
// This file is part of eCos, the Embedded Configurable Operating System.
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
15
//
16
// eCos is free software; you can redistribute it and/or modify it under
17
// the terms of the GNU General Public License as published by the Free
18
// Software Foundation; either version 2 or (at your option) any later version.
19
//
20
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
21
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
22
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
23
// for more details.
24
//
25
// You should have received a copy of the GNU General Public License along
26
// with eCos; if not, write to the Free Software Foundation, Inc.,
27
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
28
//
29
// As a special exception, if other files instantiate templates or use macros
30
// or inline functions from this file, or you compile this file and link it
31
// with other works to produce a work based on this file, this file does not
32
// by itself cause the resulting work to be covered by the GNU General Public
33
// License. However the source code for this file must still be made available
34
// in accordance with section (3) of the GNU General Public License.
35
//
36
// This exception does not invalidate any other reasons why a work based on
37
// this file might be covered by the GNU General Public License.
38
//
39
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
40
// at http://sources.redhat.com/ecos/ecos-license/
41
// -------------------------------------------
42
//####ECOSGPLCOPYRIGHTEND####
43
//==========================================================================
44
//#####DESCRIPTIONBEGIN####
45
//
46
// Author(s):    nickg
47
// Contributors: nickg, jlarmour
48
// Date:         1999-02-16
49
// Purpose:      Define exception interfaces
50
// Description:  The classes defined here collectively implement the
51
//               internal API used to register, manage and deliver
52
//               exceptions.
53
// Usage:        #include 
54
//
55
//####DESCRIPTIONEND####
56
//
57
//==========================================================================
58
 
59
#include 
60
#include           // assertion macros
61
#include            // exception defines
62
 
63
// -------------------------------------------------------------------------
64
// Exception handler function prototype
65
 
66
typedef void cyg_exception_handler(
67
    CYG_ADDRWORD        data,                   // user supplied data
68
    cyg_code            exception_number,       // exception being raised
69
    CYG_ADDRWORD        exception_info          // any exception specific info
70
    );
71
 
72
// -------------------------------------------------------------------------
73
// Exception delivery interface. This function is exported to the HAL which
74
// invokes it for all exceptions that it is not able to handle itself.
75
 
76
externC void cyg_hal_deliver_exception( CYG_WORD code, CYG_ADDRWORD data );
77
 
78
// -------------------------------------------------------------------------
79
// Exception control class. Depending on the configuration there is either
80
// one of these per thread, or one for the entire system.
81
 
82
#ifdef CYGPKG_KERNEL_EXCEPTIONS
83
 
84
class Cyg_Exception_Control
85
{
86
 
87
#ifdef CYGSEM_KERNEL_EXCEPTIONS_DECODE
88
    cyg_exception_handler   *exception_handler[CYGNUM_HAL_EXCEPTION_COUNT];
89
 
90
    CYG_ADDRWORD            exception_data[CYGNUM_HAL_EXCEPTION_COUNT];
91
#else
92
    cyg_exception_handler   *exception_handler; // Handler function
93
 
94
    CYG_ADDRWORD            exception_data;     // Handler data
95
#endif
96
 
97
public:
98
 
99
    Cyg_Exception_Control();
100
 
101
    // Register an exception handler for either the specific exception
102
    // or for all exceptions.
103
    void register_exception(
104
        cyg_code                exception_number,       // exception number
105
        cyg_exception_handler   handler,                // handler function
106
        CYG_ADDRWORD            data,                   // data argument
107
        cyg_exception_handler   **old_handler,          // handler function
108
        CYG_ADDRWORD            *old_data               // data argument
109
        );
110
 
111
    // Remove an exception handler.
112
    void deregister_exception(
113
        cyg_code                exception_number        // exception number
114
        );
115
 
116
    // Deliver the given exception now by invoking the appropriate
117
    // exception handler.
118
    void deliver_exception(
119
        cyg_code            exception_number,       // exception being raised
120
        CYG_ADDRWORD        exception_info          // exception specific info
121
        );
122
};
123
 
124
#endif
125
 
126
// -------------------------------------------------------------------------
127
#endif // ifndef CYGONCE_KERNEL_EXCEPT_HXX
128
// EOF except.hxx

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.