mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-15 10:05:59 +02:00
148 lines
3.6 KiB
PHP
148 lines
3.6 KiB
PHP
{
|
|
$Id$
|
|
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.
|
|
|
|
**********************************************************************}
|
|
|
|
{$packrecords C}
|
|
const
|
|
SI_PAD_SIZE = ((128/sizeof(longint)) - 3);
|
|
|
|
type
|
|
tfpreg = record
|
|
significand: array[0..3] of word;
|
|
exponent: word;
|
|
end;
|
|
|
|
pfpstate = ^tfpstate;
|
|
tfpstate = record
|
|
cw, sw, tag, ipoff, cssel, dataoff, datasel: cardinal;
|
|
st: array[0..7] of tfpreg;
|
|
status: cardinal;
|
|
end;
|
|
|
|
PSigContextRec = ^SigContextRec;
|
|
SigContextRec = record
|
|
gs, __gsh: word;
|
|
fs, __fsh: word;
|
|
es, __esh: word;
|
|
ds, __dsh: word;
|
|
edi: cardinal;
|
|
esi: cardinal;
|
|
ebp: cardinal;
|
|
esp: cardinal;
|
|
ebx: cardinal;
|
|
edx: cardinal;
|
|
ecx: cardinal;
|
|
eax: cardinal;
|
|
trapno: cardinal;
|
|
err: cardinal;
|
|
eip: cardinal;
|
|
cs, __csh: word;
|
|
eflags: cardinal;
|
|
esp_at_signal: cardinal;
|
|
ss, __ssh: word;
|
|
fpstate: pfpstate;
|
|
oldmask: cardinal;
|
|
cr2: cardinal;
|
|
end;
|
|
|
|
(*
|
|
PSigInfoRec = ^SigInfoRec;
|
|
SigInfoRec = record
|
|
si_signo: longint;
|
|
si_errno: longint;
|
|
si_code: longint;
|
|
|
|
case longint of
|
|
0:
|
|
(pad: array[SI_PAD_SIZE] of longint);
|
|
1: { kill }
|
|
( kill: record
|
|
pid: longint; { sender's pid }
|
|
uid : longint; { sender's uid }
|
|
end );
|
|
2: { POSIX.1b timers }
|
|
( timer : record
|
|
timer1 : cardinal;
|
|
timer2 : cardinal;
|
|
end );
|
|
3: { POSIX.1b signals }
|
|
( rt : record
|
|
pid : longint; { sender's pid }
|
|
uid : longint; { sender's uid }
|
|
sigval : longint;
|
|
end );
|
|
4: { SIGCHLD }
|
|
( sigchld : record
|
|
pid : longint; { which child }
|
|
uid : longint; { sender's uid }
|
|
status : longint; { exit code }
|
|
utime : timeval;
|
|
stime : timeval;
|
|
end );
|
|
5: { SIGILL, SIGFPE, SIGSEGV, SIGBUS }
|
|
( sigfault : record
|
|
addr : pointer;{ faulting insn/memory ref. }
|
|
end );
|
|
6:
|
|
( sigpoll : record
|
|
band : longint; { POLL_IN, POLL_OUT, POLL_MSG }
|
|
fd : longint;
|
|
end );
|
|
end;
|
|
*)
|
|
|
|
SignalHandler = Procedure(Sig : Longint);cdecl;
|
|
PSignalHandler = ^SignalHandler;
|
|
SignalRestorer = Procedure;cdecl;
|
|
PSignalRestorer = ^SignalRestorer;
|
|
TSigAction = procedure(Sig: Longint; SigContext: SigContextRec);cdecl;
|
|
|
|
SigSet = Longint;
|
|
PSigSet = ^SigSet;
|
|
|
|
SigActionRec = packed record
|
|
Handler : record
|
|
case byte of
|
|
0: (Sh: SignalHandler);
|
|
1: (Sa: TSigAction);
|
|
end;
|
|
Sa_Mask : SigSet;
|
|
Sa_Flags : Longint;
|
|
Sa_restorer : SignalRestorer; { Obsolete - Don't use }
|
|
end;
|
|
PSigActionRec = ^SigActionRec;
|
|
|
|
Procedure SigAction(Signum:Integer;Act,OldAct:PSigActionRec );
|
|
{
|
|
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.
|
|
}
|
|
Var
|
|
sr : Syscallregs;
|
|
begin
|
|
sr.reg2:=Signum;
|
|
sr.reg3:=Longint(act);
|
|
sr.reg4:=Longint(oldact);
|
|
SysCall(Syscall_nr_sigaction,sr);
|
|
end;
|
|
|
|
{
|
|
$Log$
|
|
Revision 1.2 2000-07-13 11:33:49 michael
|
|
+ removed logs
|
|
|
|
}
|