1 /* Machine-independent support for SVR4 /proc (process file system)
3 Copyright (C) 1999-2000, 2004, 2007-2012 Free Software Foundation,
6 Written by Michael Snyder at Cygnus Solutions.
7 Based on work by Fred Fish, Stu Grossman, Geoff Noer, and others.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
22 /* Pretty-print "events of interest".
24 This module includes pretty-print routines for:
25 * faults (hardware exceptions)
26 * signals (software interrupts)
29 FIXME: At present, the syscall translation table must be
30 initialized, which is not true of the other translation tables. */
35 #define _STRUCTURED_PROC 1
39 #include <sys/types.h>
40 #include <sys/procfs.h>
41 #ifdef HAVE_SYS_SYSCALL_H
42 #include <sys/syscall.h>
44 #ifdef HAVE_SYS_FAULT_H
45 #include <sys/fault.h>
48 #include "proc-utils.h"
50 /* Much of the information used in the /proc interface, particularly
51 for printing status information, is kept as tables of structures of
52 the following form. These tables can be used to map numeric values
53 to their symbolic names and to a string that describes their
58 int value; /* The numeric value. */
59 char *name; /* The equivalent symbolic value. */
60 char *desc; /* Short description of value. */
64 /* Pretty print syscalls. */
66 /* Syscall translation table. */
68 #define MAX_SYSCALLS 262 /* Pretty arbitrary. */
69 static char *syscall_table[MAX_SYSCALLS];
72 init_syscall_table (void)
75 syscall_table[SYS_BSD_getime] = "BSD_getime";
78 syscall_table[SYS_BSDgetpgrp] = "BSDgetpgrp";
81 syscall_table[SYS_BSDsetpgrp] = "BSDsetpgrp";
84 syscall_table[SYS_acancel] = "acancel";
87 syscall_table[SYS_accept] = "accept";
90 syscall_table[SYS_access] = "access";
93 syscall_table[SYS_acct] = "acct";
96 syscall_table[SYS_acl] = "acl";
99 syscall_table[SYS_aclipc] = "aclipc";
102 syscall_table[SYS_adjtime] = "adjtime";
104 #ifdef SYS_afs_syscall
105 syscall_table[SYS_afs_syscall] = "afs_syscall";
108 syscall_table[SYS_alarm] = "alarm";
111 syscall_table[SYS_alt_plock] = "alt_plock";
113 #ifdef SYS_alt_sigpending
114 syscall_table[SYS_alt_sigpending] = "alt_sigpending";
117 syscall_table[SYS_async] = "async";
119 #ifdef SYS_async_daemon
120 syscall_table[SYS_async_daemon] = "async_daemon";
123 syscall_table[SYS_audcntl] = "audcntl";
126 syscall_table[SYS_audgen] = "audgen";
129 syscall_table[SYS_auditbuf] = "auditbuf";
132 syscall_table[SYS_auditctl] = "auditctl";
135 syscall_table[SYS_auditdmp] = "auditdmp";
138 syscall_table[SYS_auditevt] = "auditevt";
141 syscall_table[SYS_auditlog] = "auditlog";
144 syscall_table[SYS_auditsys] = "auditsys";
147 syscall_table[SYS_bind] = "bind";
150 syscall_table[SYS_block] = "block";
153 syscall_table[SYS_brk] = "brk";
156 syscall_table[SYS_cachectl] = "cachectl";
158 #ifdef SYS_cacheflush
159 syscall_table[SYS_cacheflush] = "cacheflush";
161 #ifdef SYS_cancelblock
162 syscall_table[SYS_cancelblock] = "cancelblock";
165 syscall_table[SYS_cg_bind] = "cg_bind";
167 #ifdef SYS_cg_current
168 syscall_table[SYS_cg_current] = "cg_current";
171 syscall_table[SYS_cg_ids] = "cg_ids";
174 syscall_table[SYS_cg_info] = "cg_info";
177 syscall_table[SYS_cg_memloc] = "cg_memloc";
179 #ifdef SYS_cg_processors
180 syscall_table[SYS_cg_processors] = "cg_processors";
183 syscall_table[SYS_chdir] = "chdir";
186 syscall_table[SYS_chflags] = "chflags";
189 syscall_table[SYS_chmod] = "chmod";
192 syscall_table[SYS_chown] = "chown";
195 syscall_table[SYS_chroot] = "chroot";
198 syscall_table[SYS_clocal] = "clocal";
200 #ifdef SYS_clock_getres
201 syscall_table[SYS_clock_getres] = "clock_getres";
203 #ifdef SYS_clock_gettime
204 syscall_table[SYS_clock_gettime] = "clock_gettime";
206 #ifdef SYS_clock_settime
207 syscall_table[SYS_clock_settime] = "clock_settime";
210 syscall_table[SYS_close] = "close";
213 syscall_table[SYS_connect] = "connect";
216 syscall_table[SYS_context] = "context";
219 syscall_table[SYS_creat] = "creat";
222 syscall_table[SYS_creat64] = "creat64";
225 syscall_table[SYS_devstat] = "devstat";
228 syscall_table[SYS_dmi] = "dmi";
231 syscall_table[SYS_door] = "door";
234 syscall_table[SYS_dshmsys] = "dshmsys";
237 syscall_table[SYS_dup] = "dup";
240 syscall_table[SYS_dup2] = "dup2";
243 syscall_table[SYS_evsys] = "evsys";
246 syscall_table[SYS_evtrapret] = "evtrapret";
249 syscall_table[SYS_exec] = "exec";
251 #ifdef SYS_exec_with_loader
252 syscall_table[SYS_exec_with_loader] = "exec_with_loader";
255 syscall_table[SYS_execv] = "execv";
258 syscall_table[SYS_execve] = "execve";
261 syscall_table[SYS_exit] = "exit";
264 syscall_table[SYS_exportfs] = "exportfs";
267 syscall_table[SYS_facl] = "facl";
270 syscall_table[SYS_fchdir] = "fchdir";
273 syscall_table[SYS_fchflags] = "fchflags";
276 syscall_table[SYS_fchmod] = "fchmod";
279 syscall_table[SYS_fchown] = "fchown";
282 syscall_table[SYS_fchroot] = "fchroot";
285 syscall_table[SYS_fcntl] = "fcntl";
288 syscall_table[SYS_fdatasync] = "fdatasync";
291 syscall_table[SYS_fdevstat] = "fdevstat";
294 syscall_table[SYS_fdsync] = "fdsync";
297 syscall_table[SYS_filepriv] = "filepriv";
300 syscall_table[SYS_flock] = "flock";
303 syscall_table[SYS_flvlfile] = "flvlfile";
306 syscall_table[SYS_fork] = "fork";
309 syscall_table[SYS_fork1] = "fork1";
312 syscall_table[SYS_forkall] = "forkall";
315 syscall_table[SYS_fpathconf] = "fpathconf";
318 syscall_table[SYS_fstat] = "fstat";
321 syscall_table[SYS_fstat64] = "fstat64";
324 syscall_table[SYS_fstatfs] = "fstatfs";
327 syscall_table[SYS_fstatvfs] = "fstatvfs";
329 #ifdef SYS_fstatvfs64
330 syscall_table[SYS_fstatvfs64] = "fstatvfs64";
333 syscall_table[SYS_fsync] = "fsync";
336 syscall_table[SYS_ftruncate] = "ftruncate";
338 #ifdef SYS_ftruncate64
339 syscall_table[SYS_ftruncate64] = "ftruncate64";
342 syscall_table[SYS_fuser] = "fuser";
345 syscall_table[SYS_fxstat] = "fxstat";
347 #ifdef SYS_get_sysinfo
348 syscall_table[SYS_get_sysinfo] = "get_sysinfo";
350 #ifdef SYS_getaddressconf
351 syscall_table[SYS_getaddressconf] = "getaddressconf";
353 #ifdef SYS_getcontext
354 syscall_table[SYS_getcontext] = "getcontext";
357 syscall_table[SYS_getdents] = "getdents";
359 #ifdef SYS_getdents64
360 syscall_table[SYS_getdents64] = "getdents64";
362 #ifdef SYS_getdirentries
363 syscall_table[SYS_getdirentries] = "getdirentries";
365 #ifdef SYS_getdomainname
366 syscall_table[SYS_getdomainname] = "getdomainname";
368 #ifdef SYS_getdtablesize
369 syscall_table[SYS_getdtablesize] = "getdtablesize";
372 syscall_table[SYS_getfh] = "getfh";
375 syscall_table[SYS_getfsstat] = "getfsstat";
378 syscall_table[SYS_getgid] = "getgid";
381 syscall_table[SYS_getgroups] = "getgroups";
384 syscall_table[SYS_gethostid] = "gethostid";
386 #ifdef SYS_gethostname
387 syscall_table[SYS_gethostname] = "gethostname";
390 syscall_table[SYS_getitimer] = "getitimer";
393 syscall_table[SYS_getksym] = "getksym";
396 syscall_table[SYS_getlogin] = "getlogin";
399 syscall_table[SYS_getmnt] = "getmnt";
402 syscall_table[SYS_getmsg] = "getmsg";
404 #ifdef SYS_getpagesize
405 syscall_table[SYS_getpagesize] = "getpagesize";
407 #ifdef SYS_getpeername
408 syscall_table[SYS_getpeername] = "getpeername";
411 syscall_table[SYS_getpgid] = "getpgid";
414 syscall_table[SYS_getpgrp] = "getpgrp";
417 syscall_table[SYS_getpid] = "getpid";
420 syscall_table[SYS_getpmsg] = "getpmsg";
422 #ifdef SYS_getpriority
423 syscall_table[SYS_getpriority] = "getpriority";
426 syscall_table[SYS_getrlimit] = "getrlimit";
428 #ifdef SYS_getrlimit64
429 syscall_table[SYS_getrlimit64] = "getrlimit64";
432 syscall_table[SYS_getrusage] = "getrusage";
435 syscall_table[SYS_getsid] = "getsid";
437 #ifdef SYS_getsockname
438 syscall_table[SYS_getsockname] = "getsockname";
440 #ifdef SYS_getsockopt
441 syscall_table[SYS_getsockopt] = "getsockopt";
443 #ifdef SYS_gettimeofday
444 syscall_table[SYS_gettimeofday] = "gettimeofday";
447 syscall_table[SYS_getuid] = "getuid";
450 syscall_table[SYS_gtty] = "gtty";
453 syscall_table[SYS_hrtsys] = "hrtsys";
456 syscall_table[SYS_inst_sync] = "inst_sync";
458 #ifdef SYS_install_utrap
459 syscall_table[SYS_install_utrap] = "install_utrap";
462 syscall_table[SYS_invlpg] = "invlpg";
465 syscall_table[SYS_ioctl] = "ioctl";
468 syscall_table[SYS_kaio] = "kaio";
471 syscall_table[SYS_keyctl] = "keyctl";
474 syscall_table[SYS_kill] = "kill";
477 syscall_table[SYS_killpg] = "killpg";
480 syscall_table[SYS_kloadcall] = "kloadcall";
483 syscall_table[SYS_kmodcall] = "kmodcall";
485 #ifdef SYS_ksigaction
486 syscall_table[SYS_ksigaction] = "ksigaction";
488 #ifdef SYS_ksigprocmask
489 syscall_table[SYS_ksigprocmask] = "ksigprocmask";
492 syscall_table[SYS_ksigqueue] = "ksigqueue";
495 syscall_table[SYS_lchown] = "lchown";
498 syscall_table[SYS_link] = "link";
501 syscall_table[SYS_listen] = "listen";
504 syscall_table[SYS_llseek] = "llseek";
507 syscall_table[SYS_lseek] = "lseek";
510 syscall_table[SYS_lseek64] = "lseek64";
513 syscall_table[SYS_lstat] = "lstat";
516 syscall_table[SYS_lstat64] = "lstat64";
519 syscall_table[SYS_lvldom] = "lvldom";
522 syscall_table[SYS_lvlequal] = "lvlequal";
525 syscall_table[SYS_lvlfile] = "lvlfile";
528 syscall_table[SYS_lvlipc] = "lvlipc";
531 syscall_table[SYS_lvlproc] = "lvlproc";
534 syscall_table[SYS_lvlvfs] = "lvlvfs";
537 syscall_table[SYS_lwp_alarm] = "lwp_alarm";
539 #ifdef SYS_lwp_cond_broadcast
540 syscall_table[SYS_lwp_cond_broadcast] = "lwp_cond_broadcast";
542 #ifdef SYS_lwp_cond_signal
543 syscall_table[SYS_lwp_cond_signal] = "lwp_cond_signal";
545 #ifdef SYS_lwp_cond_wait
546 syscall_table[SYS_lwp_cond_wait] = "lwp_cond_wait";
548 #ifdef SYS_lwp_continue
549 syscall_table[SYS_lwp_continue] = "lwp_continue";
551 #ifdef SYS_lwp_create
552 syscall_table[SYS_lwp_create] = "lwp_create";
555 syscall_table[SYS_lwp_exit] = "lwp_exit";
557 #ifdef SYS_lwp_getprivate
558 syscall_table[SYS_lwp_getprivate] = "lwp_getprivate";
561 syscall_table[SYS_lwp_info] = "lwp_info";
564 syscall_table[SYS_lwp_kill] = "lwp_kill";
566 #ifdef SYS_lwp_mutex_init
567 syscall_table[SYS_lwp_mutex_init] = "lwp_mutex_init";
569 #ifdef SYS_lwp_mutex_lock
570 syscall_table[SYS_lwp_mutex_lock] = "lwp_mutex_lock";
572 #ifdef SYS_lwp_mutex_trylock
573 syscall_table[SYS_lwp_mutex_trylock] = "lwp_mutex_trylock";
575 #ifdef SYS_lwp_mutex_unlock
576 syscall_table[SYS_lwp_mutex_unlock] = "lwp_mutex_unlock";
578 #ifdef SYS_lwp_private
579 syscall_table[SYS_lwp_private] = "lwp_private";
582 syscall_table[SYS_lwp_self] = "lwp_self";
584 #ifdef SYS_lwp_sema_post
585 syscall_table[SYS_lwp_sema_post] = "lwp_sema_post";
587 #ifdef SYS_lwp_sema_trywait
588 syscall_table[SYS_lwp_sema_trywait] = "lwp_sema_trywait";
590 #ifdef SYS_lwp_sema_wait
591 syscall_table[SYS_lwp_sema_wait] = "lwp_sema_wait";
593 #ifdef SYS_lwp_setprivate
594 syscall_table[SYS_lwp_setprivate] = "lwp_setprivate";
596 #ifdef SYS_lwp_sigredirect
597 syscall_table[SYS_lwp_sigredirect] = "lwp_sigredirect";
599 #ifdef SYS_lwp_suspend
600 syscall_table[SYS_lwp_suspend] = "lwp_suspend";
603 syscall_table[SYS_lwp_wait] = "lwp_wait";
606 syscall_table[SYS_lxstat] = "lxstat";
609 syscall_table[SYS_madvise] = "madvise";
612 syscall_table[SYS_memcntl] = "memcntl";
615 syscall_table[SYS_mincore] = "mincore";
618 syscall_table[SYS_mincore] = "mincore";
621 syscall_table[SYS_mkdir] = "mkdir";
624 syscall_table[SYS_mkmld] = "mkmld";
627 syscall_table[SYS_mknod] = "mknod";
630 syscall_table[SYS_mldmode] = "mldmode";
633 syscall_table[SYS_mmap] = "mmap";
636 syscall_table[SYS_mmap64] = "mmap64";
639 syscall_table[SYS_modadm] = "modadm";
642 syscall_table[SYS_modctl] = "modctl";
645 syscall_table[SYS_modload] = "modload";
648 syscall_table[SYS_modpath] = "modpath";
651 syscall_table[SYS_modstat] = "modstat";
654 syscall_table[SYS_moduload] = "moduload";
657 syscall_table[SYS_mount] = "mount";
660 syscall_table[SYS_mprotect] = "mprotect";
663 syscall_table[SYS_mremap] = "mremap";
665 #ifdef SYS_msfs_syscall
666 syscall_table[SYS_msfs_syscall] = "msfs_syscall";
669 syscall_table[SYS_msgctl] = "msgctl";
672 syscall_table[SYS_msgget] = "msgget";
675 syscall_table[SYS_msgrcv] = "msgrcv";
678 syscall_table[SYS_msgsnd] = "msgsnd";
681 syscall_table[SYS_msgsys] = "msgsys";
684 syscall_table[SYS_msleep] = "msleep";
687 syscall_table[SYS_msync] = "msync";
690 syscall_table[SYS_munmap] = "munmap";
693 syscall_table[SYS_mvalid] = "mvalid";
696 syscall_table[SYS_mwakeup] = "mwakeup";
699 syscall_table[SYS_naccept] = "naccept";
702 syscall_table[SYS_nanosleep] = "nanosleep";
705 syscall_table[SYS_nfssvc] = "nfssvc";
708 syscall_table[SYS_nfssys] = "nfssys";
710 #ifdef SYS_ngetpeername
711 syscall_table[SYS_ngetpeername] = "ngetpeername";
713 #ifdef SYS_ngetsockname
714 syscall_table[SYS_ngetsockname] = "ngetsockname";
717 syscall_table[SYS_nice] = "nice";
720 syscall_table[SYS_nrecvfrom] = "nrecvfrom";
723 syscall_table[SYS_nrecvmsg] = "nrecvmsg";
726 syscall_table[SYS_nsendmsg] = "nsendmsg";
728 #ifdef SYS_ntp_adjtime
729 syscall_table[SYS_ntp_adjtime] = "ntp_adjtime";
731 #ifdef SYS_ntp_gettime
732 syscall_table[SYS_ntp_gettime] = "ntp_gettime";
735 syscall_table[SYS_nuname] = "nuname";
738 syscall_table[SYS_obreak] = "obreak";
740 #ifdef SYS_old_accept
741 syscall_table[SYS_old_accept] = "old_accept";
744 syscall_table[SYS_old_fstat] = "old_fstat";
746 #ifdef SYS_old_getpeername
747 syscall_table[SYS_old_getpeername] = "old_getpeername";
749 #ifdef SYS_old_getpgrp
750 syscall_table[SYS_old_getpgrp] = "old_getpgrp";
752 #ifdef SYS_old_getsockname
753 syscall_table[SYS_old_getsockname] = "old_getsockname";
755 #ifdef SYS_old_killpg
756 syscall_table[SYS_old_killpg] = "old_killpg";
759 syscall_table[SYS_old_lstat] = "old_lstat";
762 syscall_table[SYS_old_recv] = "old_recv";
764 #ifdef SYS_old_recvfrom
765 syscall_table[SYS_old_recvfrom] = "old_recvfrom";
767 #ifdef SYS_old_recvmsg
768 syscall_table[SYS_old_recvmsg] = "old_recvmsg";
771 syscall_table[SYS_old_send] = "old_send";
773 #ifdef SYS_old_sendmsg
774 syscall_table[SYS_old_sendmsg] = "old_sendmsg";
776 #ifdef SYS_old_sigblock
777 syscall_table[SYS_old_sigblock] = "old_sigblock";
779 #ifdef SYS_old_sigsetmask
780 syscall_table[SYS_old_sigsetmask] = "old_sigsetmask";
782 #ifdef SYS_old_sigvec
783 syscall_table[SYS_old_sigvec] = "old_sigvec";
786 syscall_table[SYS_old_stat] = "old_stat";
788 #ifdef SYS_old_vhangup
789 syscall_table[SYS_old_vhangup] = "old_vhangup";
792 syscall_table[SYS_old_wait] = "old_wait";
795 syscall_table[SYS_oldquota] = "oldquota";
798 syscall_table[SYS_online] = "online";
801 syscall_table[SYS_open] = "open";
804 syscall_table[SYS_open64] = "open64";
807 syscall_table[SYS_ovadvise] = "ovadvise";
810 syscall_table[SYS_p_online] = "p_online";
813 syscall_table[SYS_pagelock] = "pagelock";
816 syscall_table[SYS_pathconf] = "pathconf";
819 syscall_table[SYS_pause] = "pause";
822 syscall_table[SYS_pgrpsys] = "pgrpsys";
825 syscall_table[SYS_pid_block] = "pid_block";
827 #ifdef SYS_pid_unblock
828 syscall_table[SYS_pid_unblock] = "pid_unblock";
831 syscall_table[SYS_pipe] = "pipe";
834 syscall_table[SYS_plock] = "plock";
837 syscall_table[SYS_poll] = "poll";
840 syscall_table[SYS_prctl] = "prctl";
843 syscall_table[SYS_pread] = "pread";
846 syscall_table[SYS_pread64] = "pread64";
849 syscall_table[SYS_pread64] = "pread64";
852 syscall_table[SYS_prepblock] = "prepblock";
855 syscall_table[SYS_priocntl] = "priocntl";
857 #ifdef SYS_priocntllst
858 syscall_table[SYS_priocntllst] = "priocntllst";
860 #ifdef SYS_priocntlset
861 syscall_table[SYS_priocntlset] = "priocntlset";
863 #ifdef SYS_priocntlsys
864 syscall_table[SYS_priocntlsys] = "priocntlsys";
867 syscall_table[SYS_procblk] = "procblk";
869 #ifdef SYS_processor_bind
870 syscall_table[SYS_processor_bind] = "processor_bind";
872 #ifdef SYS_processor_exbind
873 syscall_table[SYS_processor_exbind] = "processor_exbind";
875 #ifdef SYS_processor_info
876 syscall_table[SYS_processor_info] = "processor_info";
879 syscall_table[SYS_procpriv] = "procpriv";
882 syscall_table[SYS_profil] = "profil";
884 #ifdef SYS_proplist_syscall
885 syscall_table[SYS_proplist_syscall] = "proplist_syscall";
888 syscall_table[SYS_pset] = "pset";
891 syscall_table[SYS_ptrace] = "ptrace";
894 syscall_table[SYS_putmsg] = "putmsg";
897 syscall_table[SYS_putpmsg] = "putpmsg";
900 syscall_table[SYS_pwrite] = "pwrite";
903 syscall_table[SYS_pwrite64] = "pwrite64";
906 syscall_table[SYS_quotactl] = "quotactl";
909 syscall_table[SYS_rdblock] = "rdblock";
912 syscall_table[SYS_read] = "read";
915 syscall_table[SYS_readlink] = "readlink";
918 syscall_table[SYS_readv] = "readv";
921 syscall_table[SYS_reboot] = "reboot";
924 syscall_table[SYS_recv] = "recv";
927 syscall_table[SYS_recvfrom] = "recvfrom";
930 syscall_table[SYS_recvmsg] = "recvmsg";
933 syscall_table[SYS_rename] = "rename";
935 #ifdef SYS_resolvepath
936 syscall_table[SYS_resolvepath] = "resolvepath";
939 syscall_table[SYS_revoke] = "revoke";
942 syscall_table[SYS_rfsys] = "rfsys";
945 syscall_table[SYS_rmdir] = "rmdir";
948 syscall_table[SYS_rpcsys] = "rpcsys";
951 syscall_table[SYS_sbrk] = "sbrk";
954 syscall_table[SYS_schedctl] = "schedctl";
957 syscall_table[SYS_secadvise] = "secadvise";
960 syscall_table[SYS_secsys] = "secsys";
963 syscall_table[SYS_security] = "security";
966 syscall_table[SYS_select] = "select";
969 syscall_table[SYS_semctl] = "semctl";
972 syscall_table[SYS_semget] = "semget";
975 syscall_table[SYS_semop] = "semop";
978 syscall_table[SYS_semsys] = "semsys";
981 syscall_table[SYS_send] = "send";
984 syscall_table[SYS_sendmsg] = "sendmsg";
987 syscall_table[SYS_sendto] = "sendto";
989 #ifdef SYS_set_program_attributes
990 syscall_table[SYS_set_program_attributes] = "set_program_attributes";
992 #ifdef SYS_set_speculative
993 syscall_table[SYS_set_speculative] = "set_speculative";
995 #ifdef SYS_set_sysinfo
996 syscall_table[SYS_set_sysinfo] = "set_sysinfo";
998 #ifdef SYS_setcontext
999 syscall_table[SYS_setcontext] = "setcontext";
1001 #ifdef SYS_setdomainname
1002 syscall_table[SYS_setdomainname] = "setdomainname";
1005 syscall_table[SYS_setegid] = "setegid";
1008 syscall_table[SYS_seteuid] = "seteuid";
1011 syscall_table[SYS_setgid] = "setgid";
1013 #ifdef SYS_setgroups
1014 syscall_table[SYS_setgroups] = "setgroups";
1016 #ifdef SYS_sethostid
1017 syscall_table[SYS_sethostid] = "sethostid";
1019 #ifdef SYS_sethostname
1020 syscall_table[SYS_sethostname] = "sethostname";
1022 #ifdef SYS_setitimer
1023 syscall_table[SYS_setitimer] = "setitimer";
1026 syscall_table[SYS_setlogin] = "setlogin";
1029 syscall_table[SYS_setpgid] = "setpgid";
1032 syscall_table[SYS_setpgrp] = "setpgrp";
1034 #ifdef SYS_setpriority
1035 syscall_table[SYS_setpriority] = "setpriority";
1038 syscall_table[SYS_setregid] = "setregid";
1041 syscall_table[SYS_setreuid] = "setreuid";
1043 #ifdef SYS_setrlimit
1044 syscall_table[SYS_setrlimit] = "setrlimit";
1046 #ifdef SYS_setrlimit64
1047 syscall_table[SYS_setrlimit64] = "setrlimit64";
1050 syscall_table[SYS_setsid] = "setsid";
1052 #ifdef SYS_setsockopt
1053 syscall_table[SYS_setsockopt] = "setsockopt";
1055 #ifdef SYS_settimeofday
1056 syscall_table[SYS_settimeofday] = "settimeofday";
1059 syscall_table[SYS_setuid] = "setuid";
1062 syscall_table[SYS_sgi] = "sgi";
1064 #ifdef SYS_sgifastpath
1065 syscall_table[SYS_sgifastpath] = "sgifastpath";
1068 syscall_table[SYS_sgikopt] = "sgikopt";
1071 syscall_table[SYS_sginap] = "sginap";
1074 syscall_table[SYS_shmat] = "shmat";
1077 syscall_table[SYS_shmctl] = "shmctl";
1080 syscall_table[SYS_shmdt] = "shmdt";
1083 syscall_table[SYS_shmget] = "shmget";
1086 syscall_table[SYS_shmsys] = "shmsys";
1089 syscall_table[SYS_shutdown] = "shutdown";
1091 #ifdef SYS_sigaction
1092 syscall_table[SYS_sigaction] = "sigaction";
1094 #ifdef SYS_sigaltstack
1095 syscall_table[SYS_sigaltstack] = "sigaltstack";
1097 #ifdef SYS_sigaltstack
1098 syscall_table[SYS_sigaltstack] = "sigaltstack";
1101 syscall_table[SYS_sigblock] = "sigblock";
1104 syscall_table[SYS_signal] = "signal";
1106 #ifdef SYS_signotify
1107 syscall_table[SYS_signotify] = "signotify";
1109 #ifdef SYS_signotifywait
1110 syscall_table[SYS_signotifywait] = "signotifywait";
1112 #ifdef SYS_sigpending
1113 syscall_table[SYS_sigpending] = "sigpending";
1116 syscall_table[SYS_sigpoll] = "sigpoll";
1118 #ifdef SYS_sigprocmask
1119 syscall_table[SYS_sigprocmask] = "sigprocmask";
1122 syscall_table[SYS_sigqueue] = "sigqueue";
1124 #ifdef SYS_sigreturn
1125 syscall_table[SYS_sigreturn] = "sigreturn";
1127 #ifdef SYS_sigsendset
1128 syscall_table[SYS_sigsendset] = "sigsendset";
1130 #ifdef SYS_sigsendsys
1131 syscall_table[SYS_sigsendsys] = "sigsendsys";
1133 #ifdef SYS_sigsetmask
1134 syscall_table[SYS_sigsetmask] = "sigsetmask";
1137 syscall_table[SYS_sigstack] = "sigstack";
1139 #ifdef SYS_sigsuspend
1140 syscall_table[SYS_sigsuspend] = "sigsuspend";
1143 syscall_table[SYS_sigvec] = "sigvec";
1146 syscall_table[SYS_sigwait] = "sigwait";
1148 #ifdef SYS_sigwaitprim
1149 syscall_table[SYS_sigwaitprim] = "sigwaitprim";
1152 syscall_table[SYS_sleep] = "sleep";
1154 #ifdef SYS_so_socket
1155 syscall_table[SYS_so_socket] = "so_socket";
1157 #ifdef SYS_so_socketpair
1158 syscall_table[SYS_so_socketpair] = "so_socketpair";
1160 #ifdef SYS_sockconfig
1161 syscall_table[SYS_sockconfig] = "sockconfig";
1164 syscall_table[SYS_socket] = "socket";
1166 #ifdef SYS_socketpair
1167 syscall_table[SYS_socketpair] = "socketpair";
1170 syscall_table[SYS_sproc] = "sproc";
1173 syscall_table[SYS_sprocsp] = "sprocsp";
1176 syscall_table[SYS_sstk] = "sstk";
1179 syscall_table[SYS_stat] = "stat";
1182 syscall_table[SYS_stat64] = "stat64";
1185 syscall_table[SYS_statfs] = "statfs";
1188 syscall_table[SYS_statvfs] = "statvfs";
1190 #ifdef SYS_statvfs64
1191 syscall_table[SYS_statvfs64] = "statvfs64";
1194 syscall_table[SYS_stime] = "stime";
1197 syscall_table[SYS_stty] = "stty";
1199 #ifdef SYS_subsys_info
1200 syscall_table[SYS_subsys_info] = "subsys_info";
1203 syscall_table[SYS_swapctl] = "swapctl";
1206 syscall_table[SYS_swapon] = "swapon";
1209 syscall_table[SYS_symlink] = "symlink";
1212 syscall_table[SYS_sync] = "sync";
1215 syscall_table[SYS_sys3b] = "sys3b";
1218 syscall_table[SYS_syscall] = "syscall";
1220 #ifdef SYS_sysconfig
1221 syscall_table[SYS_sysconfig] = "sysconfig";
1224 syscall_table[SYS_sysfs] = "sysfs";
1227 syscall_table[SYS_sysi86] = "sysi86";
1230 syscall_table[SYS_sysinfo] = "sysinfo";
1233 syscall_table[SYS_sysmips] = "sysmips";
1236 syscall_table[SYS_syssun] = "syssun";
1238 #ifdef SYS_systeminfo
1239 syscall_table[SYS_systeminfo] = "systeminfo";
1242 syscall_table[SYS_table] = "table";
1245 syscall_table[SYS_time] = "time";
1247 #ifdef SYS_timedwait
1248 syscall_table[SYS_timedwait] = "timedwait";
1250 #ifdef SYS_timer_create
1251 syscall_table[SYS_timer_create] = "timer_create";
1253 #ifdef SYS_timer_delete
1254 syscall_table[SYS_timer_delete] = "timer_delete";
1256 #ifdef SYS_timer_getoverrun
1257 syscall_table[SYS_timer_getoverrun] = "timer_getoverrun";
1259 #ifdef SYS_timer_gettime
1260 syscall_table[SYS_timer_gettime] = "timer_gettime";
1262 #ifdef SYS_timer_settime
1263 syscall_table[SYS_timer_settime] = "timer_settime";
1266 syscall_table[SYS_times] = "times";
1269 syscall_table[SYS_truncate] = "truncate";
1271 #ifdef SYS_truncate64
1272 syscall_table[SYS_truncate64] = "truncate64";
1275 syscall_table[SYS_tsolsys] = "tsolsys";
1278 syscall_table[SYS_uadmin] = "uadmin";
1281 syscall_table[SYS_ulimit] = "ulimit";
1284 syscall_table[SYS_umask] = "umask";
1287 syscall_table[SYS_umount] = "umount";
1290 syscall_table[SYS_uname] = "uname";
1293 syscall_table[SYS_unblock] = "unblock";
1296 syscall_table[SYS_unlink] = "unlink";
1299 syscall_table[SYS_unmount] = "unmount";
1301 #ifdef SYS_usleep_thread
1302 syscall_table[SYS_usleep_thread] = "usleep_thread";
1305 syscall_table[SYS_uswitch] = "uswitch";
1307 #ifdef SYS_utc_adjtime
1308 syscall_table[SYS_utc_adjtime] = "utc_adjtime";
1310 #ifdef SYS_utc_gettime
1311 syscall_table[SYS_utc_gettime] = "utc_gettime";
1314 syscall_table[SYS_utime] = "utime";
1317 syscall_table[SYS_utimes] = "utimes";
1320 syscall_table[SYS_utssys] = "utssys";
1323 syscall_table[SYS_vfork] = "vfork";
1326 syscall_table[SYS_vhangup] = "vhangup";
1329 syscall_table[SYS_vtrace] = "vtrace";
1332 syscall_table[SYS_wait] = "wait";
1335 syscall_table[SYS_waitid] = "waitid";
1338 syscall_table[SYS_waitsys] = "waitsys";
1341 syscall_table[SYS_write] = "write";
1344 syscall_table[SYS_writev] = "writev";
1347 syscall_table[SYS_xenix] = "xenix";
1350 syscall_table[SYS_xmknod] = "xmknod";
1353 syscall_table[SYS_xstat] = "xstat";
1356 syscall_table[SYS_yield] = "yield";
1360 /* Prettyprint syscall NUM. */
1363 proc_prettyfprint_syscall (FILE *file, int num, int verbose)
1365 if (syscall_table[num])
1366 fprintf (file, "SYS_%s ", syscall_table[num]);
1368 fprintf (file, "<Unknown syscall %d> ", num);
1372 proc_prettyprint_syscall (int num, int verbose)
1374 proc_prettyfprint_syscall (stdout, num, verbose);
1377 /* Prettyprint all syscalls in SYSSET. */
1380 proc_prettyfprint_syscalls (FILE *file, sysset_t *sysset, int verbose)
1384 for (i = 0; i < MAX_SYSCALLS; i++)
1385 if (prismember (sysset, i))
1387 proc_prettyfprint_syscall (file, i, verbose);
1389 fprintf (file, "\n");
1393 proc_prettyprint_syscalls (sysset_t *sysset, int verbose)
1395 proc_prettyfprint_syscalls (stdout, sysset, verbose);
1398 /* Prettyprint signals. */
1400 /* Signal translation table. */
1402 static struct trans signal_table[] =
1404 { 0, "<no signal>", "no signal" },
1406 { SIGHUP, "SIGHUP", "Hangup" },
1409 { SIGINT, "SIGINT", "Interrupt (rubout)" },
1412 { SIGQUIT, "SIGQUIT", "Quit (ASCII FS)" },
1415 { SIGILL, "SIGILL", "Illegal instruction" }, /* not reset when caught */
1418 { SIGTRAP, "SIGTRAP", "Trace trap" }, /* not reset when caught */
1421 { SIGABRT, "SIGABRT", "used by abort()" }, /* replaces SIGIOT */
1424 { SIGIOT, "SIGIOT", "IOT instruction" },
1427 { SIGEMT, "SIGEMT", "EMT instruction" },
1430 { SIGFPE, "SIGFPE", "Floating point exception" },
1433 { SIGKILL, "SIGKILL", "Kill" }, /* Solaris: cannot be caught/ignored */
1436 { SIGBUS, "SIGBUS", "Bus error" },
1439 { SIGSEGV, "SIGSEGV", "Segmentation violation" },
1442 { SIGSYS, "SIGSYS", "Bad argument to system call" },
1445 { SIGPIPE, "SIGPIPE", "Write to pipe with no one to read it" },
1448 { SIGALRM, "SIGALRM", "Alarm clock" },
1451 { SIGTERM, "SIGTERM", "Software termination signal from kill" },
1454 { SIGUSR1, "SIGUSR1", "User defined signal 1" },
1457 { SIGUSR2, "SIGUSR2", "User defined signal 2" },
1460 { SIGCHLD, "SIGCHLD", "Child status changed" }, /* Posix version */
1463 { SIGCLD, "SIGCLD", "Child status changed" }, /* Solaris version */
1466 { SIGPWR, "SIGPWR", "Power-fail restart" },
1469 { SIGWINCH, "SIGWINCH", "Window size change" },
1472 { SIGURG, "SIGURG", "Urgent socket condition" },
1475 { SIGPOLL, "SIGPOLL", "Pollable event" },
1478 { SIGIO, "SIGIO", "Socket I/O possible" }, /* alias for SIGPOLL */
1481 { SIGSTOP, "SIGSTOP", "Stop, not from tty" }, /* cannot be caught or
1485 { SIGTSTP, "SIGTSTP", "User stop from tty" },
1488 { SIGCONT, "SIGCONT", "Stopped process has been continued" },
1491 { SIGTTIN, "SIGTTIN", "Background tty read attempted" },
1494 { SIGTTOU, "SIGTTOU", "Background tty write attempted" },
1497 { SIGVTALRM, "SIGVTALRM", "Virtual timer expired" },
1500 { SIGPROF, "SIGPROF", "Profiling timer expired" },
1503 { SIGXCPU, "SIGXCPU", "Exceeded CPU limit" },
1506 { SIGXFSZ, "SIGXFSZ", "Exceeded file size limit" },
1509 { SIGWAITING, "SIGWAITING", "Process's LWPs are blocked" },
1512 { SIGLWP, "SIGLWP", "Used by thread library" },
1515 { SIGFREEZE, "SIGFREEZE", "Used by CPR" },
1518 { SIGTHAW, "SIGTHAW", "Used by CPR" },
1521 { SIGCANCEL, "SIGCANCEL", "Used by libthread" },
1524 { SIGLOST, "SIGLOST", "Resource lost" },
1527 { SIG32, "SIG32", "Reserved for kernel usage (Irix)" },
1530 { SIGPTINTR, "SIGPTINTR", "Posix 1003.1b" },
1533 { SIGTRESCHED, "SIGTRESCHED", "Posix 1003.1b" },
1536 { SIGINFO, "SIGINFO", "Information request" },
1539 { SIGRESV, "SIGRESV", "Reserved by Digital for future use" },
1542 { SIGAIO, "SIGAIO", "Asynchronous I/O signal" },
1545 /* FIXME: add real-time signals. */
1548 /* Prettyprint signal number SIGNO. */
1551 proc_prettyfprint_signal (FILE *file, int signo, int verbose)
1555 for (i = 0; i < sizeof (signal_table) / sizeof (signal_table[0]); i++)
1556 if (signo == signal_table[i].value)
1558 fprintf (file, "%s", signal_table[i].name);
1560 fprintf (file, ": %s\n", signal_table[i].desc);
1562 fprintf (file, " ");
1565 fprintf (file, "Unknown signal %d%c", signo, verbose ? '\n' : ' ');
1569 proc_prettyprint_signal (int signo, int verbose)
1571 proc_prettyfprint_signal (stdout, signo, verbose);
1574 /* Prettyprint all signals in SIGSET. */
1577 proc_prettyfprint_signalset (FILE *file, sigset_t *sigset, int verbose)
1581 /* Loop over all signal numbers from 0 to NSIG, using them as the
1582 index to prismember. The signal table had better not contain
1583 aliases, for if it does they will both be printed. */
1585 for (i = 0; i < NSIG; i++)
1586 if (prismember (sigset, i))
1587 proc_prettyfprint_signal (file, i, verbose);
1590 fprintf (file, "\n");
1594 proc_prettyprint_signalset (sigset_t *sigset, int verbose)
1596 proc_prettyfprint_signalset (stdout, sigset, verbose);
1600 /* Prettyprint faults. */
1602 /* Fault translation table. */
1604 static struct trans fault_table[] =
1607 { FLTILL, "FLTILL", "Illegal instruction" },
1610 { FLTPRIV, "FLTPRIV", "Privileged instruction" },
1613 { FLTBPT, "FLTBPT", "Breakpoint trap" },
1616 { FLTTRACE, "FLTTRACE", "Trace trap" },
1619 { FLTACCESS, "FLTACCESS", "Memory access fault" },
1622 { FLTBOUNDS, "FLTBOUNDS", "Memory bounds violation" },
1625 { FLTIOVF, "FLTIOVF", "Integer overflow" },
1628 { FLTIZDIV, "FLTIZDIV", "Integer zero divide" },
1631 { FLTFPE, "FLTFPE", "Floating-point exception" },
1634 { FLTSTACK, "FLTSTACK", "Unrecoverable stack fault" },
1637 { FLTPAGE, "FLTPAGE", "Recoverable page fault" },
1640 { FLTPCINVAL, "FLTPCINVAL", "Invalid PC exception" },
1643 { FLTWATCH, "FLTWATCH", "User watchpoint" },
1646 { FLTKWATCH, "FLTKWATCH", "Kernel watchpoint" },
1649 { FLTSCWATCH, "FLTSCWATCH", "Hit a store conditional on a watched page" },
1653 /* Work horse. Accepts an index into the fault table, prints it
1657 prettyfprint_faulttable_entry (FILE *file, int i, int verbose)
1659 fprintf (file, "%s", fault_table[i].name);
1661 fprintf (file, ": %s\n", fault_table[i].desc);
1663 fprintf (file, " ");
1666 /* Prettyprint hardware fault number FAULTNO. */
1669 proc_prettyfprint_fault (FILE *file, int faultno, int verbose)
1673 for (i = 0; i < ARRAY_SIZE (fault_table); i++)
1674 if (faultno == fault_table[i].value)
1676 prettyfprint_faulttable_entry (file, i, verbose);
1680 fprintf (file, "Unknown hardware fault %d%c",
1681 faultno, verbose ? '\n' : ' ');
1685 proc_prettyprint_fault (int faultno, int verbose)
1687 proc_prettyfprint_fault (stdout, faultno, verbose);
1690 /* Prettyprint all faults in FLTSET. */
1693 proc_prettyfprint_faultset (FILE *file, fltset_t *fltset, int verbose)
1697 /* Loop through the fault table, using the value field as the index
1698 to prismember. The fault table had better not contain aliases,
1699 for if it does they will both be printed. */
1701 for (i = 0; i < ARRAY_SIZE (fault_table); i++)
1702 if (prismember (fltset, fault_table[i].value))
1703 prettyfprint_faulttable_entry (file, i, verbose);
1706 fprintf (file, "\n");
1710 proc_prettyprint_faultset (fltset_t *fltset, int verbose)
1712 proc_prettyfprint_faultset (stdout, fltset, verbose);
1715 /* TODO: actions, holds... */
1718 proc_prettyprint_actionset (struct sigaction *actions, int verbose)
1723 /* Provide a prototype to silence -Wmissing-prototypes. */
1724 void _initialize_proc_events (void);
1727 _initialize_proc_events (void)
1729 init_syscall_table ();