Author: wayland
Date: 2009-02-26 04:43:20 +0100 (Thu, 26 Feb 2009)
New Revision: 25573
Added:
docs/Perl6/Spec/S32-setting-library/Exception.pod
Modified:
docs/Perl6/Spec/S16-io.pod
docs/Perl6/Spec/S32-setting-library/Numeric.pod
Log:
Numeric.pod: Added some notes on what needs to be documented here
S16 and Exception.pod: Did some work on turning signals into exceptions. I
probably need
to pre-emptively ask for forgiveness for just making stuff up here :).
Modified: docs/Perl6/Spec/S16-io.pod
===================================================================
--- docs/Perl6/Spec/S16-io.pod 2009-02-26 02:46:46 UTC (rev 25572)
+++ docs/Perl6/Spec/S16-io.pod 2009-02-26 03:43:20 UTC (rev 25573)
@@ -73,22 +73,125 @@
=head1 POSIX Signals
+The %*SIG variable contains a Hash of Proc::Signals::Signal.
+
+class Signal {
+ has $exception; # This specifies what exception will be raised when
this signal is received
+ has $interrupt; # See siginterrupt(3)
+ has $blocked; # Is this signal blocked? cf. sigprocmask
+}
+
+The @*SIGQUEUE array contains a queue of the signals that are blocked and
queued.
+
The standard POSIX signals simply raise control exceptions that are handled as
normal
-through the signal handler, except for the fact that some of them are
resumeable. The
-exception names are:
+through the control signal handler, and caught by CONTROL blocks.
-=over
+=head2 Signal defaults
-=item * ControlExceptionSigHUP
+The signals have defaults as specified in the table below. $blocked always
defaults to
+false.
-=item * ControlExceptionSigTERM
+ Signal Default Exception
+ ------ -----------------
+ SIGHUP ControlExceptionSigHUP
+ SIGINT ControlExceptionSigINT
+ SIGQUIT ControlExceptionSigQUIT
+ SIGILL ControlExceptionSigILL
+ SIGABRT ControlExceptionSigABRT
+ SIGFPE ControlExceptionSigFPE
+ SIGKILL ControlExceptionSigKILL
+ SIGSEGV ControlExceptionSigSEGV
+ SIGPIPE ControlExceptionSigPIPE
+ SIGALRM ControlExceptionSigALRM
+ SIGTERM ControlExceptionSigTERM
+ SIGUSR1 ControlExceptionSigUSR1
+ SIGUSR2 ControlExceptionSigUSR2
+ SIGCHLD undef
+ SIGCONT ControlExceptionSigCONT
+ SIGSTOP ControlExceptionSigSTOP
+ SIGTSTP ControlExceptionSigTSTP
+ SIGTTIN ControlExceptionSigTTIN
+ SIGTTOU ControlExceptionSigTTOU
+ SIGBUS ControlExceptionSigBUS
+ SIGPROF ControlExceptionSigPROF
+ SIGSYS ControlExceptionSigSYS
+ SIGTRAP ControlExceptionSigTRAP
+ SIGURG undef
+ SIGVTALRM ControlExceptionSigVTALRM
+ SIGXCPU ControlExceptionSigXCPU
+ SIGXFSZ ControlExceptionSigXFSZ
+ SIGEMT ControlExceptionSigEMT
+ SIGSTKFLT ControlExceptionSigSTKFLT
+ SIGIO ControlExceptionSigIO
+ SIGPWR ControlExceptionSigPWR
+ SIGLOST ControlExceptionSigLOST
+ SIGWINCH undef
-=item * ControlExceptionSigINT
+=head2 Signal exceptions
-=back
+A table below describes the exceptions.
+Each of these has a default action as well. The possible actions are:
+
+ Term Default action is to terminate the process.
+
+ Ign Default action is to ignore the signal ($signal.exception is undef by
default)
+
+ Core Default action is to terminate the process and dump core (see core(5)).
+
+ Stop Default action is to stop the process.
+
+ Cont Default action is to continue the process if it is currently stopped.
+
+Some actions do the Resumeable role. An exception listed in the table below
that does the
+Resumeable role is marked with a * in the R column.
+
+The exceptions are:
+
+ Signal Action R Comment
+ ----------------------------------------------------------------------
+ ControlExceptionSigHUP Term ? Hangup detected on controlling terminal
or death of controlling process
+ ControlExceptionSigINT Term ? Interrupt from keyboard
+ ControlExceptionSigQUIT Core ? Quit from keyboard
+ ControlExceptionSigILL Core ? Illegal Instruction
+ ControlExceptionSigABRT Core ? Abort signal from abort(3)
+ ControlExceptionSigFPE Core ? Floating point exception
+ ControlExceptionSigKILL Term ? Kill signal
+ ControlExceptionSigSEGV Core Invalid memory reference
+ ControlExceptionSigPIPE Term ? Broken pipe: write to pipe with no readers
+ ControlExceptionSigALRM Term ? Timer signal from alarm(2)
+ ControlExceptionSigTERM Term ? Termination signal
+ ControlExceptionSigUSR1 Term ? User-defined signal 1
+ ControlExceptionSigUSR2 Term ? User-defined signal 2
+ ControlExceptionSigCHLD Ign ? Child stopped or terminated
+ ControlExceptionSigCONT Cont * Continue if stopped
+ ControlExceptionSigSTOP Stop ? Stop process
+ ControlExceptionSigTSTP Stop ? Stop typed at tty
+ ControlExceptionSigTTIN Stop ? tty input for background process
+ ControlExceptionSigTTOU Stop ? tty output for background process
+ ControlExceptionSigBUS Core ? Bus error (bad memory access)
+ ControlExceptionSigPROF Term ? Profiling timer expired
+ ControlExceptionSigSYS Core ? Bad argument to routine (SVr4)
+ ControlExceptionSigTRAP Core ? Trace/breakpoint trap
+ ControlExceptionSigURG Ign ? Urgent condition on socket (4.2BSD)
+ ControlExceptionSigVTALRM Term ? Virtual alarm clock (4.2BSD)
+ ControlExceptionSigXCPU Core ? CPU time limit exceeded (4.2BSD)
+ ControlExceptionSigXFSZ Core ? File size limit exceeded (4.2BSD)
+ ControlExceptionSigEMT Term ?
+ ControlExceptionSigSTKFLT Term ? Stack fault on coprocessor (unused)
+ ControlExceptionSigIO Term ? I/O now possible (4.2BSD)
+ ControlExceptionSigPWR Term ? Power failure (System V)
+ ControlExceptionSigLOST Term ? File lock lost
+ ControlExceptionSigWINCH Ign ? Window resize signal (4.3BSD, Sun)
+
See L<S04-control> for details on how to handle exceptions.
+XXX I'm unsure how the actions in the table above can be made to make sense.
The Ign
+actions are already dealt with because %SIG{CHLD}.exception already defaults
to undef.
+The Term action will probably be self-solving (ie. will terminate the
process). The
+others I'm just plain unsure about. XXX
+
+
=head1 Additions
Please post errors and feedback to perl6-language. If you are making
Added: docs/Perl6/Spec/S32-setting-library/Exception.pod
===================================================================
--- docs/Perl6/Spec/S32-setting-library/Exception.pod
(rev 0)
+++ docs/Perl6/Spec/S32-setting-library/Exception.pod 2009-02-26 03:43:20 UTC
(rev 25573)
@@ -0,0 +1,52 @@
+
+=encoding utf8
+
+=head1 Title
+
+DRAFT: Synopsis 32: Setting Library - Exception
+
+=head1 Version
+
+ Author: Tim Nelson <[email protected]>
+ Maintainer: Larry Wall <[email protected]>
+ Contributions: Tim Nelson <[email protected]>
+ Date: 26 Feb 2009
+ Last Modified: 26 Feb 2009
+ Version: 1
+
+The document is a draft.
+
+If you read the HTML version, it is generated from the pod in the pugs
+repository under /docs/Perl6/Spec/S32-setting-library/Exception.pod so edit it
there in
+the SVN repository if you would like to make changes.
+
+=head1 Roles
+
+role Exception {
+# XXX How do we tell the difference between a warning and a fatal error?
+}
+
+role Resumeable {
+ method resume() {...}
+}
+
+role Failure {
+ method Bool {...} # XXX I'm hoping this worries about .defined and .true
+ method handled {...}
+}
+
+=head1 Classes
+
+class Failure does Failure {
+ has $.handled;
+}
+
+class ControlExceptionSigHUP does Exception does Resumeable {}
+
+=head1 Additions
+
+Please post errors and feedback to perl6-language. If you are making
+a general laundry list, please separate messages by topic.
+
+
+
Modified: docs/Perl6/Spec/S32-setting-library/Numeric.pod
===================================================================
--- docs/Perl6/Spec/S32-setting-library/Numeric.pod 2009-02-26 02:46:46 UTC
(rev 25572)
+++ docs/Perl6/Spec/S32-setting-library/Numeric.pod 2009-02-26 03:43:20 UTC
(rev 25573)
@@ -24,6 +24,10 @@
repository under /docs/Perl6/Spec/S32-setting-library/Numeric.pod so edit it
there in
the SVN repository if you would like to make changes.
+This documents Bit, Int, Num, Rat, Complex, and Bool.
+
+XXX So where are Bit, Int, and Rat
+
=head1 Function Packages
=head2 Bool