diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2012-06-24 22:28:35 +0000 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2012-06-24 22:28:35 +0000 |
commit | 3950ffe2a485479f6561c27364d3d7df5a21d124 (patch) | |
tree | 468c6e14449d1b1e279222ec32f676b0311917d2 /src/cmd/ksh93/include/fault.h | |
download | ksh-upstream.tar.gz |
Imported Upstream version 93u+upstream
Diffstat (limited to 'src/cmd/ksh93/include/fault.h')
-rw-r--r-- | src/cmd/ksh93/include/fault.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/src/cmd/ksh93/include/fault.h b/src/cmd/ksh93/include/fault.h new file mode 100644 index 0000000..e327903 --- /dev/null +++ b/src/cmd/ksh93/include/fault.h @@ -0,0 +1,127 @@ +/*********************************************************************** +* * +* This software is part of the ast package * +* Copyright (c) 1982-2011 AT&T Intellectual Property * +* and is licensed under the * +* Eclipse Public License, Version 1.0 * +* by AT&T Intellectual Property * +* * +* A copy of the License is available at * +* http://www.eclipse.org/org/documents/epl-v10.html * +* (with md5 checksum b35adb5213ca9657e911e9befb180842) * +* * +* Information and Software Systems Research * +* AT&T Research * +* Florham Park NJ * +* * +* David Korn <dgk@research.att.com> * +* * +***********************************************************************/ +#pragma prototyped +#ifndef SH_SIGBITS +/* + * UNIX shell + * S. R. Bourne + * Rewritten by David Korn + * + */ + +#include <sig.h> +#include <setjmp.h> +#include <error.h> +#include <sfio.h> +#include "FEATURE/setjmp" +#include "FEATURE/sigfeatures" + + +#ifndef SIGWINCH +# ifdef SIGWIND +# define SIGWINCH SIGWIND +# else +# ifdef SIGWINDOW +# define SIGWINCH SIGWINDOW +# endif +# endif +#endif + +typedef void (*SH_SIGTYPE)(int,void(*)(int)); + +#define SH_FORKLIM 16 /* fork timeout interval */ + +#define SH_TRAP 0200 /* bit for internal traps */ +#define SH_ERRTRAP 0 /* trap for non-zero exit status */ +#define SH_KEYTRAP 1 /* trap for keyboard event */ +#define SH_DEBUGTRAP 4 /* must be last internal trap */ + +#define SH_SIGBITS 8 +#define SH_SIGFAULT 1 /* signal handler is sh_fault */ +#define SH_SIGOFF 2 /* signal handler is SIG_IGN */ +#define SH_SIGSET 4 /* pending signal */ +#define SH_SIGTRAP 010 /* pending trap */ +#define SH_SIGDONE 020 /* default is exit */ +#define SH_SIGIGNORE 040 /* default is ingore signal */ +#define SH_SIGINTERACTIVE 0100 /* handle interactive specially */ +#define SH_SIGTSTP 0200 /* tstp signal received */ +#define SH_SIGALRM 0200 /* timer alarm received */ +#define SH_SIGTERM SH_SIGOFF /* term signal received */ +#define SH_SIGRUNTIME 0400 /* runtime value */ + +#define SH_SIGRTMIN 0 /* sh.sigruntime[] index */ +#define SH_SIGRTMAX 1 /* sh.sigruntime[] index */ + +/* + * These are longjmp values + */ + +#define SH_JMPDOT 2 +#define SH_JMPEVAL 3 +#define SH_JMPTRAP 4 +#define SH_JMPIO 5 +#define SH_JMPCMD 6 +#define SH_JMPFUN 7 +#define SH_JMPERRFN 8 +#define SH_JMPSUB 9 +#define SH_JMPERREXIT 10 +#define SH_JMPEXIT 11 +#define SH_JMPSCRIPT 12 + +struct openlist +{ + Sfio_t *strm; + struct openlist *next; +}; + +struct checkpt +{ + sigjmp_buf buff; + sigjmp_buf *prev; + int topfd; + int mode; + struct openlist *olist; +#if (ERROR_VERSION >= 20030214L) + Error_context_t err; +#else + struct errorcontext err; +#endif +}; + +#define sh_pushcontext(shp,bp,n)( (bp)->mode=(n) , (bp)->olist=0, \ + (bp)->topfd=shp->topfd, (bp)->prev=shp->jmplist, \ + (bp)->err = *ERROR_CONTEXT_BASE, \ + shp->jmplist = (sigjmp_buf*)(&(bp)->buff) \ + ) +#define sh_popcontext(shp,bp) (shp->jmplist=(bp)->prev, errorpop(&((bp)->err))) + +extern void sh_fault(int); +extern void sh_done(void*,int); +extern void sh_sigclear(int); +extern void sh_sigdone(void); +extern void sh_siginit(void*); +extern void sh_sigtrap(int); +extern void sh_sigreset(int); +extern void *sh_timeradd(unsigned long,int ,void (*)(void*),void*); +extern void timerdel(void*); + +extern const char e_alarm[]; + +#endif /* !SH_SIGBITS */ |