I am sponsoring this automatic case for myself.

The kernel function ssig() came with SVr3 from AT&T during the days
of the development of SVr4 (merged SunOS4.x and SVr3).  In SunOS5.0
(Solaris 2.0), it was the system call used to implement the functions:
    signal()
    sigset()
    sighold()
    sigrelse()
    sigignore()
    sigpause()

During the development of SunOS5.1 (Solaris 2.1), these functions
were reimplemented in libc using more modern interfaces:
    sigaction()
    sigprocmask()
    sigsuspend()

In SunOS5.1, ssig() was retained in the kernel entirely for the
benefit of programs that had been statically linked with libc
in the previous release, SunOS2.0.

These are the comments in usr/src/uts/common/syscall/ssig.c :

/*
 * ssig() is the old common entry for signal, sigset, sighold,
 * sigrelse, sigignore and sigpause.
 *
 * All of these interfaces have been reimplemented in libc using
 * calls to sigaction, sigsuspend and sigprocmask.
 *
 * This kernel interface is no longer called by any application
 * that is dynamically linked with libc.  It exists solely for
 * the benefit of really old statically-linked applications.
 * It should be removed from the system.
 */

The "really old statically-linked applications" are entirely
those created in SunOS2.0 (in 1991).  No such applications exist
today (even if they existed then, which is doubtful).

Over the years, ssig() has been blindly carried forward
from release to release, even though it is entirely dead code.

The latest twist to the story is that in the development of
Solaris 8 and Solaris 9 branded zones, code was created to emulate
this system call on Solaris 10 (to map signal numbers between
the native Solaris 10 and the emulated Solaris 8 and Solaris 9
environments).

The continued existence of ssig() in the kernel is proving to be
a hinderance to further development.  It should be expunged.

See the bugid:
6896743 The ancient SVR3 ssig() system call trap should be deleted

No interfaces are changing, so there is no documentation change.

The release binding is "minor",
so it can be done in solaris_nevada (Solaris Next, OpenSolaris)

Roger Faulkner

Reply via email to