(linenum→info "unix/slp.c:2238")

glibc/2.7/hurd/hurdfault.h

    1: /* Declarations for handling faults in the signal thread.
    2:    Copyright (C) 1994, 1996 Free Software Foundation, Inc.
    3:    This file is part of the GNU C Library.
    4: 
    5:    The GNU C Library is free software; you can redistribute it and/or
    6:    modify it under the terms of the GNU Lesser General Public
    7:    License as published by the Free Software Foundation; either
    8:    version 2.1 of the License, or (at your option) any later version.
    9: 
   10:    The GNU C Library is distributed in the hope that it will be useful,
   11:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   12:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   13:    Lesser General Public License for more details.
   14: 
   15:    You should have received a copy of the GNU Lesser General Public
   16:    License along with the GNU C Library; if not, write to the Free
   17:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   18:    02111-1307 USA.  */
   19: 
   20: #ifndef _HURD_FAULT_H
   21: #define _HURD_FAULT_H
   22: 
   23: #include <hurd/sigpreempt.h>
   24: #include <setjmp.h>
   25: 
   26: /* Call this before code that might fault in the signal thread; SIGNO is
   27:    the signal expected to possibly arrive.  This behaves like setjmp: it
   28:    returns zero the first time, and returns again nonzero if the signal
   29:    does arrive.  */
   30: 
   31: #define _hurdsig_catch_fault(sigset, firstcode, lastcode)       \
   32:   (_hurdsig_fault_preemptor.signals = (sigset),                 \
   33:    _hurdsig_fault_preemptor.first = (long int) (firstcode),     \
   34:    _hurdsig_fault_preemptor.last = (long int) (lastcode),       \
   35:    setjmp (_hurdsig_fault_env))
   36: 
   37: /* Call this at the end of a section protected by _hurdsig_catch_fault.  */
   38: 
   39: #define _hurdsig_end_catch_fault() \
   40:   (_hurdsig_fault_preemptor.signals = 0)
   41: 
   42: extern jmp_buf _hurdsig_fault_env;
   43: extern struct hurd_signal_preemptor _hurdsig_fault_preemptor;
   44: 
   45: 
   46: #define _hurdsig_catch_memory_fault(object) \
   47:   _hurdsig_catch_fault (sigmask (SIGSEGV) | sigmask (SIGBUS), \
   48:                         (object), (object) + 1)
   49: 
   50: 
   51: #endif  /* hurdfault.h */
Syntax (Markdown)