/* Machine-independent support for Solaris /proc (process file system)

   Copyright (C) 1999-2021 Free Software Foundation, Inc.

   Written by Michael Snyder at Cygnus Solutions.
   Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   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.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */

/* Pretty-print "events of interest".

   This module includes pretty-print routines for:
   * faults (hardware exceptions)
   * signals (software interrupts)
   * syscalls

   FIXME: At present, the syscall translation table must be
   initialized, which is not true of the other translation tables.  */

#include "defs.h"

#include <sys/types.h>
#include <sys/procfs.h>
#include <sys/syscall.h>
#include <sys/fault.h>

#include "proc-utils.h"

/* Much of the information used in the /proc interface, particularly
   for printing status information, is kept as tables of structures of
   the following form.  These tables can be used to map numeric values
   to their symbolic names and to a string that describes their
   specific use.  */

struct trans
{
  int value;                    /* The numeric value.  */
  const char *name;             /* The equivalent symbolic value.  */
  const char *desc;             /* Short description of value.  */
};


/* Pretty print syscalls.  */

/* Syscall translation table.  */

#define MAX_SYSCALLS 262	/* Pretty arbitrary.  */
static const char *syscall_table[MAX_SYSCALLS];

static void
init_syscall_table (void)
{
  syscall_table[SYS_accept] = "accept";
#ifdef SYS_access
  syscall_table[SYS_access] = "access";
#endif
  syscall_table[SYS_acct] = "acct";
  syscall_table[SYS_acctctl] = "acctctl";
  syscall_table[SYS_acl] = "acl";
#ifdef SYS_adi
  syscall_table[SYS_adi] = "adi";
#endif
  syscall_table[SYS_adjtime] = "adjtime";
  syscall_table[SYS_alarm] = "alarm";
  syscall_table[SYS_auditsys] = "auditsys";
  syscall_table[SYS_autofssys] = "autofssys";
  syscall_table[SYS_bind] = "bind";
  syscall_table[SYS_brand] = "brand";
  syscall_table[SYS_brk] = "brk";
  syscall_table[SYS_chdir] = "chdir";
#ifdef SYS_chmod
  syscall_table[SYS_chmod] = "chmod";
#endif
#ifdef SYS_chown
  syscall_table[SYS_chown] = "chown";
#endif
  syscall_table[SYS_chroot] = "chroot";
  syscall_table[SYS_cladm] = "cladm";
  syscall_table[SYS_clock_getres] = "clock_getres";
  syscall_table[SYS_clock_gettime] = "clock_gettime";
  syscall_table[SYS_clock_settime] = "clock_settime";
  syscall_table[SYS_close] = "close";
  syscall_table[SYS_connect] = "connect";
  syscall_table[SYS_context] = "context";
  syscall_table[SYS_corectl] = "corectl";
  syscall_table[SYS_cpc] = "cpc";
#ifdef SYS_creat
  syscall_table[SYS_creat] = "creat";
#endif
#ifdef SYS_creat64
  syscall_table[SYS_creat64] = "creat64";
#endif
  syscall_table[SYS_door] = "door";
#ifdef SYS_dup
  syscall_table[SYS_dup] = "dup";
#endif
#ifdef SYS_evsys
  syscall_table[SYS_evsys] = "evsys";
#endif
#ifdef SYS_evtrapret
  syscall_table[SYS_evtrapret] = "evtrapret";
#endif
  syscall_table[SYS_exacctsys] = "exacctsys";
#ifdef SYS_exec
  syscall_table[SYS_exec] = "exec";
#endif
  syscall_table[SYS_execve] = "execve";
  syscall_table[SYS_exit] = "exit";
#ifdef SYS_faccessat
  syscall_table[SYS_faccessat] = "faccessat";
#endif
  syscall_table[SYS_facl] = "facl";
  syscall_table[SYS_fchdir] = "fchdir";
#ifdef SYS_fchmod
  syscall_table[SYS_fchmod] = "fchmod";
#endif
#ifdef SYS_fchmodat
  syscall_table[SYS_fchmodat] = "fchmodat";
#endif
#ifdef SYS_fchown
  syscall_table[SYS_fchown] = "fchown";
#endif
#ifdef SYS_fchownat
  syscall_table[SYS_fchownat] = "fchownat";
#endif
  syscall_table[SYS_fchroot] = "fchroot";
  syscall_table[SYS_fcntl] = "fcntl";
  syscall_table[SYS_fdsync] = "fdsync";
#ifdef SYS_fork1
  syscall_table[SYS_fork1] = "fork1";
#endif
#ifdef SYS_forkall
  syscall_table[SYS_forkall] = "forkall";
#endif
#ifdef SYS_forksys
  syscall_table[SYS_forksys] = "forksys";
#endif
  syscall_table[SYS_fpathconf] = "fpathconf";
#ifdef SYS_frealpathat
  syscall_table[SYS_frealpathat] = "frealpathat";
#endif
#ifdef SYS_fsat
  syscall_table[SYS_fsat] = "fsat";
#endif
#ifdef SYS_fstat
  syscall_table[SYS_fstat] = "fstat";
#endif
#ifdef SYS_fstat64
  syscall_table[SYS_fstat64] = "fstat64";
#endif
#ifdef SYS_fstatat
  syscall_table[SYS_fstatat] = "fstatat";
#endif
#ifdef SYS_fstatat64
  syscall_table[SYS_fstatat64] = "fstatat64";
#endif
  syscall_table[SYS_fstatfs] = "fstatfs";
  syscall_table[SYS_fstatvfs] = "fstatvfs";
  syscall_table[SYS_fstatvfs64] = "fstatvfs64";
#ifdef SYS_fxstat
  syscall_table[SYS_fxstat] = "fxstat";
#endif
  syscall_table[SYS_getcwd] = "getcwd";
  syscall_table[SYS_getdents] = "getdents";
  syscall_table[SYS_getdents64] = "getdents64";
  syscall_table[SYS_getgid] = "getgid";
  syscall_table[SYS_getgroups] = "getgroups";
  syscall_table[SYS_getitimer] = "getitimer";
  syscall_table[SYS_getloadavg] = "getloadavg";
  syscall_table[SYS_getmsg] = "getmsg";
  syscall_table[SYS_getpagesizes] = "getpagesizes";
  syscall_table[SYS_getpeername] = "getpeername";
  syscall_table[SYS_getpid] = "getpid";
  syscall_table[SYS_getpmsg] = "getpmsg";
#ifdef SYS_getrandom
  syscall_table[SYS_getrandom] = "getrandom";
#endif
  syscall_table[SYS_getrlimit] = "getrlimit";
  syscall_table[SYS_getrlimit64] = "getrlimit64";
  syscall_table[SYS_getsockname] = "getsockname";
  syscall_table[SYS_getsockopt] = "getsockopt";
  syscall_table[SYS_gettimeofday] = "gettimeofday";
  syscall_table[SYS_getuid] = "getuid";
  syscall_table[SYS_gtty] = "gtty";
  syscall_table[SYS_hrtsys] = "hrtsys";
  syscall_table[SYS_inst_sync] = "inst_sync";
  syscall_table[SYS_install_utrap] = "install_utrap";
  syscall_table[SYS_ioctl] = "ioctl";
#ifdef SYS_issetugid
  syscall_table[SYS_issetugid] = "issetugid";
#endif
  syscall_table[SYS_kaio] = "kaio";
  syscall_table[SYS_kill] = "kill";
  syscall_table[SYS_labelsys] = "labelsys";
#ifdef SYS_lchown
  syscall_table[SYS_lchown] = "lchown";
#endif
  syscall_table[SYS_lgrpsys] = "lgrpsys";
#ifdef SYS_link
  syscall_table[SYS_link] = "link";
#endif
#ifdef SYS_linkat
  syscall_table[SYS_linkat] = "linkat";
#endif
  syscall_table[SYS_listen] = "listen";
  syscall_table[SYS_llseek] = "llseek";
  syscall_table[SYS_lseek] = "lseek";
#ifdef SYS_lstat
  syscall_table[SYS_lstat] = "lstat";
#endif
#ifdef SYS_lstat64
  syscall_table[SYS_lstat64] = "lstat64";
#endif
  syscall_table[SYS_lwp_cond_broadcast] = "lwp_cond_broadcast";
  syscall_table[SYS_lwp_cond_signal] = "lwp_cond_signal";
  syscall_table[SYS_lwp_cond_wait] = "lwp_cond_wait";
  syscall_table[SYS_lwp_continue] = "lwp_continue";
  syscall_table[SYS_lwp_create] = "lwp_create";
  syscall_table[SYS_lwp_detach] = "lwp_detach";
  syscall_table[SYS_lwp_exit] = "lwp_exit";
  syscall_table[SYS_lwp_info] = "lwp_info";
#ifdef SYS_lwp_kill
  syscall_table[SYS_lwp_kill] = "lwp_kill";
#endif
#ifdef SYS_lwp_mutex_lock
  syscall_table[SYS_lwp_mutex_lock] = "lwp_mutex_lock";
#endif
  syscall_table[SYS_lwp_mutex_register] = "lwp_mutex_register";
  syscall_table[SYS_lwp_mutex_timedlock] = "lwp_mutex_timedlock";
  syscall_table[SYS_lwp_mutex_trylock] = "lwp_mutex_trylock";
  syscall_table[SYS_lwp_mutex_unlock] = "lwp_mutex_unlock";
  syscall_table[SYS_lwp_mutex_wakeup] = "lwp_mutex_wakeup";
#ifdef SYS_lwp_name
  syscall_table[SYS_lwp_name] = "lwp_name";
#endif
  syscall_table[SYS_lwp_park] = "lwp_park";
  syscall_table[SYS_lwp_private] = "lwp_private";
  syscall_table[SYS_lwp_rwlock_sys] = "lwp_rwlock_sys";
  syscall_table[SYS_lwp_self] = "lwp_self";
  syscall_table[SYS_lwp_sema_post] = "lwp_sema_post";
  syscall_table[SYS_lwp_sema_timedwait] = "lwp_sema_timedwait";
  syscall_table[SYS_lwp_sema_trywait] = "lwp_sema_trywait";
#ifdef SYS_lwp_sema_wait
  syscall_table[SYS_lwp_sema_wait] = "lwp_sema_wait";
#endif
  syscall_table[SYS_lwp_sigmask] = "lwp_sigmask";
#ifdef SYS_lwp_sigqueue
  syscall_table[SYS_lwp_sigqueue] = "lwp_sigqueue";
#endif
  syscall_table[SYS_lwp_suspend] = "lwp_suspend";
  syscall_table[SYS_lwp_wait] = "lwp_wait";
#ifdef SYS_lxstat
  syscall_table[SYS_lxstat] = "lxstat";
#endif
  syscall_table[SYS_memcntl] = "memcntl";
#ifdef SYS_memsys
  syscall_table[SYS_memsys] = "memsys";
#endif
  syscall_table[SYS_mincore] = "mincore";
#ifdef SYS_mkdir
  syscall_table[SYS_mkdir] = "mkdir";
#endif
#ifdef SYS_mkdirat
  syscall_table[SYS_mkdirat] = "mkdirat";
#endif
#ifdef SYS_mknod
  syscall_table[SYS_mknod] = "mknod";
#endif
#ifdef SYS_mknodat
  syscall_table[SYS_mknodat] = "mknodat";
#endif
  syscall_table[SYS_mmap] = "mmap";
  syscall_table[SYS_mmap64] = "mmap64";
#ifdef SYS_mmapobj
  syscall_table[SYS_mmapobj] = "mmapobj";
#endif
  syscall_table[SYS_modctl] = "modctl";
  syscall_table[SYS_mount] = "mount";
  syscall_table[SYS_mprotect] = "mprotect";
  syscall_table[SYS_msgsys] = "msgsys";
  syscall_table[SYS_munmap] = "munmap";
  syscall_table[SYS_nanosleep] = "nanosleep";
  syscall_table[SYS_nfssys] = "nfssys";
  syscall_table[SYS_nice] = "nice";
  syscall_table[SYS_ntp_adjtime] = "ntp_adjtime";
  syscall_table[SYS_ntp_gettime] = "ntp_gettime";
#ifdef SYS_open
  syscall_table[SYS_open] = "open";
#endif
#ifdef SYS_open64
  syscall_table[SYS_open64] = "open64";
#endif
#ifdef SYS_openat
  syscall_table[SYS_openat] = "openat";
#endif
#ifdef SYS_openat64
  syscall_table[SYS_openat64] = "openat64";
#endif
  syscall_table[SYS_p_online] = "p_online";
  syscall_table[SYS_pathconf] = "pathconf";
  syscall_table[SYS_pause] = "pause";
  syscall_table[SYS_pcsample] = "pcsample";
  syscall_table[SYS_pgrpsys] = "pgrpsys";
  syscall_table[SYS_pipe] = "pipe";
#ifdef SYS_plock
  syscall_table[SYS_plock] = "plock";
#endif
#ifdef SYS_poll
  syscall_table[SYS_poll] = "poll";
#endif
  syscall_table[SYS_pollsys] = "pollsys";
  syscall_table[SYS_port] = "port";
  syscall_table[SYS_pread] = "pread";
  syscall_table[SYS_pread64] = "pread64";
  syscall_table[SYS_priocntlsys] = "priocntlsys";
  syscall_table[SYS_privsys] = "privsys";
#ifdef SYS_processor_bind
  syscall_table[SYS_processor_bind] = "processor_bind";
#endif
#ifdef SYS_processor_info
  syscall_table[SYS_processor_info] = "processor_info";
#endif
#ifdef SYS_processor_sys
  syscall_table[SYS_processor_sys] = "processor_sys";
#endif
  syscall_table[SYS_profil] = "profil";
  syscall_table[SYS_pset] = "pset";
  syscall_table[SYS_putmsg] = "putmsg";
  syscall_table[SYS_putpmsg] = "putpmsg";
  syscall_table[SYS_pwrite] = "pwrite";
  syscall_table[SYS_pwrite64] = "pwrite64";
  syscall_table[SYS_rctlsys] = "rctlsys";
  syscall_table[SYS_read] = "read";
#ifdef SYS_readlink
  syscall_table[SYS_readlink] = "readlink";
#endif
#ifdef SYS_readlinkat
  syscall_table[SYS_readlinkat] = "readlinkat";
#endif
  syscall_table[SYS_readv] = "readv";
  syscall_table[SYS_recv] = "recv";
  syscall_table[SYS_recvfrom] = "recvfrom";
#ifdef SYS_recvmmsg
  syscall_table[SYS_recvmmsg] = "recvmmsg";
#endif
  syscall_table[SYS_recvmsg] = "recvmsg";
#ifdef SYS_reflinkat
  syscall_table[SYS_reflinkat] = "reflinkat";
#endif
#ifdef SYS_rename
  syscall_table[SYS_rename] = "rename";
#endif
#ifdef SYS_renameat
  syscall_table[SYS_renameat] = "renameat";
#endif
  syscall_table[SYS_resolvepath] = "resolvepath";
#ifdef SYS_rmdir
  syscall_table[SYS_rmdir] = "rmdir";
#endif
  syscall_table[SYS_rpcsys] = "rpcsys";
  syscall_table[SYS_rusagesys] = "rusagesys";
  syscall_table[SYS_schedctl] = "schedctl";
#ifdef SYS_secsys
  syscall_table[SYS_secsys] = "secsys";
#endif
  syscall_table[SYS_semsys] = "semsys";
  syscall_table[SYS_send] = "send";
  syscall_table[SYS_sendfilev] = "sendfilev";
#ifdef SYS_sendmmsg
  syscall_table[SYS_sendmmsg] = "sendmmsg";
#endif
  syscall_table[SYS_sendmsg] = "sendmsg";
  syscall_table[SYS_sendto] = "sendto";
  syscall_table[SYS_setegid] = "setegid";
  syscall_table[SYS_seteuid] = "seteuid";
  syscall_table[SYS_setgid] = "setgid";
  syscall_table[SYS_setgroups] = "setgroups";
  syscall_table[SYS_setitimer] = "setitimer";
  syscall_table[SYS_setregid] = "setregid";
  syscall_table[SYS_setreuid] = "setreuid";
  syscall_table[SYS_setrlimit] = "setrlimit";
  syscall_table[SYS_setrlimit64] = "setrlimit64";
  syscall_table[SYS_setsockopt] = "setsockopt";
  syscall_table[SYS_setuid] = "setuid";
  syscall_table[SYS_sharefs] = "sharefs";
  syscall_table[SYS_shmsys] = "shmsys";
  syscall_table[SYS_shutdown] = "shutdown";
#ifdef SYS_sidsys
  syscall_table[SYS_sidsys] = "sidsys";
#endif
  syscall_table[SYS_sigaction] = "sigaction";
  syscall_table[SYS_sigaltstack] = "sigaltstack";
#ifdef SYS_signal
  syscall_table[SYS_signal] = "signal";
#endif
  syscall_table[SYS_signotify] = "signotify";
  syscall_table[SYS_sigpending] = "sigpending";
  syscall_table[SYS_sigprocmask] = "sigprocmask";
  syscall_table[SYS_sigqueue] = "sigqueue";
#ifdef SYS_sigresend
  syscall_table[SYS_sigresend] = "sigresend";
#endif
  syscall_table[SYS_sigsendsys] = "sigsendsys";
  syscall_table[SYS_sigsuspend] = "sigsuspend";
  syscall_table[SYS_sigtimedwait] = "sigtimedwait";
  syscall_table[SYS_so_socket] = "so_socket";
  syscall_table[SYS_so_socketpair] = "so_socketpair";
  syscall_table[SYS_sockconfig] = "sockconfig";
#ifdef SYS_sparc_fixalign
  syscall_table[SYS_sparc_fixalign] = "sparc_fixalign";
#endif
  syscall_table[SYS_sparc_utrap_install] = "sparc_utrap_install";
#ifdef SYS_spawn
  syscall_table[SYS_spawn] = "spawn";
#endif
#ifdef SYS_stat
  syscall_table[SYS_stat] = "stat";
#endif
#ifdef SYS_stat64
  syscall_table[SYS_stat64] = "stat64";
#endif
  syscall_table[SYS_statfs] = "statfs";
  syscall_table[SYS_statvfs] = "statvfs";
  syscall_table[SYS_statvfs64] = "statvfs64";
  syscall_table[SYS_stime] = "stime";
  syscall_table[SYS_stty] = "stty";
#ifdef SYS_symlink
  syscall_table[SYS_symlink] = "symlink";
#endif
#ifdef SYS_symlinkat
  syscall_table[SYS_symlinkat] = "symlinkat";
#endif
  syscall_table[SYS_sync] = "sync";
  syscall_table[SYS_syscall] = "syscall";
  syscall_table[SYS_sysconfig] = "sysconfig";
  syscall_table[SYS_sysfs] = "sysfs";
  syscall_table[SYS_sysi86] = "sysi86";
#ifdef SYS_syssun
  syscall_table[SYS_syssun] = "syssun";
#endif
#ifdef SYS_system_stats
  syscall_table[SYS_system_stats] = "system_stats";
#endif
  syscall_table[SYS_systeminfo] = "systeminfo";
  syscall_table[SYS_tasksys] = "tasksys";
  syscall_table[SYS_time] = "time";
  syscall_table[SYS_timer_create] = "timer_create";
  syscall_table[SYS_timer_delete] = "timer_delete";
  syscall_table[SYS_timer_getoverrun] = "timer_getoverrun";
  syscall_table[SYS_timer_gettime] = "timer_gettime";
  syscall_table[SYS_timer_settime] = "timer_settime";
  syscall_table[SYS_times] = "times";
  syscall_table[SYS_uadmin] = "uadmin";
  syscall_table[SYS_ucredsys] = "ucredsys";
  syscall_table[SYS_ulimit] = "ulimit";
  syscall_table[SYS_umask] = "umask";
#ifdef SYS_umount
  syscall_table[SYS_umount] = "umount";
#endif
  syscall_table[SYS_umount2] = "umount2";
  syscall_table[SYS_uname] = "uname";
#ifdef SYS_unlink
  syscall_table[SYS_unlink] = "unlink";
#endif
#ifdef SYS_unlinkat
  syscall_table[SYS_unlinkat] = "unlinkat";
#endif
#ifdef SYS_utime
  syscall_table[SYS_utime] = "utime";
#endif
#ifdef SYS_utimensat
  syscall_table[SYS_utimensat] = "utimensat";
#endif
#ifdef SYS_utimes
  syscall_table[SYS_utimes] = "utimes";
#endif
#ifdef SYS_utimesys
  syscall_table[SYS_utimesys] = "utimesys";
#endif
  syscall_table[SYS_utssys] = "utssys";
  syscall_table[SYS_uucopy] = "uucopy";
  syscall_table[SYS_uucopystr] = "uucopystr";
#ifdef SYS_uuidsys
  syscall_table[SYS_uuidsys] = "uuidsys";
#endif
#ifdef SYS_va_mask
  syscall_table[SYS_va_mask] = "va_mask";
#endif
  syscall_table[SYS_vfork] = "vfork";
  syscall_table[SYS_vhangup] = "vhangup";
#ifdef SYS_wait
  syscall_table[SYS_wait] = "wait";
#endif
#ifdef SYS_waitid
  syscall_table[SYS_waitid] = "waitid";
#endif
#ifdef SYS_waitsys
  syscall_table[SYS_waitsys] = "waitsys";
#endif
  syscall_table[SYS_write] = "write";
  syscall_table[SYS_writev] = "writev";
#ifdef SYS_xmknod
  syscall_table[SYS_xmknod] = "xmknod";
#endif
#ifdef SYS_xstat
  syscall_table[SYS_xstat] = "xstat";
#endif
  syscall_table[SYS_yield] = "yield";
  syscall_table[SYS_zone] = "zone";
}

/* Prettyprint syscall NUM.  */

void
proc_prettyfprint_syscall (FILE *file, int num, int verbose)
{
  if (syscall_table[num])
    fprintf (file, "SYS_%s ", syscall_table[num]);
  else
    fprintf (file, "<Unknown syscall %d> ", num);
}

void
proc_prettyprint_syscall (int num, int verbose)
{
  proc_prettyfprint_syscall (stdout, num, verbose);
}

/* Prettyprint all syscalls in SYSSET.  */

void
proc_prettyfprint_syscalls (FILE *file, sysset_t *sysset, int verbose)
{
  int i;

  for (i = 0; i < MAX_SYSCALLS; i++)
    if (prismember (sysset, i))
      {
	proc_prettyfprint_syscall (file, i, verbose);
      }
  fprintf (file, "\n");
}

void
proc_prettyprint_syscalls (sysset_t *sysset, int verbose)
{
  proc_prettyfprint_syscalls (stdout, sysset, verbose);
}

/* Prettyprint signals.  */

/* Signal translation table, ordered ANSI-standard signals first,
   other signals second, with signals in each block ordered by their
   numerical values on a typical POSIX platform.  */

static struct trans signal_table[] = 
{
  { 0,      "<no signal>", "no signal" }, 

  /* SIGINT, SIGILL, SIGABRT, SIGFPE, SIGSEGV and SIGTERM
     are ANSI-standard signals and are always available.  */

  { SIGINT, "SIGINT", "Interrupt (rubout)" },
  { SIGILL, "SIGILL", "Illegal instruction" },	/* not reset when caught */
  { SIGABRT, "SIGABRT", "used by abort()" },	/* replaces SIGIOT */
  { SIGFPE, "SIGFPE", "Floating point exception" },
  { SIGSEGV, "SIGSEGV", "Segmentation violation" },
  { SIGTERM, "SIGTERM", "Software termination signal from kill" },

  /* All other signals need preprocessor conditionals.  */

  { SIGHUP, "SIGHUP", "Hangup" },
  { SIGQUIT, "SIGQUIT", "Quit (ASCII FS)" },
  { SIGTRAP, "SIGTRAP", "Trace trap" },		/* not reset when caught */
  { SIGIOT, "SIGIOT", "IOT instruction" },
  { SIGEMT, "SIGEMT", "EMT instruction" },
  { SIGKILL, "SIGKILL", "Kill" },	/* Solaris: cannot be caught/ignored */
  { SIGBUS, "SIGBUS", "Bus error" },
  { SIGSYS, "SIGSYS", "Bad argument to system call" },
  { SIGPIPE, "SIGPIPE", "Write to pipe with no one to read it" },
  { SIGALRM, "SIGALRM", "Alarm clock" },
  { SIGUSR1, "SIGUSR1", "User defined signal 1" },
  { SIGUSR2, "SIGUSR2", "User defined signal 2" },
  { SIGCHLD, "SIGCHLD", "Child status changed" },	/* Posix version */
  { SIGCLD, "SIGCLD", "Child status changed" },		/* Solaris version */
  { SIGPWR, "SIGPWR", "Power-fail restart" },
  { SIGWINCH, "SIGWINCH", "Window size change" },
  { SIGURG, "SIGURG", "Urgent socket condition" },
  { SIGPOLL, "SIGPOLL", "Pollable event" },
  { SIGIO, "SIGIO", "Socket I/O possible" },	/* alias for SIGPOLL */
  { SIGSTOP, "SIGSTOP", "Stop, not from tty" },	/* cannot be caught or
						   ignored */
  { SIGTSTP, "SIGTSTP", "User stop from tty" },
  { SIGCONT, "SIGCONT", "Stopped process has been continued" },
  { SIGTTIN, "SIGTTIN", "Background tty read attempted" },
  { SIGTTOU, "SIGTTOU", "Background tty write attempted" },
  { SIGVTALRM, "SIGVTALRM", "Virtual timer expired" },
  { SIGPROF, "SIGPROF", "Profiling timer expired" },
  { SIGXCPU, "SIGXCPU", "Exceeded CPU limit" },
  { SIGXFSZ, "SIGXFSZ", "Exceeded file size limit" },
  { SIGWAITING, "SIGWAITING", "Process's LWPs are blocked" },
  { SIGLWP, "SIGLWP", "Used by thread library" },
  { SIGFREEZE, "SIGFREEZE", "Used by CPR" },
  { SIGTHAW, "SIGTHAW", "Used by CPR" },
  { SIGCANCEL, "SIGCANCEL", "Used by libthread" },
  { SIGLOST, "SIGLOST", "Resource lost" },

  /* FIXME: add real-time signals.  */
};

/* Prettyprint signal number SIGNO.  */

void
proc_prettyfprint_signal (FILE *file, int signo, int verbose)
{
  int i;

  for (i = 0; i < sizeof (signal_table) / sizeof (signal_table[0]); i++)
    if (signo == signal_table[i].value)
      {
	fprintf (file, "%s", signal_table[i].name);
	if (verbose)
	  fprintf (file, ": %s\n", signal_table[i].desc);
	else
	  fprintf (file, " ");
	return;
      }
  fprintf (file, "Unknown signal %d%c", signo, verbose ? '\n' : ' ');
}

void
proc_prettyprint_signal (int signo, int verbose)
{
  proc_prettyfprint_signal (stdout, signo, verbose);
}

/* Prettyprint all signals in SIGSET.  */

void
proc_prettyfprint_signalset (FILE *file, sigset_t *sigset, int verbose)
{
  int i;

  /* Loop over all signal numbers from 0 to NSIG, using them as the
     index to prismember.  The signal table had better not contain
     aliases, for if it does they will both be printed.  */

  for (i = 0; i < NSIG; i++)
    if (prismember (sigset, i))
      proc_prettyfprint_signal (file, i, verbose);

  if (!verbose)
    fprintf (file, "\n");
}

void
proc_prettyprint_signalset (sigset_t *sigset, int verbose)
{
  proc_prettyfprint_signalset (stdout, sigset, verbose);
}


/* Prettyprint faults.  */

/* Fault translation table.  */

static struct trans fault_table[] =
{
  { FLTILL, "FLTILL", "Illegal instruction" },
  { FLTPRIV, "FLTPRIV", "Privileged instruction" },
  { FLTBPT, "FLTBPT", "Breakpoint trap" },
  { FLTTRACE, "FLTTRACE", "Trace trap" },
  { FLTACCESS, "FLTACCESS", "Memory access fault" },
  { FLTBOUNDS, "FLTBOUNDS", "Memory bounds violation" },
  { FLTIOVF, "FLTIOVF", "Integer overflow" },
  { FLTIZDIV, "FLTIZDIV", "Integer zero divide" },
  { FLTFPE, "FLTFPE", "Floating-point exception" },
  { FLTSTACK, "FLTSTACK", "Unrecoverable stack fault" },
  { FLTPAGE, "FLTPAGE", "Recoverable page fault" },
  { FLTWATCH, "FLTWATCH", "User watchpoint" },
};

/* Work horse.  Accepts an index into the fault table, prints it
   pretty.  */

static void
prettyfprint_faulttable_entry (FILE *file, int i, int verbose)
{
  fprintf (file, "%s", fault_table[i].name);
  if (verbose)
    fprintf (file, ": %s\n", fault_table[i].desc);
  else
    fprintf (file, " ");
}

/* Prettyprint hardware fault number FAULTNO.  */

void
proc_prettyfprint_fault (FILE *file, int faultno, int verbose)
{
  int i;

  for (i = 0; i < ARRAY_SIZE (fault_table); i++)
    if (faultno == fault_table[i].value)
      {
	prettyfprint_faulttable_entry (file, i, verbose);
	return;
      }

  fprintf (file, "Unknown hardware fault %d%c", 
	   faultno, verbose ? '\n' : ' ');
}

void
proc_prettyprint_fault (int faultno, int verbose)
{
  proc_prettyfprint_fault (stdout, faultno, verbose);
}

/* Prettyprint all faults in FLTSET.  */

void
proc_prettyfprint_faultset (FILE *file, fltset_t *fltset, int verbose)
{
  int i;

  /* Loop through the fault table, using the value field as the index
     to prismember.  The fault table had better not contain aliases,
     for if it does they will both be printed.  */

  for (i = 0; i < ARRAY_SIZE (fault_table); i++)
    if (prismember (fltset, fault_table[i].value))
      prettyfprint_faulttable_entry (file, i, verbose);

  if (!verbose)
    fprintf (file, "\n");
}

void
proc_prettyprint_faultset (fltset_t *fltset, int verbose)
{
  proc_prettyfprint_faultset (stdout, fltset, verbose);
}

/* TODO: actions, holds...  */

void
proc_prettyprint_actionset (struct sigaction *actions, int verbose)
{
}

void _initialize_proc_events ();
void
_initialize_proc_events ()
{
  init_syscall_table ();
}
