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 /* Ugh -- UnixWare and Solaris spell these differently! */
69 #define SYS_lwp_create SYS_lwpcreate
73 #define SYS_lwp_exit SYS_lwpexit
77 #define SYS_lwp_wait SYS_lwpwait
81 #define SYS_lwp_self SYS_lwpself
85 #define SYS_lwp_info SYS_lwpinfo
89 #define SYS_lwp_private SYS_lwpprivate
93 #define SYS_lwp_kill SYS_lwpkill
97 #define SYS_lwp_suspend SYS_lwpsuspend
100 #ifdef SYS_lwpcontinue
101 #define SYS_lwp_continue SYS_lwpcontinue
105 /* Syscall translation table. */
107 #define MAX_SYSCALLS 262 /* Pretty arbitrary. */
108 static char *syscall_table[MAX_SYSCALLS];
111 init_syscall_table (void)
113 #ifdef SYS_BSD_getime
114 syscall_table[SYS_BSD_getime] = "BSD_getime";
116 #ifdef SYS_BSDgetpgrp
117 syscall_table[SYS_BSDgetpgrp] = "BSDgetpgrp";
119 #ifdef SYS_BSDsetpgrp
120 syscall_table[SYS_BSDsetpgrp] = "BSDsetpgrp";
123 syscall_table[SYS_acancel] = "acancel";
126 syscall_table[SYS_accept] = "accept";
129 syscall_table[SYS_access] = "access";
132 syscall_table[SYS_acct] = "acct";
135 syscall_table[SYS_acl] = "acl";
138 syscall_table[SYS_aclipc] = "aclipc";
141 syscall_table[SYS_adjtime] = "adjtime";
143 #ifdef SYS_afs_syscall
144 syscall_table[SYS_afs_syscall] = "afs_syscall";
147 syscall_table[SYS_alarm] = "alarm";
150 syscall_table[SYS_alt_plock] = "alt_plock";
152 #ifdef SYS_alt_sigpending
153 syscall_table[SYS_alt_sigpending] = "alt_sigpending";
156 syscall_table[SYS_async] = "async";
158 #ifdef SYS_async_daemon
159 syscall_table[SYS_async_daemon] = "async_daemon";
162 syscall_table[SYS_audcntl] = "audcntl";
165 syscall_table[SYS_audgen] = "audgen";
168 syscall_table[SYS_auditbuf] = "auditbuf";
171 syscall_table[SYS_auditctl] = "auditctl";
174 syscall_table[SYS_auditdmp] = "auditdmp";
177 syscall_table[SYS_auditevt] = "auditevt";
180 syscall_table[SYS_auditlog] = "auditlog";
183 syscall_table[SYS_auditsys] = "auditsys";
186 syscall_table[SYS_bind] = "bind";
189 syscall_table[SYS_block] = "block";
192 syscall_table[SYS_brk] = "brk";
195 syscall_table[SYS_cachectl] = "cachectl";
197 #ifdef SYS_cacheflush
198 syscall_table[SYS_cacheflush] = "cacheflush";
200 #ifdef SYS_cancelblock
201 syscall_table[SYS_cancelblock] = "cancelblock";
204 syscall_table[SYS_cg_bind] = "cg_bind";
206 #ifdef SYS_cg_current
207 syscall_table[SYS_cg_current] = "cg_current";
210 syscall_table[SYS_cg_ids] = "cg_ids";
213 syscall_table[SYS_cg_info] = "cg_info";
216 syscall_table[SYS_cg_memloc] = "cg_memloc";
218 #ifdef SYS_cg_processors
219 syscall_table[SYS_cg_processors] = "cg_processors";
222 syscall_table[SYS_chdir] = "chdir";
225 syscall_table[SYS_chflags] = "chflags";
228 syscall_table[SYS_chmod] = "chmod";
231 syscall_table[SYS_chown] = "chown";
234 syscall_table[SYS_chroot] = "chroot";
237 syscall_table[SYS_clocal] = "clocal";
239 #ifdef SYS_clock_getres
240 syscall_table[SYS_clock_getres] = "clock_getres";
242 #ifdef SYS_clock_gettime
243 syscall_table[SYS_clock_gettime] = "clock_gettime";
245 #ifdef SYS_clock_settime
246 syscall_table[SYS_clock_settime] = "clock_settime";
249 syscall_table[SYS_close] = "close";
252 syscall_table[SYS_connect] = "connect";
255 syscall_table[SYS_context] = "context";
258 syscall_table[SYS_creat] = "creat";
261 syscall_table[SYS_creat64] = "creat64";
264 syscall_table[SYS_devstat] = "devstat";
267 syscall_table[SYS_dmi] = "dmi";
270 syscall_table[SYS_door] = "door";
273 syscall_table[SYS_dshmsys] = "dshmsys";
276 syscall_table[SYS_dup] = "dup";
279 syscall_table[SYS_dup2] = "dup2";
282 syscall_table[SYS_evsys] = "evsys";
285 syscall_table[SYS_evtrapret] = "evtrapret";
288 syscall_table[SYS_exec] = "exec";
290 #ifdef SYS_exec_with_loader
291 syscall_table[SYS_exec_with_loader] = "exec_with_loader";
294 syscall_table[SYS_execv] = "execv";
297 syscall_table[SYS_execve] = "execve";
300 syscall_table[SYS_exit] = "exit";
303 syscall_table[SYS_exportfs] = "exportfs";
306 syscall_table[SYS_facl] = "facl";
309 syscall_table[SYS_fchdir] = "fchdir";
312 syscall_table[SYS_fchflags] = "fchflags";
315 syscall_table[SYS_fchmod] = "fchmod";
318 syscall_table[SYS_fchown] = "fchown";
321 syscall_table[SYS_fchroot] = "fchroot";
324 syscall_table[SYS_fcntl] = "fcntl";
327 syscall_table[SYS_fdatasync] = "fdatasync";
330 syscall_table[SYS_fdevstat] = "fdevstat";
333 syscall_table[SYS_fdsync] = "fdsync";
336 syscall_table[SYS_filepriv] = "filepriv";
339 syscall_table[SYS_flock] = "flock";
342 syscall_table[SYS_flvlfile] = "flvlfile";
345 syscall_table[SYS_fork] = "fork";
348 syscall_table[SYS_fork1] = "fork1";
351 syscall_table[SYS_forkall] = "forkall";
354 syscall_table[SYS_fpathconf] = "fpathconf";
357 syscall_table[SYS_fstat] = "fstat";
360 syscall_table[SYS_fstat64] = "fstat64";
363 syscall_table[SYS_fstatfs] = "fstatfs";
366 syscall_table[SYS_fstatvfs] = "fstatvfs";
368 #ifdef SYS_fstatvfs64
369 syscall_table[SYS_fstatvfs64] = "fstatvfs64";
372 syscall_table[SYS_fsync] = "fsync";
375 syscall_table[SYS_ftruncate] = "ftruncate";
377 #ifdef SYS_ftruncate64
378 syscall_table[SYS_ftruncate64] = "ftruncate64";
381 syscall_table[SYS_fuser] = "fuser";
384 syscall_table[SYS_fxstat] = "fxstat";
386 #ifdef SYS_get_sysinfo
387 syscall_table[SYS_get_sysinfo] = "get_sysinfo";
389 #ifdef SYS_getaddressconf
390 syscall_table[SYS_getaddressconf] = "getaddressconf";
392 #ifdef SYS_getcontext
393 syscall_table[SYS_getcontext] = "getcontext";
396 syscall_table[SYS_getdents] = "getdents";
398 #ifdef SYS_getdents64
399 syscall_table[SYS_getdents64] = "getdents64";
401 #ifdef SYS_getdirentries
402 syscall_table[SYS_getdirentries] = "getdirentries";
404 #ifdef SYS_getdomainname
405 syscall_table[SYS_getdomainname] = "getdomainname";
407 #ifdef SYS_getdtablesize
408 syscall_table[SYS_getdtablesize] = "getdtablesize";
411 syscall_table[SYS_getfh] = "getfh";
414 syscall_table[SYS_getfsstat] = "getfsstat";
417 syscall_table[SYS_getgid] = "getgid";
420 syscall_table[SYS_getgroups] = "getgroups";
423 syscall_table[SYS_gethostid] = "gethostid";
425 #ifdef SYS_gethostname
426 syscall_table[SYS_gethostname] = "gethostname";
429 syscall_table[SYS_getitimer] = "getitimer";
432 syscall_table[SYS_getksym] = "getksym";
435 syscall_table[SYS_getlogin] = "getlogin";
438 syscall_table[SYS_getmnt] = "getmnt";
441 syscall_table[SYS_getmsg] = "getmsg";
443 #ifdef SYS_getpagesize
444 syscall_table[SYS_getpagesize] = "getpagesize";
446 #ifdef SYS_getpeername
447 syscall_table[SYS_getpeername] = "getpeername";
450 syscall_table[SYS_getpgid] = "getpgid";
453 syscall_table[SYS_getpgrp] = "getpgrp";
456 syscall_table[SYS_getpid] = "getpid";
459 syscall_table[SYS_getpmsg] = "getpmsg";
461 #ifdef SYS_getpriority
462 syscall_table[SYS_getpriority] = "getpriority";
465 syscall_table[SYS_getrlimit] = "getrlimit";
467 #ifdef SYS_getrlimit64
468 syscall_table[SYS_getrlimit64] = "getrlimit64";
471 syscall_table[SYS_getrusage] = "getrusage";
474 syscall_table[SYS_getsid] = "getsid";
476 #ifdef SYS_getsockname
477 syscall_table[SYS_getsockname] = "getsockname";
479 #ifdef SYS_getsockopt
480 syscall_table[SYS_getsockopt] = "getsockopt";
482 #ifdef SYS_gettimeofday
483 syscall_table[SYS_gettimeofday] = "gettimeofday";
486 syscall_table[SYS_getuid] = "getuid";
489 syscall_table[SYS_gtty] = "gtty";
492 syscall_table[SYS_hrtsys] = "hrtsys";
495 syscall_table[SYS_inst_sync] = "inst_sync";
497 #ifdef SYS_install_utrap
498 syscall_table[SYS_install_utrap] = "install_utrap";
501 syscall_table[SYS_invlpg] = "invlpg";
504 syscall_table[SYS_ioctl] = "ioctl";
507 syscall_table[SYS_kaio] = "kaio";
510 syscall_table[SYS_keyctl] = "keyctl";
513 syscall_table[SYS_kill] = "kill";
516 syscall_table[SYS_killpg] = "killpg";
519 syscall_table[SYS_kloadcall] = "kloadcall";
522 syscall_table[SYS_kmodcall] = "kmodcall";
524 #ifdef SYS_ksigaction
525 syscall_table[SYS_ksigaction] = "ksigaction";
527 #ifdef SYS_ksigprocmask
528 syscall_table[SYS_ksigprocmask] = "ksigprocmask";
531 syscall_table[SYS_ksigqueue] = "ksigqueue";
534 syscall_table[SYS_lchown] = "lchown";
537 syscall_table[SYS_link] = "link";
540 syscall_table[SYS_listen] = "listen";
543 syscall_table[SYS_llseek] = "llseek";
546 syscall_table[SYS_lseek] = "lseek";
549 syscall_table[SYS_lseek64] = "lseek64";
552 syscall_table[SYS_lstat] = "lstat";
555 syscall_table[SYS_lstat64] = "lstat64";
558 syscall_table[SYS_lvldom] = "lvldom";
561 syscall_table[SYS_lvlequal] = "lvlequal";
564 syscall_table[SYS_lvlfile] = "lvlfile";
567 syscall_table[SYS_lvlipc] = "lvlipc";
570 syscall_table[SYS_lvlproc] = "lvlproc";
573 syscall_table[SYS_lvlvfs] = "lvlvfs";
576 syscall_table[SYS_lwp_alarm] = "lwp_alarm";
578 #ifdef SYS_lwp_cond_broadcast
579 syscall_table[SYS_lwp_cond_broadcast] = "lwp_cond_broadcast";
581 #ifdef SYS_lwp_cond_signal
582 syscall_table[SYS_lwp_cond_signal] = "lwp_cond_signal";
584 #ifdef SYS_lwp_cond_wait
585 syscall_table[SYS_lwp_cond_wait] = "lwp_cond_wait";
587 #ifdef SYS_lwp_continue
588 syscall_table[SYS_lwp_continue] = "lwp_continue";
590 #ifdef SYS_lwp_create
591 syscall_table[SYS_lwp_create] = "lwp_create";
594 syscall_table[SYS_lwp_exit] = "lwp_exit";
596 #ifdef SYS_lwp_getprivate
597 syscall_table[SYS_lwp_getprivate] = "lwp_getprivate";
600 syscall_table[SYS_lwp_info] = "lwp_info";
603 syscall_table[SYS_lwp_kill] = "lwp_kill";
605 #ifdef SYS_lwp_mutex_init
606 syscall_table[SYS_lwp_mutex_init] = "lwp_mutex_init";
608 #ifdef SYS_lwp_mutex_lock
609 syscall_table[SYS_lwp_mutex_lock] = "lwp_mutex_lock";
611 #ifdef SYS_lwp_mutex_trylock
612 syscall_table[SYS_lwp_mutex_trylock] = "lwp_mutex_trylock";
614 #ifdef SYS_lwp_mutex_unlock
615 syscall_table[SYS_lwp_mutex_unlock] = "lwp_mutex_unlock";
617 #ifdef SYS_lwp_private
618 syscall_table[SYS_lwp_private] = "lwp_private";
621 syscall_table[SYS_lwp_self] = "lwp_self";
623 #ifdef SYS_lwp_sema_post
624 syscall_table[SYS_lwp_sema_post] = "lwp_sema_post";
626 #ifdef SYS_lwp_sema_trywait
627 syscall_table[SYS_lwp_sema_trywait] = "lwp_sema_trywait";
629 #ifdef SYS_lwp_sema_wait
630 syscall_table[SYS_lwp_sema_wait] = "lwp_sema_wait";
632 #ifdef SYS_lwp_setprivate
633 syscall_table[SYS_lwp_setprivate] = "lwp_setprivate";
635 #ifdef SYS_lwp_sigredirect
636 syscall_table[SYS_lwp_sigredirect] = "lwp_sigredirect";
638 #ifdef SYS_lwp_suspend
639 syscall_table[SYS_lwp_suspend] = "lwp_suspend";
642 syscall_table[SYS_lwp_wait] = "lwp_wait";
645 syscall_table[SYS_lxstat] = "lxstat";
648 syscall_table[SYS_madvise] = "madvise";
651 syscall_table[SYS_memcntl] = "memcntl";
654 syscall_table[SYS_mincore] = "mincore";
657 syscall_table[SYS_mincore] = "mincore";
660 syscall_table[SYS_mkdir] = "mkdir";
663 syscall_table[SYS_mkmld] = "mkmld";
666 syscall_table[SYS_mknod] = "mknod";
669 syscall_table[SYS_mldmode] = "mldmode";
672 syscall_table[SYS_mmap] = "mmap";
675 syscall_table[SYS_mmap64] = "mmap64";
678 syscall_table[SYS_modadm] = "modadm";
681 syscall_table[SYS_modctl] = "modctl";
684 syscall_table[SYS_modload] = "modload";
687 syscall_table[SYS_modpath] = "modpath";
690 syscall_table[SYS_modstat] = "modstat";
693 syscall_table[SYS_moduload] = "moduload";
696 syscall_table[SYS_mount] = "mount";
699 syscall_table[SYS_mprotect] = "mprotect";
702 syscall_table[SYS_mremap] = "mremap";
704 #ifdef SYS_msfs_syscall
705 syscall_table[SYS_msfs_syscall] = "msfs_syscall";
708 syscall_table[SYS_msgctl] = "msgctl";
711 syscall_table[SYS_msgget] = "msgget";
714 syscall_table[SYS_msgrcv] = "msgrcv";
717 syscall_table[SYS_msgsnd] = "msgsnd";
720 syscall_table[SYS_msgsys] = "msgsys";
723 syscall_table[SYS_msleep] = "msleep";
726 syscall_table[SYS_msync] = "msync";
729 syscall_table[SYS_munmap] = "munmap";
732 syscall_table[SYS_mvalid] = "mvalid";
735 syscall_table[SYS_mwakeup] = "mwakeup";
738 syscall_table[SYS_naccept] = "naccept";
741 syscall_table[SYS_nanosleep] = "nanosleep";
744 syscall_table[SYS_nfssvc] = "nfssvc";
747 syscall_table[SYS_nfssys] = "nfssys";
749 #ifdef SYS_ngetpeername
750 syscall_table[SYS_ngetpeername] = "ngetpeername";
752 #ifdef SYS_ngetsockname
753 syscall_table[SYS_ngetsockname] = "ngetsockname";
756 syscall_table[SYS_nice] = "nice";
759 syscall_table[SYS_nrecvfrom] = "nrecvfrom";
762 syscall_table[SYS_nrecvmsg] = "nrecvmsg";
765 syscall_table[SYS_nsendmsg] = "nsendmsg";
767 #ifdef SYS_ntp_adjtime
768 syscall_table[SYS_ntp_adjtime] = "ntp_adjtime";
770 #ifdef SYS_ntp_gettime
771 syscall_table[SYS_ntp_gettime] = "ntp_gettime";
774 syscall_table[SYS_nuname] = "nuname";
777 syscall_table[SYS_obreak] = "obreak";
779 #ifdef SYS_old_accept
780 syscall_table[SYS_old_accept] = "old_accept";
783 syscall_table[SYS_old_fstat] = "old_fstat";
785 #ifdef SYS_old_getpeername
786 syscall_table[SYS_old_getpeername] = "old_getpeername";
788 #ifdef SYS_old_getpgrp
789 syscall_table[SYS_old_getpgrp] = "old_getpgrp";
791 #ifdef SYS_old_getsockname
792 syscall_table[SYS_old_getsockname] = "old_getsockname";
794 #ifdef SYS_old_killpg
795 syscall_table[SYS_old_killpg] = "old_killpg";
798 syscall_table[SYS_old_lstat] = "old_lstat";
801 syscall_table[SYS_old_recv] = "old_recv";
803 #ifdef SYS_old_recvfrom
804 syscall_table[SYS_old_recvfrom] = "old_recvfrom";
806 #ifdef SYS_old_recvmsg
807 syscall_table[SYS_old_recvmsg] = "old_recvmsg";
810 syscall_table[SYS_old_send] = "old_send";
812 #ifdef SYS_old_sendmsg
813 syscall_table[SYS_old_sendmsg] = "old_sendmsg";
815 #ifdef SYS_old_sigblock
816 syscall_table[SYS_old_sigblock] = "old_sigblock";
818 #ifdef SYS_old_sigsetmask
819 syscall_table[SYS_old_sigsetmask] = "old_sigsetmask";
821 #ifdef SYS_old_sigvec
822 syscall_table[SYS_old_sigvec] = "old_sigvec";
825 syscall_table[SYS_old_stat] = "old_stat";
827 #ifdef SYS_old_vhangup
828 syscall_table[SYS_old_vhangup] = "old_vhangup";
831 syscall_table[SYS_old_wait] = "old_wait";
834 syscall_table[SYS_oldquota] = "oldquota";
837 syscall_table[SYS_online] = "online";
840 syscall_table[SYS_open] = "open";
843 syscall_table[SYS_open64] = "open64";
846 syscall_table[SYS_ovadvise] = "ovadvise";
849 syscall_table[SYS_p_online] = "p_online";
852 syscall_table[SYS_pagelock] = "pagelock";
855 syscall_table[SYS_pathconf] = "pathconf";
858 syscall_table[SYS_pause] = "pause";
861 syscall_table[SYS_pgrpsys] = "pgrpsys";
864 syscall_table[SYS_pid_block] = "pid_block";
866 #ifdef SYS_pid_unblock
867 syscall_table[SYS_pid_unblock] = "pid_unblock";
870 syscall_table[SYS_pipe] = "pipe";
873 syscall_table[SYS_plock] = "plock";
876 syscall_table[SYS_poll] = "poll";
879 syscall_table[SYS_prctl] = "prctl";
882 syscall_table[SYS_pread] = "pread";
885 syscall_table[SYS_pread64] = "pread64";
888 syscall_table[SYS_pread64] = "pread64";
891 syscall_table[SYS_prepblock] = "prepblock";
894 syscall_table[SYS_priocntl] = "priocntl";
896 #ifdef SYS_priocntllst
897 syscall_table[SYS_priocntllst] = "priocntllst";
899 #ifdef SYS_priocntlset
900 syscall_table[SYS_priocntlset] = "priocntlset";
902 #ifdef SYS_priocntlsys
903 syscall_table[SYS_priocntlsys] = "priocntlsys";
906 syscall_table[SYS_procblk] = "procblk";
908 #ifdef SYS_processor_bind
909 syscall_table[SYS_processor_bind] = "processor_bind";
911 #ifdef SYS_processor_exbind
912 syscall_table[SYS_processor_exbind] = "processor_exbind";
914 #ifdef SYS_processor_info
915 syscall_table[SYS_processor_info] = "processor_info";
918 syscall_table[SYS_procpriv] = "procpriv";
921 syscall_table[SYS_profil] = "profil";
923 #ifdef SYS_proplist_syscall
924 syscall_table[SYS_proplist_syscall] = "proplist_syscall";
927 syscall_table[SYS_pset] = "pset";
930 syscall_table[SYS_ptrace] = "ptrace";
933 syscall_table[SYS_putmsg] = "putmsg";
936 syscall_table[SYS_putpmsg] = "putpmsg";
939 syscall_table[SYS_pwrite] = "pwrite";
942 syscall_table[SYS_pwrite64] = "pwrite64";
945 syscall_table[SYS_quotactl] = "quotactl";
948 syscall_table[SYS_rdblock] = "rdblock";
951 syscall_table[SYS_read] = "read";
954 syscall_table[SYS_readlink] = "readlink";
957 syscall_table[SYS_readv] = "readv";
960 syscall_table[SYS_reboot] = "reboot";
963 syscall_table[SYS_recv] = "recv";
966 syscall_table[SYS_recvfrom] = "recvfrom";
969 syscall_table[SYS_recvmsg] = "recvmsg";
972 syscall_table[SYS_rename] = "rename";
974 #ifdef SYS_resolvepath
975 syscall_table[SYS_resolvepath] = "resolvepath";
978 syscall_table[SYS_revoke] = "revoke";
981 syscall_table[SYS_rfsys] = "rfsys";
984 syscall_table[SYS_rmdir] = "rmdir";
987 syscall_table[SYS_rpcsys] = "rpcsys";
990 syscall_table[SYS_sbrk] = "sbrk";
993 syscall_table[SYS_schedctl] = "schedctl";
996 syscall_table[SYS_secadvise] = "secadvise";
999 syscall_table[SYS_secsys] = "secsys";
1002 syscall_table[SYS_security] = "security";
1005 syscall_table[SYS_select] = "select";
1008 syscall_table[SYS_semctl] = "semctl";
1011 syscall_table[SYS_semget] = "semget";
1014 syscall_table[SYS_semop] = "semop";
1017 syscall_table[SYS_semsys] = "semsys";
1020 syscall_table[SYS_send] = "send";
1023 syscall_table[SYS_sendmsg] = "sendmsg";
1026 syscall_table[SYS_sendto] = "sendto";
1028 #ifdef SYS_set_program_attributes
1029 syscall_table[SYS_set_program_attributes] = "set_program_attributes";
1031 #ifdef SYS_set_speculative
1032 syscall_table[SYS_set_speculative] = "set_speculative";
1034 #ifdef SYS_set_sysinfo
1035 syscall_table[SYS_set_sysinfo] = "set_sysinfo";
1037 #ifdef SYS_setcontext
1038 syscall_table[SYS_setcontext] = "setcontext";
1040 #ifdef SYS_setdomainname
1041 syscall_table[SYS_setdomainname] = "setdomainname";
1044 syscall_table[SYS_setegid] = "setegid";
1047 syscall_table[SYS_seteuid] = "seteuid";
1050 syscall_table[SYS_setgid] = "setgid";
1052 #ifdef SYS_setgroups
1053 syscall_table[SYS_setgroups] = "setgroups";
1055 #ifdef SYS_sethostid
1056 syscall_table[SYS_sethostid] = "sethostid";
1058 #ifdef SYS_sethostname
1059 syscall_table[SYS_sethostname] = "sethostname";
1061 #ifdef SYS_setitimer
1062 syscall_table[SYS_setitimer] = "setitimer";
1065 syscall_table[SYS_setlogin] = "setlogin";
1068 syscall_table[SYS_setpgid] = "setpgid";
1071 syscall_table[SYS_setpgrp] = "setpgrp";
1073 #ifdef SYS_setpriority
1074 syscall_table[SYS_setpriority] = "setpriority";
1077 syscall_table[SYS_setregid] = "setregid";
1080 syscall_table[SYS_setreuid] = "setreuid";
1082 #ifdef SYS_setrlimit
1083 syscall_table[SYS_setrlimit] = "setrlimit";
1085 #ifdef SYS_setrlimit64
1086 syscall_table[SYS_setrlimit64] = "setrlimit64";
1089 syscall_table[SYS_setsid] = "setsid";
1091 #ifdef SYS_setsockopt
1092 syscall_table[SYS_setsockopt] = "setsockopt";
1094 #ifdef SYS_settimeofday
1095 syscall_table[SYS_settimeofday] = "settimeofday";
1098 syscall_table[SYS_setuid] = "setuid";
1101 syscall_table[SYS_sgi] = "sgi";
1103 #ifdef SYS_sgifastpath
1104 syscall_table[SYS_sgifastpath] = "sgifastpath";
1107 syscall_table[SYS_sgikopt] = "sgikopt";
1110 syscall_table[SYS_sginap] = "sginap";
1113 syscall_table[SYS_shmat] = "shmat";
1116 syscall_table[SYS_shmctl] = "shmctl";
1119 syscall_table[SYS_shmdt] = "shmdt";
1122 syscall_table[SYS_shmget] = "shmget";
1125 syscall_table[SYS_shmsys] = "shmsys";
1128 syscall_table[SYS_shutdown] = "shutdown";
1130 #ifdef SYS_sigaction
1131 syscall_table[SYS_sigaction] = "sigaction";
1133 #ifdef SYS_sigaltstack
1134 syscall_table[SYS_sigaltstack] = "sigaltstack";
1136 #ifdef SYS_sigaltstack
1137 syscall_table[SYS_sigaltstack] = "sigaltstack";
1140 syscall_table[SYS_sigblock] = "sigblock";
1143 syscall_table[SYS_signal] = "signal";
1145 #ifdef SYS_signotify
1146 syscall_table[SYS_signotify] = "signotify";
1148 #ifdef SYS_signotifywait
1149 syscall_table[SYS_signotifywait] = "signotifywait";
1151 #ifdef SYS_sigpending
1152 syscall_table[SYS_sigpending] = "sigpending";
1155 syscall_table[SYS_sigpoll] = "sigpoll";
1157 #ifdef SYS_sigprocmask
1158 syscall_table[SYS_sigprocmask] = "sigprocmask";
1161 syscall_table[SYS_sigqueue] = "sigqueue";
1163 #ifdef SYS_sigreturn
1164 syscall_table[SYS_sigreturn] = "sigreturn";
1166 #ifdef SYS_sigsendset
1167 syscall_table[SYS_sigsendset] = "sigsendset";
1169 #ifdef SYS_sigsendsys
1170 syscall_table[SYS_sigsendsys] = "sigsendsys";
1172 #ifdef SYS_sigsetmask
1173 syscall_table[SYS_sigsetmask] = "sigsetmask";
1176 syscall_table[SYS_sigstack] = "sigstack";
1178 #ifdef SYS_sigsuspend
1179 syscall_table[SYS_sigsuspend] = "sigsuspend";
1182 syscall_table[SYS_sigvec] = "sigvec";
1185 syscall_table[SYS_sigwait] = "sigwait";
1187 #ifdef SYS_sigwaitprim
1188 syscall_table[SYS_sigwaitprim] = "sigwaitprim";
1191 syscall_table[SYS_sleep] = "sleep";
1193 #ifdef SYS_so_socket
1194 syscall_table[SYS_so_socket] = "so_socket";
1196 #ifdef SYS_so_socketpair
1197 syscall_table[SYS_so_socketpair] = "so_socketpair";
1199 #ifdef SYS_sockconfig
1200 syscall_table[SYS_sockconfig] = "sockconfig";
1203 syscall_table[SYS_socket] = "socket";
1205 #ifdef SYS_socketpair
1206 syscall_table[SYS_socketpair] = "socketpair";
1209 syscall_table[SYS_sproc] = "sproc";
1212 syscall_table[SYS_sprocsp] = "sprocsp";
1215 syscall_table[SYS_sstk] = "sstk";
1218 syscall_table[SYS_stat] = "stat";
1221 syscall_table[SYS_stat64] = "stat64";
1224 syscall_table[SYS_statfs] = "statfs";
1227 syscall_table[SYS_statvfs] = "statvfs";
1229 #ifdef SYS_statvfs64
1230 syscall_table[SYS_statvfs64] = "statvfs64";
1233 syscall_table[SYS_stime] = "stime";
1236 syscall_table[SYS_stty] = "stty";
1238 #ifdef SYS_subsys_info
1239 syscall_table[SYS_subsys_info] = "subsys_info";
1242 syscall_table[SYS_swapctl] = "swapctl";
1245 syscall_table[SYS_swapon] = "swapon";
1248 syscall_table[SYS_symlink] = "symlink";
1251 syscall_table[SYS_sync] = "sync";
1254 syscall_table[SYS_sys3b] = "sys3b";
1257 syscall_table[SYS_syscall] = "syscall";
1259 #ifdef SYS_sysconfig
1260 syscall_table[SYS_sysconfig] = "sysconfig";
1263 syscall_table[SYS_sysfs] = "sysfs";
1266 syscall_table[SYS_sysi86] = "sysi86";
1269 syscall_table[SYS_sysinfo] = "sysinfo";
1272 syscall_table[SYS_sysmips] = "sysmips";
1275 syscall_table[SYS_syssun] = "syssun";
1277 #ifdef SYS_systeminfo
1278 syscall_table[SYS_systeminfo] = "systeminfo";
1281 syscall_table[SYS_table] = "table";
1284 syscall_table[SYS_time] = "time";
1286 #ifdef SYS_timedwait
1287 syscall_table[SYS_timedwait] = "timedwait";
1289 #ifdef SYS_timer_create
1290 syscall_table[SYS_timer_create] = "timer_create";
1292 #ifdef SYS_timer_delete
1293 syscall_table[SYS_timer_delete] = "timer_delete";
1295 #ifdef SYS_timer_getoverrun
1296 syscall_table[SYS_timer_getoverrun] = "timer_getoverrun";
1298 #ifdef SYS_timer_gettime
1299 syscall_table[SYS_timer_gettime] = "timer_gettime";
1301 #ifdef SYS_timer_settime
1302 syscall_table[SYS_timer_settime] = "timer_settime";
1305 syscall_table[SYS_times] = "times";
1308 syscall_table[SYS_truncate] = "truncate";
1310 #ifdef SYS_truncate64
1311 syscall_table[SYS_truncate64] = "truncate64";
1314 syscall_table[SYS_tsolsys] = "tsolsys";
1317 syscall_table[SYS_uadmin] = "uadmin";
1320 syscall_table[SYS_ulimit] = "ulimit";
1323 syscall_table[SYS_umask] = "umask";
1326 syscall_table[SYS_umount] = "umount";
1329 syscall_table[SYS_uname] = "uname";
1332 syscall_table[SYS_unblock] = "unblock";
1335 syscall_table[SYS_unlink] = "unlink";
1338 syscall_table[SYS_unmount] = "unmount";
1340 #ifdef SYS_usleep_thread
1341 syscall_table[SYS_usleep_thread] = "usleep_thread";
1344 syscall_table[SYS_uswitch] = "uswitch";
1346 #ifdef SYS_utc_adjtime
1347 syscall_table[SYS_utc_adjtime] = "utc_adjtime";
1349 #ifdef SYS_utc_gettime
1350 syscall_table[SYS_utc_gettime] = "utc_gettime";
1353 syscall_table[SYS_utime] = "utime";
1356 syscall_table[SYS_utimes] = "utimes";
1359 syscall_table[SYS_utssys] = "utssys";
1362 syscall_table[SYS_vfork] = "vfork";
1365 syscall_table[SYS_vhangup] = "vhangup";
1368 syscall_table[SYS_vtrace] = "vtrace";
1371 syscall_table[SYS_wait] = "wait";
1374 syscall_table[SYS_waitid] = "waitid";
1377 syscall_table[SYS_waitsys] = "waitsys";
1380 syscall_table[SYS_write] = "write";
1383 syscall_table[SYS_writev] = "writev";
1386 syscall_table[SYS_xenix] = "xenix";
1389 syscall_table[SYS_xmknod] = "xmknod";
1392 syscall_table[SYS_xstat] = "xstat";
1395 syscall_table[SYS_yield] = "yield";
1399 /* Prettyprint syscall NUM. */
1402 proc_prettyfprint_syscall (FILE *file, int num, int verbose)
1404 if (syscall_table[num])
1405 fprintf (file, "SYS_%s ", syscall_table[num]);
1407 fprintf (file, "<Unknown syscall %d> ", num);
1411 proc_prettyprint_syscall (int num, int verbose)
1413 proc_prettyfprint_syscall (stdout, num, verbose);
1416 /* Prettyprint all syscalls in SYSSET. */
1419 proc_prettyfprint_syscalls (FILE *file, sysset_t *sysset, int verbose)
1423 for (i = 0; i < MAX_SYSCALLS; i++)
1424 if (prismember (sysset, i))
1426 proc_prettyfprint_syscall (file, i, verbose);
1428 fprintf (file, "\n");
1432 proc_prettyprint_syscalls (sysset_t *sysset, int verbose)
1434 proc_prettyfprint_syscalls (stdout, sysset, verbose);
1437 /* Prettyprint signals. */
1439 /* Signal translation table. */
1441 static struct trans signal_table[] =
1443 { 0, "<no signal>", "no signal" },
1445 { SIGHUP, "SIGHUP", "Hangup" },
1448 { SIGINT, "SIGINT", "Interrupt (rubout)" },
1451 { SIGQUIT, "SIGQUIT", "Quit (ASCII FS)" },
1454 { SIGILL, "SIGILL", "Illegal instruction" }, /* not reset when caught */
1457 { SIGTRAP, "SIGTRAP", "Trace trap" }, /* not reset when caught */
1460 { SIGABRT, "SIGABRT", "used by abort()" }, /* replaces SIGIOT */
1463 { SIGIOT, "SIGIOT", "IOT instruction" },
1466 { SIGEMT, "SIGEMT", "EMT instruction" },
1469 { SIGFPE, "SIGFPE", "Floating point exception" },
1472 { SIGKILL, "SIGKILL", "Kill" }, /* Solaris: cannot be caught/ignored */
1475 { SIGBUS, "SIGBUS", "Bus error" },
1478 { SIGSEGV, "SIGSEGV", "Segmentation violation" },
1481 { SIGSYS, "SIGSYS", "Bad argument to system call" },
1484 { SIGPIPE, "SIGPIPE", "Write to pipe with no one to read it" },
1487 { SIGALRM, "SIGALRM", "Alarm clock" },
1490 { SIGTERM, "SIGTERM", "Software termination signal from kill" },
1493 { SIGUSR1, "SIGUSR1", "User defined signal 1" },
1496 { SIGUSR2, "SIGUSR2", "User defined signal 2" },
1499 { SIGCHLD, "SIGCHLD", "Child status changed" }, /* Posix version */
1502 { SIGCLD, "SIGCLD", "Child status changed" }, /* Solaris version */
1505 { SIGPWR, "SIGPWR", "Power-fail restart" },
1508 { SIGWINCH, "SIGWINCH", "Window size change" },
1511 { SIGURG, "SIGURG", "Urgent socket condition" },
1514 { SIGPOLL, "SIGPOLL", "Pollable event" },
1517 { SIGIO, "SIGIO", "Socket I/O possible" }, /* alias for SIGPOLL */
1520 { SIGSTOP, "SIGSTOP", "Stop, not from tty" }, /* cannot be caught or
1524 { SIGTSTP, "SIGTSTP", "User stop from tty" },
1527 { SIGCONT, "SIGCONT", "Stopped process has been continued" },
1530 { SIGTTIN, "SIGTTIN", "Background tty read attempted" },
1533 { SIGTTOU, "SIGTTOU", "Background tty write attempted" },
1536 { SIGVTALRM, "SIGVTALRM", "Virtual timer expired" },
1539 { SIGPROF, "SIGPROF", "Profiling timer expired" },
1542 { SIGXCPU, "SIGXCPU", "Exceeded CPU limit" },
1545 { SIGXFSZ, "SIGXFSZ", "Exceeded file size limit" },
1548 { SIGWAITING, "SIGWAITING", "Process's LWPs are blocked" },
1551 { SIGLWP, "SIGLWP", "Used by thread library" },
1554 { SIGFREEZE, "SIGFREEZE", "Used by CPR" },
1557 { SIGTHAW, "SIGTHAW", "Used by CPR" },
1560 { SIGCANCEL, "SIGCANCEL", "Used by libthread" },
1563 { SIGLOST, "SIGLOST", "Resource lost" },
1566 { SIG32, "SIG32", "Reserved for kernel usage (Irix)" },
1569 { SIGPTINTR, "SIGPTINTR", "Posix 1003.1b" },
1572 { SIGTRESCHED, "SIGTRESCHED", "Posix 1003.1b" },
1575 { SIGINFO, "SIGINFO", "Information request" },
1578 { SIGRESV, "SIGRESV", "Reserved by Digital for future use" },
1581 { SIGAIO, "SIGAIO", "Asynchronous I/O signal" },
1584 /* FIXME: add real-time signals. */
1587 /* Prettyprint signal number SIGNO. */
1590 proc_prettyfprint_signal (FILE *file, int signo, int verbose)
1594 for (i = 0; i < sizeof (signal_table) / sizeof (signal_table[0]); i++)
1595 if (signo == signal_table[i].value)
1597 fprintf (file, "%s", signal_table[i].name);
1599 fprintf (file, ": %s\n", signal_table[i].desc);
1601 fprintf (file, " ");
1604 fprintf (file, "Unknown signal %d%c", signo, verbose ? '\n' : ' ');
1608 proc_prettyprint_signal (int signo, int verbose)
1610 proc_prettyfprint_signal (stdout, signo, verbose);
1613 /* Prettyprint all signals in SIGSET. */
1616 proc_prettyfprint_signalset (FILE *file, sigset_t *sigset, int verbose)
1620 /* Loop over all signal numbers from 0 to NSIG, using them as the
1621 index to prismember. The signal table had better not contain
1622 aliases, for if it does they will both be printed. */
1624 for (i = 0; i < NSIG; i++)
1625 if (prismember (sigset, i))
1626 proc_prettyfprint_signal (file, i, verbose);
1629 fprintf (file, "\n");
1633 proc_prettyprint_signalset (sigset_t *sigset, int verbose)
1635 proc_prettyfprint_signalset (stdout, sigset, verbose);
1639 /* Prettyprint faults. */
1641 /* Fault translation table. */
1643 static struct trans fault_table[] =
1646 { FLTILL, "FLTILL", "Illegal instruction" },
1649 { FLTPRIV, "FLTPRIV", "Privileged instruction" },
1652 { FLTBPT, "FLTBPT", "Breakpoint trap" },
1655 { FLTTRACE, "FLTTRACE", "Trace trap" },
1658 { FLTACCESS, "FLTACCESS", "Memory access fault" },
1661 { FLTBOUNDS, "FLTBOUNDS", "Memory bounds violation" },
1664 { FLTIOVF, "FLTIOVF", "Integer overflow" },
1667 { FLTIZDIV, "FLTIZDIV", "Integer zero divide" },
1670 { FLTFPE, "FLTFPE", "Floating-point exception" },
1673 { FLTSTACK, "FLTSTACK", "Unrecoverable stack fault" },
1676 { FLTPAGE, "FLTPAGE", "Recoverable page fault" },
1679 { FLTPCINVAL, "FLTPCINVAL", "Invalid PC exception" },
1682 { FLTWATCH, "FLTWATCH", "User watchpoint" },
1685 { FLTKWATCH, "FLTKWATCH", "Kernel watchpoint" },
1688 { FLTSCWATCH, "FLTSCWATCH", "Hit a store conditional on a watched page" },
1692 /* Work horse. Accepts an index into the fault table, prints it
1696 prettyfprint_faulttable_entry (FILE *file, int i, int verbose)
1698 fprintf (file, "%s", fault_table[i].name);
1700 fprintf (file, ": %s\n", fault_table[i].desc);
1702 fprintf (file, " ");
1705 /* Prettyprint hardware fault number FAULTNO. */
1708 proc_prettyfprint_fault (FILE *file, int faultno, int verbose)
1712 for (i = 0; i < ARRAY_SIZE (fault_table); i++)
1713 if (faultno == fault_table[i].value)
1715 prettyfprint_faulttable_entry (file, i, verbose);
1719 fprintf (file, "Unknown hardware fault %d%c",
1720 faultno, verbose ? '\n' : ' ');
1724 proc_prettyprint_fault (int faultno, int verbose)
1726 proc_prettyfprint_fault (stdout, faultno, verbose);
1729 /* Prettyprint all faults in FLTSET. */
1732 proc_prettyfprint_faultset (FILE *file, fltset_t *fltset, int verbose)
1736 /* Loop through the fault table, using the value field as the index
1737 to prismember. The fault table had better not contain aliases,
1738 for if it does they will both be printed. */
1740 for (i = 0; i < ARRAY_SIZE (fault_table); i++)
1741 if (prismember (fltset, fault_table[i].value))
1742 prettyfprint_faulttable_entry (file, i, verbose);
1745 fprintf (file, "\n");
1749 proc_prettyprint_faultset (fltset_t *fltset, int verbose)
1751 proc_prettyfprint_faultset (stdout, fltset, verbose);
1754 /* TODO: actions, holds... */
1757 proc_prettyprint_actionset (struct sigaction *actions, int verbose)
1762 /* Provide a prototype to silence -Wmissing-prototypes. */
1763 void _initialize_proc_events (void);
1766 _initialize_proc_events (void)
1768 init_syscall_table ();