Module Name: src Committed By: pooka Date: Thu Dec 30 16:49:25 UTC 2010
Modified Files: src/sys/kern: makesyscalls.sh src/sys/sys: systm.h Log Message: Mark syscalls not supported by a rump kernel with SYCALL_NOSYS, as pure function pointer comparison brings weak alias confusion (weak aliases are necessary for static linkage). To generate a diff of this commit: cvs rdiff -u -r1.106 -r1.107 src/sys/kern/makesyscalls.sh cvs rdiff -u -r1.244 -r1.245 src/sys/sys/systm.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/makesyscalls.sh diff -u src/sys/kern/makesyscalls.sh:1.106 src/sys/kern/makesyscalls.sh:1.107 --- src/sys/kern/makesyscalls.sh:1.106 Thu Dec 30 13:38:10 2010 +++ src/sys/kern/makesyscalls.sh Thu Dec 30 16:49:24 2010 @@ -1,5 +1,5 @@ #! /bin/sh - -# $NetBSD: makesyscalls.sh,v 1.106 2010/12/30 13:38:10 pooka Exp $ +# $NetBSD: makesyscalls.sh,v 1.107 2010/12/30 16:49:24 pooka Exp $ # # Copyright (c) 1994, 1996, 2000 Christopher G. Demetriou # All rights reserved. @@ -591,9 +591,11 @@ if (!insysent) { eno[0] = "rump_enosys" eno[1] = "sys_nomodule" - printf("\t{ 0, 0, 0,\n\t (sy_call_t *)%s }, \t" \ + flags[0] = "SYCALL_NOSYS" + flags[1] = "0" + printf("\t{ 0, 0, %s,\n\t (sy_call_t *)%s }, \t" \ "/* %d = unrumped */\n", \ - eno[modular], syscall) > rumpsysent + flags[modular], eno[modular], syscall) > rumpsysent return } @@ -768,7 +770,7 @@ printf("\t{ 0, 0, 0,\n\t %s },\t\t\t/* %d = %s */\n", \ sys_stub, syscall, comment) > sysent - printf("\t{ 0, 0, 0,\n\t %s },\t\t/* %d = %s */\n", \ + printf("\t{ 0, 0, SYCALL_NOSYS,\n\t %s },\t\t/* %d = %s */\n", \ "(sy_call_t *)rump_enosys", syscall, comment) > rumpsysent printf("\t/* %3d */\t\"#%d (%s)\",\n", syscall, syscall, comment) \ > sysnamesbottom @@ -815,7 +817,7 @@ while (syscall < nsysent) { printf("\t{ 0, 0, 0,\n\t %s },\t\t\t/* %d = filler */\n", \ sys_nosys, syscall) > sysent - printf("\t{ 0, 0, 0,\n\t %s },\t\t/* %d = filler */\n", \ + printf("\t{ 0, 0, SYCALL_NOSYS,\n\t %s },\t\t/* %d = filler */\n", \ "(sy_call_t *)rump_enosys", syscall) > rumpsysent printf("\t/* %3d */\t\"# filler\",\n", syscall) \ > sysnamesbottom Index: src/sys/sys/systm.h diff -u src/sys/sys/systm.h:1.244 src/sys/sys/systm.h:1.245 --- src/sys/sys/systm.h:1.244 Thu Dec 30 12:46:34 2010 +++ src/sys/sys/systm.h Thu Dec 30 16:49:25 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: systm.h,v 1.244 2010/12/30 12:46:34 pooka Exp $ */ +/* $NetBSD: systm.h,v 1.245 2010/12/30 16:49:25 pooka Exp $ */ /*- * Copyright (c) 1982, 1988, 1991, 1993 @@ -139,6 +139,7 @@ #define SYCALL_ARG5_64 0x0400000 #define SYCALL_ARG6_64 0x0800000 #define SYCALL_ARG7_64 0x1000000 +#define SYCALL_NOSYS 0x2000000 /* permanent nosys in sysent[] */ #define SYCALL_RET_64_P(sy) ((sy)->sy_flags & SYCALL_RET_64) #define SYCALL_ARG_64_P(sy, n) ((sy)->sy_flags & (SYCALL_ARG0_64 << (n))) #define SYCALL_ARG_64_MASK(sy) (((sy)->sy_flags >> 17) & 0xff)