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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [compat/] [posix/] [v2_0/] [include/] [sigsetjmp.h] - Blame information for rev 174

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 27 unneback
#ifndef CYGONCE_SIGSETJMP_H
2
#define CYGONCE_SIGSETJMP_H
3
//=============================================================================
4
//
5
//      sigsetjmp.h
6
//
7
//      POSIX sigsetjmp header
8
//
9
//=============================================================================
10
//####ECOSGPLCOPYRIGHTBEGIN####
11
// -------------------------------------------
12
// This file is part of eCos, the Embedded Configurable Operating System.
13
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
14
//
15
// eCos is free software; you can redistribute it and/or modify it under
16
// the terms of the GNU General Public License as published by the Free
17
// Software Foundation; either version 2 or (at your option) any later version.
18
//
19
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
20
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
21
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
22
// for more details.
23
//
24
// You should have received a copy of the GNU General Public License along
25
// with eCos; if not, write to the Free Software Foundation, Inc.,
26
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
27
//
28
// As a special exception, if other files instantiate templates or use macros
29
// or inline functions from this file, or you compile this file and link it
30
// with other works to produce a work based on this file, this file does not
31
// by itself cause the resulting work to be covered by the GNU General Public
32
// License. However the source code for this file must still be made available
33
// in accordance with section (3) of the GNU General Public License.
34
//
35
// This exception does not invalidate any other reasons why a work based on
36
// this file might be covered by the GNU General Public License.
37
//
38
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
39
// at http://sources.redhat.com/ecos/ecos-license/
40
// -------------------------------------------
41
//####ECOSGPLCOPYRIGHTEND####
42
//=============================================================================
43
//#####DESCRIPTIONBEGIN####
44
//
45
// Author(s):     nickg, jlarmour
46
// Contributors:  
47
// Date:          2000-03-17
48
// Purpose:       POSIX sigsetjmp header
49
// Description:   This header contains all the definitions needed to support
50
//                the POSIX sigsetjmp/siglongjmp API under eCos.
51
//              
52
// Usage:         This file must be included indirectly via
53
//                the C library setjmp.h header.
54
//              
55
//
56
//####DESCRIPTIONEND####
57
//
58
//=============================================================================
59
 
60
#include <signal.h>
61
#include <cyg/hal/hal_arch.h>       // hal_jmp_buf
62
 
63
//=============================================================================
64
// sigjmp_buf structure
65
// The API requires this to be an array type, but this array actually
66
// contains three fields:
67
// 0..sizeof(hal_jmp_buf)-1               HAL jump buffer
68
// sizeof(hal_jmp_buf)                    savemask value (an int)
69
// sizeof(hal_jmp_buf)+sizeof(int)...     sigset_t containing saved mask
70
 
71
typedef struct {
72
    hal_jmp_buf __jmp_buf;
73
    int  __savemask;
74
    sigset_t __sigsavemask;
75
} sigjmp_buf[1];
76
 
77
//=============================================================================
78
// sigsetjmp() macro
79
 
80
#define sigsetjmp( _env_, _savemask_ )                                        \
81
(                                                                             \
82
 ((_env_)[0].__savemask = _savemask_),                                        \
83
 ((_savemask_)?pthread_sigmask(SIG_BLOCK,NULL,&((_env_)[0].__sigsavemask)):0),\
84
 hal_setjmp((_env_)[0].__jmp_buf)                                             \
85
)
86
 
87
//=============================================================================
88
// siglongjmp function
89
 
90
__externC void siglongjmp( sigjmp_buf env, int val );
91
 
92
//-----------------------------------------------------------------------------
93
#endif // ifndef CYGONCE_SIGSETJMP_H
94
// End of sigsetjmp.h

powered by: WebSVN 2.1.0

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