Module Name: src Committed By: pooka Date: Thu Nov 4 20:50:30 UTC 2010
Modified Files: src/sys/kern: makesyscalls.sh Log Message: Create rump_syscalls.c in two flavours: one which can be compiled standalone as the clientside and one which expects to be compiled into the rump kernel. To generate a diff of this commit: cvs rdiff -u -r1.101 -r1.102 src/sys/kern/makesyscalls.sh 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.101 src/sys/kern/makesyscalls.sh:1.102 --- src/sys/kern/makesyscalls.sh:1.101 Thu Nov 4 17:02:34 2010 +++ src/sys/kern/makesyscalls.sh Thu Nov 4 20:50:29 2010 @@ -1,5 +1,5 @@ #! /bin/sh - -# $NetBSD: makesyscalls.sh,v 1.101 2010/11/04 17:02:34 pooka Exp $ +# $NetBSD: makesyscalls.sh,v 1.102 2010/11/04 20:50:29 pooka Exp $ # # Copyright (c) 1994, 1996, 2000 Christopher G. Demetriou # All rights reserved. @@ -212,22 +212,41 @@ printf " * created from%s\n */\n\n", $0 > rumpcalls printf "#include <sys/cdefs.h>\n__KERNEL_RCSID(0, \"%s\");\n\n", tag > rumpcalls - printf "#include <sys/types.h>\n" > rumpcalls + printf "#include <sys/param.h>\n" > rumpcalls + printf "#include <sys/fstypes.h>\n" > rumpcalls printf "#include <sys/proc.h>\n" > rumpcalls printf "#include <sys/syscall.h>\n" > rumpcalls - printf "#include <sys/syscallargs.h>\n" > rumpcalls + printf "#include <sys/syscallargs.h>\n\n" > rumpcalls + printf "#ifdef RUMP_CLIENT\n" > rumpcalls + printf "#include <errno.h>\n" > rumpcalls + printf "#include <rump/rumpclient.h>\n\n" > rumpcalls + printf "#define rsys_syscall(num, data, dlen, retval)\t\\\n" > rumpcalls + printf " rumpclient_syscall(num, data, dlen, retval)\n" > rumpcalls + printf "#define rsys_seterrno(error) errno = error\n" > rumpcalls + printf "#define rsys_alias(a,b)\n#else\n" > rumpcalls printf "#include <rump/rumpuser.h>\n" > rumpcalls printf "#include \"rump_private.h\"\n\n" > rumpcalls + printf "static int\nrsys_syscall" > rumpcalls + printf "(int num, void *data, size_t dlen, register_t *retval)" > rumpcalls + printf "\n{\n\tint rv;\n\n\trump_schedule();\n" > rumpcalls + printf "\trv = rump_syscall(num, data, retval);\n" > rumpcalls + printf "\trump_unschedule();\n\n\treturn rv;\n}\n\n" > rumpcalls + printf "#define rsys_seterrno(error) rumpuser_seterrno(error)\n" > rumpcalls + printf "#define rsys_alias(a,b) __weak_alias(a,b);\n#endif\n\n" > rumpcalls + printf "#if\tBYTE_ORDER == BIG_ENDIAN\n" > rumpcalls printf "#define SPARG(p,k)\t((p)->k.be.datum)\n" > rumpcalls printf "#else /* LITTLE_ENDIAN, I hope dearly */\n" > rumpcalls printf "#define SPARG(p,k)\t((p)->k.le.datum)\n" > rumpcalls printf "#endif\n\n" > rumpcalls + printf "#ifndef RUMP_CLIENT\n" > rumpcalls printf "int rump_enosys(void);\n" > rumpcalls printf "int\nrump_enosys()\n{\n\n\treturn ENOSYS;\n}\n" > rumpcalls + printf "#endif\n" > rumpcalls - printf "\n#define\ts(type)\tsizeof(type)\n" > rumpsysent + printf "\n#ifndef RUMP_CLIENT\n" > rumpsysent + printf "#define\ts(type)\tsizeof(type)\n" > rumpsysent printf "#define\tn(type)\t(sizeof(type)/sizeof (%s))\n", registertype > rumpsysent printf "#define\tns(type)\tn(type), s(type)\n\n", registertype > rumpsysent printf "struct sysent rump_sysent[] = {\n" > rumpsysent @@ -706,18 +725,18 @@ } else { printf("\n") > rumpcalls } - printf("\terror = rump_sysproxy(%s%s, rump_sysproxy_arg,\n\t" \ - " (uint8_t *)%s, %s, rval);\n", constprefix, funcalias, \ + printf("\terror = rsys_syscall(%s%s, " \ + "%s, %s, rval);\n", constprefix, funcalias, \ argarg, argsize) > rumpcalls printf("\tif (error) {\n\t\trval[0] = -1;\n") > rumpcalls if (returntype != "void") { - printf("\t\trumpuser_seterrno(error);\n\t}\n") > rumpcalls + printf("\t\trsys_seterrno(error);\n\t}\n") > rumpcalls printf("\treturn rval[0];\n") > rumpcalls } else { printf("\t}\n") > rumpcalls } printf("}\n") > rumpcalls - printf("__weak_alias(%s,rump_enosys);\n", funcname) > rumpcalls + printf("rsys_alias(%s,rump_enosys)\n", funcname) > rumpcalls } $2 == "STD" || $2 == "NODEF" || $2 == "NOARGS" || $2 == "INDIR" { @@ -774,10 +793,10 @@ printf("int\nrump_sys_pipe(int *fd)\n{\n") > rumpcalls printf("\tregister_t rval[2] = {0, 0};\n") > rumpcalls printf("\tint error = 0;\n") > rumpcalls - printf("\n\terror = rump_sysproxy(SYS_pipe, ") > rumpcalls - printf("rump_sysproxy_arg, NULL, 0, rval);\n") > rumpcalls + printf("\n\terror = rsys_syscall(SYS_pipe, ") > rumpcalls + printf("NULL, 0, rval);\n") > rumpcalls printf("\tif (error) {\n") > rumpcalls - printf("\t\trumpuser_seterrno(error);\n") > rumpcalls + printf("\t\trsys_seterrno(error);\n") > rumpcalls printf("\t} else {\n\t\tfd[0] = rval[0];\n") > rumpcalls printf("\t\tfd[1] = rval[1];\n\t}\n") > rumpcalls printf("\treturn error ? -1 : 0;\n}\n") > rumpcalls @@ -800,6 +819,7 @@ printf("};\n") > sysent printf("};\n") > rumpsysent printf("CTASSERT(__arraycount(rump_sysent) == SYS_NSYSENT);\n") > rumpsysent + printf("#endif /* RUMP_CLIENT */\n") > rumpsysent printf("};\n") > sysnamesbottom printf("#define\t%sMAXSYSCALL\t%d\n", constprefix, maxsyscall) > sysnumhdr if (nsysent)