mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-05 07:58:04 +02:00
164 lines
4.0 KiB
PHP
164 lines
4.0 KiB
PHP
{
|
|
This file is part of the Free Pascal run time library.
|
|
Copyright (c) 1999-2000 by Jonas Maebe,
|
|
member of the Free Pascal development team.
|
|
|
|
See the file COPYING.FPC, included in this distribution,
|
|
for details about the copyright.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
**********************************************************************}
|
|
|
|
|
|
Const { For sending a signal }
|
|
|
|
SA_NOCLDSTOP = $01;
|
|
SA_NOCLDWAIT = $02;
|
|
SA_RESETHAND = $04;
|
|
SA_NODEFER = $08;
|
|
SA_RESTART = $10;
|
|
SA_ONSTACK = $20;
|
|
SA_SIGINFO = $40;
|
|
SA_NOMASK = SA_NODEFER;
|
|
SA_STACK = SA_ONSTACK;
|
|
SA_ONESHOT = SA_RESETHAND;
|
|
|
|
SIG_BLOCK = 1;
|
|
SIG_UNBLOCK = 2;
|
|
SIG_SETMASK = 3;
|
|
|
|
{ values for ss_flags }
|
|
SS_ONSTACK = $1;
|
|
SS_DISABLE = $2;
|
|
|
|
MINSIGSTKSZ = 4096;
|
|
SIGSTKSZ = 16384;
|
|
|
|
{Haiku Checked}
|
|
{
|
|
The numbering of signals for BeOS attempts to maintain
|
|
some consistency with UN*X conventions so that things
|
|
like "kill -9" do what you expect.
|
|
}
|
|
|
|
SIG_DFL = 0;
|
|
SIG_IGN = 1;
|
|
SIG_ERR = -1;
|
|
SIG_HOLD = 3;
|
|
|
|
SIGHUP = 1;
|
|
SIGINT = 2;
|
|
SIGQUIT = 3;
|
|
SIGILL = 4;
|
|
SIGCHLD = 5;
|
|
SIGABRT = 6;
|
|
SIGPIPE = 7;
|
|
SIGFPE = 8;
|
|
SIGKILL = 9;
|
|
SIGSTOP = 10;
|
|
SIGSEGV = 11;
|
|
SIGCONT = 12;
|
|
SIGTSTP = 13;
|
|
SIGALRM = 14;
|
|
SIGTERM = 15;
|
|
SIGTTIN = 16;
|
|
SIGTTOU = 17;
|
|
SIGUSR1 = 18;
|
|
SIGUSR2 = 19;
|
|
SIGWINCH = 20;
|
|
SIGKILLTHR = 21;
|
|
SIGTRAP = 22;
|
|
SIGPOLL = 23;
|
|
SIGPROF = 24;
|
|
SIGSYS = 25;
|
|
SIGURG = 26;
|
|
SIGVTALRM = 27;
|
|
SIGXCPU = 28;
|
|
SIGXFSZ = 29;
|
|
SIGBUS = 30;
|
|
SIGRESERVED1 = 31;
|
|
SIGRESERVED2 = 32;
|
|
|
|
|
|
{ Include BeOS/Haiku specific vregs struct, which is architecture dependent
|
|
and maps directly as mcontext_t }
|
|
{$include sig_cpu.inc}
|
|
|
|
{$packrecords C}
|
|
type
|
|
mcontext_t = vregs;
|
|
Pvregs = ^vregs;
|
|
|
|
pstack_t = ^stack_t;
|
|
stack_t = record
|
|
ss_sp: pointer; {* signal stack base *}
|
|
ss_size: size_t; {* signal stack length *}
|
|
ss_flags: cint; {* SS_DISABLE and/or SS_ONSTACK *}
|
|
end;
|
|
TStack = stack_t;
|
|
PStack = pstack_t;
|
|
|
|
sigset_t = array[0..wordsinsigset-1] of dword;
|
|
|
|
PSigContext = ^SigContextRec;
|
|
PSigContextRec = ^SigContextRec;
|
|
SigContextRec = record
|
|
uc_link: PSigContextRec;
|
|
uc_sigmask: sigset_t;
|
|
uc_stack: stack_t;
|
|
uc_mcontext: mcontext_t;
|
|
end;
|
|
|
|
Sigval = record
|
|
case boolean of
|
|
{ Members as suggested by Annex C of POSIX 1003.1b. }
|
|
false : (sigval_int : Longint);
|
|
true : (sigval_ptr : Pointer);
|
|
end;
|
|
|
|
PSigInfo = ^SigInfo_t;
|
|
PSigInfo_t = ^SigInfo_t;
|
|
SigInfo_t = record
|
|
si_signo: cint; { signal number }
|
|
si_code: cint; { signal code }
|
|
si_errno: cint; { if non zero, an error number associated with this signal }
|
|
si_pid: pid_t; { sending process }
|
|
si_uid: uid_t; { sender's ruid }
|
|
si_addr: Pointer; { faulting instruction }
|
|
si_status: cint; { exit value }
|
|
si_band: clong; { band event for SIGPOLL }
|
|
si_value: SigVal; { signal value }
|
|
end;
|
|
TSigInfo = SigInfo_t;
|
|
TSigInfo_t = TSigInfo;
|
|
|
|
SignalHandler = Procedure(Sig : Longint);cdecl;
|
|
PSignalHandler = ^SignalHandler;
|
|
SignalRestorer = Procedure;cdecl;
|
|
PSignalRestorer = ^SignalRestorer;
|
|
SigActionHandler = procedure(Sig: Longint; SigInfo: PSigInfo; uContext : PSigContext);cdecl;
|
|
|
|
Sigset=sigset_t;
|
|
TSigset=sigset_t;
|
|
PSigSet = ^SigSet;
|
|
psigset_t=psigset;
|
|
|
|
PSigActionRec = ^SigActionRec;
|
|
SigActionRec = record
|
|
sa_handler : SigActionHandler;
|
|
sa_Mask : SigSet;
|
|
sa_Flags : Longint;
|
|
sa_userdata: pointer;
|
|
end;
|
|
|
|
|
|
{
|
|
Change action of process upon receipt of a signal.
|
|
Signum specifies the signal (all except SigKill and SigStop).
|
|
If Act is non-nil, it is used to specify the new action.
|
|
If OldAct is non-nil the previous action is saved there.
|
|
}
|