Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Remove sigvec.
  • Loading branch information
Roland McGrath committed Nov 14, 2014
1 parent 5ae4fe6 commit 0781a77
Show file tree
Hide file tree
Showing 10 changed files with 209 additions and 312 deletions.
22 changes: 22 additions & 0 deletions ChangeLog
@@ -1,3 +1,25 @@
2014-11-14 Roland McGrath <roland@hack.frob.com>

* signal/signal.h [__USE_MISC]
(struct sigvec): Remove type.
(SV_ONSTACK, SV_INTERRUPT, SV_RESETHAND): Remove macros.
(sigvec): Remove declaration.
* sysdeps/posix/sigvec.c: Moved ...
* signal/sigvec.c: ... here, replacing old file.
(struct sigvec): New type, copied from old signal.h definition.
(SV_ONSTACK, SV_INTERRUPT, SV_RESETHAND): New macros, likewise copied.
(__sigvec): Convert definition to prototype.
(sigvec): Replace weak_alias with compat_symbol.
* signal/Versions (libc: GLIBC_2.21): New version set.
* include/signal.h: Remove __sigvec declaration.
* sysdeps/unix/bsd/sigvec.c: Remove file.
* sysdeps/unix/bsd/syscalls.list: Remove sigvec.
* manual/signal.texi (BSD Handler): Remove subsection.
Move siginterrupt up to ...
(BSD Signal Handling): ... here. Mark it as XPG rather than BSD.
(Blocking in BSD): Fold subsection into its parent.
* NEWS: Mention sigvec removal.

2014-11-14 Joseph Myers <joseph@codesourcery.com>

* sysdeps/x86_64/fpu/dla.h [__FMA4__ && __GNUC_PREREQ (4, 6)]
Expand Down
5 changes: 5 additions & 0 deletions NEWS
Expand Up @@ -19,6 +19,11 @@ Version 2.21
still be used to compile programs using the GNU C Library.

* New locales: tu_IN, bh_IN.

* The obsolete sigvec function has been removed. This was the original
4.2BSD interface that inspired the POSIX.1 sigaction interface, which
programs have been using instead for about 25 years. Of course, ABI
compatibility for old binaries using sigvec remains intact.

Version 2.20

Expand Down
2 changes: 0 additions & 2 deletions include/signal.h
Expand Up @@ -41,8 +41,6 @@ extern int __sigtimedwait (const sigset_t *__set, siginfo_t *__info,
libc_hidden_proto (__sigtimedwait)
extern int __sigqueue (__pid_t __pid, int __sig,
const union sigval __val);
extern int __sigvec (int __sig, const struct sigvec *__vec,
struct sigvec *__ovec);
extern int __sigreturn (struct sigcontext *__scp);
extern int __sigaltstack (const struct sigaltstack *__ss,
struct sigaltstack *__oss);
Expand Down
97 changes: 4 additions & 93 deletions manual/signal.texi
Expand Up @@ -3306,101 +3306,15 @@ BSD Unix.
There are many similarities between the BSD and POSIX signal handling
facilities, because the POSIX facilities were inspired by the BSD
facilities. Besides having different names for all the functions to
avoid conflicts, the main differences between the two are:

@itemize @bullet
@item
BSD Unix represents signal masks as an @code{int} bit mask, rather than
as a @code{sigset_t} object.

@item
The BSD facilities use a different default for whether an interrupted
primitive should fail or resume. The POSIX facilities make system
calls fail unless you specify that they should resume. With the BSD
facility, the default is to make system calls resume unless you say they
should fail. @xref{Interrupted Primitives}.
@end itemize
avoid conflicts, the main difference between the two is that BSD Unix
represents signal masks as an @code{int} bit mask, rather than as a
@code{sigset_t} object.

The BSD facilities are declared in @file{signal.h}.
@pindex signal.h

@menu
* BSD Handler:: BSD Function to Establish a Handler.
* Blocking in BSD:: BSD Functions for Blocking Signals.
@end menu

@node BSD Handler
@subsection BSD Function to Establish a Handler

@comment signal.h
@comment BSD
@deftp {Data Type} {struct sigvec}
This data type is the BSD equivalent of @code{struct sigaction}
(@pxref{Advanced Signal Handling}); it is used to specify signal actions
to the @code{sigvec} function. It contains the following members:

@table @code
@item sighandler_t sv_handler
This is the handler function.

@item int sv_mask
This is the mask of additional signals to be blocked while the handler
function is being called.

@item int sv_flags
This is a bit mask used to specify various flags which affect the
behavior of the signal. You can also refer to this field as
@code{sv_onstack}.
@end table
@end deftp

These symbolic constants can be used to provide values for the
@code{sv_flags} field of a @code{sigvec} structure. This field is a bit
mask value, so you bitwise-OR the flags of interest to you together.

@comment signal.h
@comment BSD
@deftypevr Macro int SV_ONSTACK
If this bit is set in the @code{sv_flags} field of a @code{sigvec}
structure, it means to use the signal stack when delivering the signal.
@end deftypevr

@comment signal.h
@comment BSD
@deftypevr Macro int SV_INTERRUPT
If this bit is set in the @code{sv_flags} field of a @code{sigvec}
structure, it means that system calls interrupted by this kind of signal
should not be restarted if the handler returns; instead, the system
calls should return with a @code{EINTR} error status. @xref{Interrupted
Primitives}.
@end deftypevr

@comment signal.h
@comment Sun
@deftypevr Macro int SV_RESETHAND
If this bit is set in the @code{sv_flags} field of a @code{sigvec}
structure, it means to reset the action for the signal back to
@code{SIG_DFL} when the signal is received.
@end deftypevr

@comment signal.h
@comment BSD
@deftypefun int sigvec (int @var{signum}, const struct sigvec *@var{action}, struct sigvec *@var{old-action})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
@c This is mostly a safe wrapper for sigaction. The exception are
@c systems that lack SA_RESETHAND, in which a signal handler wrapper is
@c used that calls sigaction to reset the handler before calling the
@c user-supplied handler; it's unlikely that this emulation is used
@c anywhere, for user-supplied flags and mask don't seem to be used
@c the way one would expect.
This function is the equivalent of @code{sigaction} (@pxref{Advanced Signal
Handling}); it installs the action @var{action} for the signal @var{signum},
returning information about the previous action in effect for that signal
in @var{old-action}.
@end deftypefun

@comment signal.h
@comment BSD
@comment XPG
@deftypefun int siginterrupt (int @var{signum}, int @var{failflag})
@safety{@prelim{}@mtunsafe{@mtasuconst{:@mtssigintr{}}}@asunsafe{}@acunsafe{@acucorrupt{}}}
@c This calls sigaction twice, once to get the current sigaction for the
Expand All @@ -3417,9 +3331,6 @@ true, handling @var{signum} causes these primitives to fail with error
code @code{EINTR}. @xref{Interrupted Primitives}.
@end deftypefun

@node Blocking in BSD
@subsection BSD Functions for Blocking Signals

@comment signal.h
@comment BSD
@deftypefn Macro int sigmask (int @var{signum})
Expand Down
2 changes: 2 additions & 0 deletions signal/Versions
Expand Up @@ -49,4 +49,6 @@ libc {
# Needed to provide a pointer to the XPG sigpause function.
__xpg_sigpause;
}
GLIBC_2.21 {
}
}
24 changes: 0 additions & 24 deletions signal/signal.h
Expand Up @@ -303,30 +303,6 @@ extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
extern const char *const _sys_siglist[_NSIG];
extern const char *const sys_siglist[_NSIG];

/* Structure passed to `sigvec'. */
struct sigvec
{
__sighandler_t sv_handler; /* Signal handler. */
int sv_mask; /* Mask of signals to be blocked. */

int sv_flags; /* Flags (see below). */
# define sv_onstack sv_flags /* 4.2 BSD compatibility. */
};

/* Bits in `sv_flags'. */
# define SV_ONSTACK (1 << 0)/* Take the signal on the signal stack. */
# define SV_INTERRUPT (1 << 1)/* Do not restart system calls. */
# define SV_RESETHAND (1 << 2)/* Reset handler to SIG_DFL on receipt. */


/* If VEC is non-NULL, set the handler for SIG to the `sv_handler' member
of VEC. The signals in `sv_mask' will be blocked while the handler runs.
If the SV_RESETHAND bit is set in `sv_flags', the handler for SIG will be
reset to SIG_DFL before `sv_handler' is entered. If OVEC is non-NULL,
it is filled in with the old information for SIG. */
extern int sigvec (int __sig, const struct sigvec *__vec,
struct sigvec *__ovec) __THROW;


/* Get machine-dependent `struct sigcontext' and signal subcodes. */
# include <bits/sigcontext.h>
Expand Down

0 comments on commit 0781a77

Please sign in to comment.