From fee3aca2e02a44b51d3f41b94701055de434ae6b Mon Sep 17 00:00:00 2001 From: Anthony Martin Date: Tue, 11 Jan 2011 14:38:14 -0500 Subject: [PATCH] syscall: fix mksysnum_linux.sh A few system call numbers on x86 Linux are defined in terms of a previous definition, e.g., #define __NR_timer_create 259 #define __NR_timer_settime (__NR_timer_create+1) ... #define __NR_mq_open 277 #define __NR_mq_unlink (__NR_mq_open+1) This change assumes the numbers are sorted sequentially in the input file. R=rsc, bradfitzwork CC=golang-dev https://golang.org/cl/3946041 --- src/pkg/syscall/mksysnum_linux.sh | 16 ++++++++++++---- src/pkg/syscall/zsysnum_linux_386.go | 13 +++++++++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/pkg/syscall/mksysnum_linux.sh b/src/pkg/syscall/mksysnum_linux.sh index 74a1931bb7..89ece8a914 100755 --- a/src/pkg/syscall/mksysnum_linux.sh +++ b/src/pkg/syscall/mksysnum_linux.sh @@ -14,12 +14,20 @@ package syscall const( EOF +sub fmt { + my ($name, $num) = @_; + $name =~ y/a-z/A-Z/; + print " SYS_$name = $num;\n"; +} + +my $prev; while(<>){ if(/^#define __NR_(\w+)\s+([0-9]+)/){ - my $name = "SYS_$1"; - my $num = $2; - $name =~ y/a-z/A-Z/; - print " $name = $num;\n"; + $prev = $2; + fmt($1, $2); + } + elsif(/^#define __NR_(\w+)\s+\(\w+\+([0-9]+)\)/){ + fmt($1, $prev+$2) } } diff --git a/src/pkg/syscall/zsysnum_linux_386.go b/src/pkg/syscall/zsysnum_linux_386.go index e45e00fd46..55529adaa7 100644 --- a/src/pkg/syscall/zsysnum_linux_386.go +++ b/src/pkg/syscall/zsysnum_linux_386.go @@ -262,6 +262,14 @@ const ( SYS_REMAP_FILE_PAGES = 257 SYS_SET_TID_ADDRESS = 258 SYS_TIMER_CREATE = 259 + SYS_TIMER_SETTIME = 260 + SYS_TIMER_GETTIME = 261 + SYS_TIMER_GETOVERRUN = 262 + SYS_TIMER_DELETE = 263 + SYS_CLOCK_SETTIME = 264 + SYS_CLOCK_GETTIME = 265 + SYS_CLOCK_GETRES = 266 + SYS_CLOCK_NANOSLEEP = 267 SYS_STATFS64 = 268 SYS_FSTATFS64 = 269 SYS_TGKILL = 270 @@ -272,6 +280,11 @@ const ( SYS_GET_MEMPOLICY = 275 SYS_SET_MEMPOLICY = 276 SYS_MQ_OPEN = 277 + SYS_MQ_UNLINK = 278 + SYS_MQ_TIMEDSEND = 279 + SYS_MQ_TIMEDRECEIVE = 280 + SYS_MQ_NOTIFY = 281 + SYS_MQ_GETSETATTR = 282 SYS_KEXEC_LOAD = 283 SYS_WAITID = 284 SYS_ADD_KEY = 286