Hi all I am looking for an efficient way to convert syscall number to syscall name. I can get syscall number by enabling profiling using perf_event_open(), but cant find way to convert it to actual syscall name. Thanks --sahil
On Wed, May 6, 2015 at 10:42 PM, sahil aggarwal <sahilagg0693@gmail.com> wrote:
Hi all
I am looking for an efficient way to convert syscall number to syscall name. I can get syscall number by enabling profiling using perf_event_open(), but cant find way to convert it to actual syscall name.
What arch? Try http://lxr.free-electrons.com/source/arch/x86/syscalls/syscall_64.tbl
Thanks
--sahil
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
What arch? Try x86 , but looking for portable solution.
http://lxr.free-electrons.com/source/arch/x86/syscalls/syscall_64.tbl
For my arch this is helpful. Thank you
Found something easier: syscallent.sh ( similar to used by strace ) --------------------------------------------------------- cat ${1+"$@"} | sed -n 's/^#[ ]*define[ ][ ]*SYS_\([^ ]*\)[ ]*[^0-9]*\([0-9]*\).*$/\1 \2/p s/^#[ ]*define[ ][ ]*__NR_\([^ ]*\)[ ]*[^0-9]*\([0-9]*\).*$/\1 \2/p s/^#[ ]*define[ ][ ]*__NR_\([^ ]*\)[ ]*[^0-9()]*(__NR_Linux + \([0-9]*\))$/\1 \2/p' | sort -k2n | uniq | awk ' BEGIN { h = "#ifndef _H_SYSCALLENT\n#define _H_SYSCALLENT\nchar *syscalls[] = { " print h } { s = "\"" $1 "\"," print s } END { f = " };\n#endif" print f } ' --------------------------------------------------------- This creates header file: #ifndef _H_SYSCALLENT #define _H_SYSCALLENT char *syscalls[] = { "read", "write", "open", "close", "stat", "fstat", "lstat", "poll", "lseek", "mmap", ...... ..... ... } #endif --------------------------------------------------------- included in makefile: ARCH := $(shell getconf LONG_BIT) ifeq ($(ARCH),64) ./syscallent.sh /usr/include/asm/unistd_64.h > $(INCDIR)/syscallent.h else ./syscallent.sh /usr/include/asm/unistd_32.h > $(INCDIR)/syscallent.h endif --------------------------------------------------------- Works fine for me. Just want to know if this will be portable method and won't produce wrong result in any case.?
participants (2)
-
David Matlack -
sahil aggarwal