root/lib/sigdescr_np.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. sigdescr_np

     1 /* English descriptions of signals.
     2    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     3 
     4    This file is free software: you can redistribute it and/or modify
     5    it under the terms of the GNU Lesser General Public License as
     6    published by the Free Software Foundation; either version 2.1 of the
     7    License, or (at your option) any later version.
     8 
     9    This file is distributed in the hope that it will be useful,
    10    but WITHOUT ANY WARRANTY; without even the implied warranty of
    11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12    GNU Lesser General Public License for more details.
    13 
    14    You should have received a copy of the GNU Lesser General Public License
    15    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
    16 
    17 /* Written by Bruno Haible <bruno@clisp.org>, 2020.  */
    18 
    19 #include <config.h>
    20 
    21 /* Specification.  */
    22 #include <string.h>
    23 
    24 #include <signal.h>
    25 
    26 const char *
    27 sigdescr_np (int sig)
    28 {
    29   /* Note: Some platforms (glibc, FreeBSD, NetBSD, OpenBSD, AIX, IRIX, Haiku,
    30      Android) have an array 'sys_siglist'.  (On AIX, you need to declare it
    31      yourself, and it has fewer than NSIG elements.)  Its contents varies
    32      depending on the OS.
    33      On other OSes, you can invoke strsignal (sig) in the C locale.
    34      In the code below, we show the differences.
    35      You can see how cryptic some of these strings are.  We try to pick more
    36      understandable wordings.  */
    37 
    38   switch (sig)
    39     {
    40     /* Signals specified by ISO C.  */
    41     case SIGABRT:
    42       /* glibc: "Aborted".  *BSD: "Abort trap".  Solaris: "Abort".  */
    43       return "Aborted";
    44     case SIGFPE:
    45       /* glibc, *BSD: "Floating point exception".  Solaris: "Arithmetic exception".
    46          The latter is more correct, because of integer division by 0 or -1.  */
    47       return "Arithmetic exception";
    48     case SIGILL:
    49       return "Illegal instruction";
    50     case SIGINT:
    51       return "Interrupt";
    52     case SIGSEGV:
    53       return "Segmentation fault";
    54     case SIGTERM:
    55       return "Terminated";
    56 
    57     /* Signals specified by POSIX.
    58        <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html>  */
    59     #if defined SIGALRM
    60     case SIGALRM:
    61       return "Alarm clock";
    62     #endif
    63     #if defined SIGBUS
    64     case SIGBUS:
    65       return "Bus error";
    66     #endif
    67     #if defined SIGCHLD
    68     case SIGCHLD:
    69       /* glibc, *BSD: "Child exited".  Solaris: "Child status changed".  */
    70       return "Child stopped or exited";
    71     #endif
    72     #if defined SIGCONT
    73     case SIGCONT:
    74       return "Continued";
    75     #endif
    76     #if defined SIGHUP
    77     case SIGHUP:
    78       return "Hangup";
    79     #endif
    80     #if defined SIGKILL
    81     case SIGKILL:
    82       return "Killed";
    83     #endif
    84     #if defined SIGPIPE
    85     case SIGPIPE:
    86       return "Broken pipe";
    87     #endif
    88     #if defined SIGQUIT
    89     case SIGQUIT:
    90       return "Quit";
    91     #endif
    92     #if defined SIGSTOP
    93     case SIGSTOP:
    94       /* glibc, Solaris: "Stopped (signal)".  *BSD: "Suspended (signal)".  */
    95       return "Stopped (signal)";
    96     #endif
    97     #if defined SIGTSTP
    98     case SIGTSTP:
    99       /* glibc: "Stopped".  *BSD: "Suspended".  Solaris: "Stopped (user)".  */
   100       return "Stopped";
   101     #endif
   102     #if defined SIGTTIN
   103     case SIGTTIN:
   104       return "Stopped (tty input)";
   105     #endif
   106     #if defined SIGTTOU
   107     case SIGTTOU:
   108       return "Stopped (tty output)";
   109     #endif
   110     #if defined SIGUSR1
   111     case SIGUSR1:
   112       /* glibc, *BSD: "User defined signal 1".  Solaris: "User signal 1".  */
   113       return "User defined signal 1";
   114     #endif
   115     #if defined SIGUSR2
   116     case SIGUSR2:
   117       /* glibc, *BSD: "User defined signal 2".  Solaris: "User signal 2".  */
   118       return "User defined signal 2";
   119     #endif
   120     #if defined SIGPOLL
   121     case SIGPOLL:
   122       /* glibc: "I/O possible".  Solaris: "Pollable event".  */
   123       return "I/O possible";
   124     #endif
   125     #if defined SIGPROF
   126     case SIGPROF:
   127       return "Profiling timer expired";
   128     #endif
   129     #if defined SIGSYS
   130     case SIGSYS:
   131       return "Bad system call";
   132     #endif
   133     #if defined SIGTRAP
   134     case SIGTRAP:
   135       /* glibc, Solaris: "Trace/breakpoint trap".  *BSD: "Trace/BPT trap".  */
   136       return "Trace/breakpoint trap";
   137     #endif
   138     #if defined SIGURG
   139     case SIGURG:
   140       /* glibc, *BSD: "Urgent I/O condition".  Solaris: "Urgent socket condition".  */
   141       return "Urgent I/O condition";
   142     #endif
   143     #if defined SIGVTALRM
   144     case SIGVTALRM:
   145       return "Virtual timer expired";
   146     #endif
   147     #if defined SIGXCPU
   148     case SIGXCPU:
   149       /* glibc, *BSD: "CPU time limit exceeded".  Solaris: "Cpu limit exceeded".  */
   150       return "CPU time limit exceeded";
   151     #endif
   152     #if defined SIGXFSZ
   153     case SIGXFSZ:
   154       return "File size limit exceeded";
   155     #endif
   156 
   157     /* Other signals on other systems.  */
   158     /* native Windows */
   159     #if defined SIGBREAK
   160     case SIGBREAK:
   161       return "Ctrl-Break";
   162     #endif
   163     /* IRIX */
   164     #if defined SIGCKPT
   165     case SIGCKPT:
   166       return "Checkpoint"; /* See man 1 cpr, man 3C atcheckpoint */
   167     #endif
   168     /* Linux, IRIX, Cygwin */
   169     #if defined SIGCLD && SIGCLD != SIGCHLD
   170     case SIGCLD:
   171       return "Child stopped or exited";
   172     #endif
   173     /* AIX */
   174     #if defined SIGCPUFAIL
   175     case SIGCPUFAIL:
   176       /* AIX: "CPU failure predicted".  */
   177       return "CPU going down"; /* See man bindprocessor */
   178     #endif
   179     /* AIX */
   180     #if defined SIGDANGER
   181     case SIGDANGER:
   182       /* AIX: "Paging space low".  */
   183       return "Swap space nearly exhausted";
   184     #endif
   185     /* Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, AIX, IRIX, Cygwin, mingw */
   186     #if defined SIGEMT
   187     case SIGEMT:
   188       /* glibc/Hurd, *BSD: "EMT trap".  Solaris: "Emulation trap".  */
   189       return "Instruction emulation needed";
   190     #endif
   191     /* Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix */
   192     #if defined SIGINFO && SIGINFO != SIGPWR
   193     case SIGINFO:
   194       return "Information request";
   195     #endif
   196     /* Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, AIX, IRIX, Cygwin */
   197     #if defined SIGIO && SIGIO != SIGPOLL
   198     case SIGIO:
   199       return "I/O possible";
   200     #endif
   201     /* Linux, IRIX, Cygwin, mingw */
   202     #if defined SIGIOT && SIGIOT != SIGABRT
   203     case SIGIOT:
   204       return "IOT instruction"; /* a PDP-11 instruction */
   205     #endif
   206     /* AIX */
   207     #if defined SIGKAP
   208     case SIGKAP:
   209       /* Process must issue a KSKAPACK ioctl, or will be killed in 30 seconds.  */
   210       /* AIX: "Monitor mode granted".  */
   211       return "Keep Alive Poll";
   212     #endif
   213     /* Haiku */
   214     #if defined SIGKILLTHR
   215     case SIGKILLTHR:
   216       return "Kill thread";
   217     #endif
   218     /* Minix */
   219     #if defined SIGKMEM
   220     case SIGKMEM:
   221       return "Kernel memory request";
   222     #endif
   223     /* Minix */
   224     #if defined SIGKMESS
   225     case SIGKMESS:
   226       return "Kernel message";
   227     #endif
   228     /* Minix */
   229     #if defined SIGKSIG
   230     case SIGKSIG:
   231       return "Kernel signal";
   232     #endif
   233     /* Minix */
   234     #if defined SIGKSIGSM
   235     case SIGKSIGSM:
   236       return "Kernel signal for signal manager";
   237     #endif
   238     /* FreeBSD */
   239     #if defined SIGLIBRT
   240     case SIGLIBRT:
   241       return "Real-time library interrupt";
   242     #endif
   243     /* Cygwin */
   244     #if defined SIGLOST && SIGLOST != SIGABRT && SIGLOST != SIGPWR
   245     case SIGLOST:
   246       /* Solaris: "Resource lost".  */
   247       return "File lock lost";
   248     #endif
   249     /* AIX */
   250     #if defined SIGMIGRATE
   251     case SIGMIGRATE:
   252       return "Process migration";
   253     #endif
   254     /* AIX */
   255     #if defined SIGMSG
   256     case SIGMSG:
   257       /* AIX: "Input device data".  */
   258       return "Message in the ring";
   259     #endif
   260     /* ACM */
   261     #if defined SIGPLAN
   262     case SIGPLAN:
   263       return "Programming language anomaly";
   264     #endif
   265     /* AIX */
   266     #if defined SIGPRE
   267     case SIGPRE:
   268       return "Programmed exception";
   269     #endif
   270     /* IRIX */
   271     #if defined SIGPTINTR
   272     case SIGPTINTR:
   273       return "Pthread interrupt";
   274     #endif
   275     /* IRIX */
   276     #if defined SIGPTRESCHED
   277     case SIGPTRESCHED:
   278       return "Pthread rescheduling";
   279     #endif
   280     /* Linux, NetBSD, Minix, AIX, IRIX, Cygwin */
   281     #if defined SIGPWR
   282     case SIGPWR:
   283       /* glibc: "Power failure".  NetBSD: "Power fail/restart".  */
   284       return "Power failure";
   285     #endif
   286     /* AIX */
   287     #if defined SIGRECONFIG
   288     case SIGRECONFIG:
   289       return "Dynamic logical partitioning changed";
   290     #endif
   291     /* AIX */
   292     #if defined SIGRECOVERY
   293     case SIGRECOVERY:
   294       return "Kernel recovery";
   295     #endif
   296     /* IRIX */
   297     #if defined SIGRESTART
   298     case SIGRESTART:
   299       return "Checkpoint restart"; /* See man 1 cpr, man 3C atrestart */
   300     #endif
   301     /* AIX */
   302     #if defined SIGRETRACT
   303     case SIGRETRACT:
   304       /* AIX: "Monitor mode retracted".  */
   305       return "Retracting Keep Alive Poll";
   306     #endif
   307     /* AIX */
   308     #if defined SIGSAK
   309     case SIGSAK:
   310       /* AIX: "Secure attention".  */
   311       return "Secure Attention Key";
   312     #endif
   313     /* ACM */
   314     #if defined SIGSAM
   315     case SIGSAM:
   316       return "Symbolic computation failed";
   317     #endif
   318     /* Minix */
   319     #if defined SIGSNDELAY
   320     case SIGSNDELAY:
   321       return "Done sending message";
   322     #endif
   323     /* AIX */
   324     #if defined SIGSOUND
   325     case SIGSOUND:
   326       /* AIX: "Sound completed".  */
   327       return "Sound configuration changed";
   328     #endif
   329     /* Linux */
   330     #if defined SIGSTKFLT
   331     case SIGSTKFLT:
   332       return "Stack fault";
   333     #endif
   334     /* AIX */
   335     #if defined SIGSYSERROR
   336     case SIGSYSERROR:
   337       return "Kernel error";
   338     #endif
   339     /* AIX */
   340     #if defined SIGTALRM
   341     case SIGTALRM:
   342       return "Thread alarm clock";
   343     #endif
   344     /* FreeBSD, OpenBSD */
   345     #if defined SIGTHR
   346     case SIGTHR:
   347       /* OpenBSD: "Thread AST".  */
   348       return "Thread library interrupt";
   349     #endif
   350     /* IRIX */
   351     #if defined SIGUME
   352     case SIGUME:
   353       return "Uncorrectable memory error";
   354     #endif
   355     /* AIX */
   356     #if defined SIGVIRT
   357     case SIGVIRT:
   358       return "Virtual time alarm clock";
   359     #endif
   360     /* AIX */
   361     #if defined SIGWAITING
   362     case SIGWAITING:
   363       /* AIX: "No runnable lwp".  */
   364       return "Thread waiting";
   365     #endif
   366     /* Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Minix, AIX, IRIX, Cygwin, Haiku */
   367     #if defined SIGWINCH
   368     case SIGWINCH:
   369       /* glibc: "Window changed".  *BSD: "Window size changed" or "Window size changes".  */
   370       return "Window size changed";
   371     #endif
   372 
   373     default:
   374       return NULL;
   375     }
   376 }

/* [<][>][^][v][top][bottom][index][help] */