svn commit: r195854 - in stable/7: lib/libc lib/libc/sys sys sys/compat/freebsd32 sys/contrib/pf sys/kern sys/sys

John Baldwin jhb at FreeBSD.org
Fri Jul 24 19:35:07 UTC 2009


Author: jhb
Date: Fri Jul 24 19:35:06 2009
New Revision: 195854
URL: http://svn.freebsd.org/changeset/base/195854

Log:
  MFC: Several cleanups to the syscall tables:
  - Add explicit prototypes for lkmnosys() and lkmressys() in <sys/sysent.h>
    and remove hacks for those routines from makesyscalls.sh.
  - Change the LKM syscall entries in the freebsd32 table to use lkmnosys
    rather than nosys.
  - Use NOPROTO for __syscall() to remove more magic logic from
    makesyscalls.sh.
  - Retire the unused nfsclnt() system call and mark it as UNIMPL rather than
    NOIMPL.
  - Remove the NOIMPL system call type.
  - Allow multiple flags in the type system call type field.  Use this to
    retire CPT_NOA.
  - Update the comment descriptions for COMPAT[45] system calls in various
    generated files.
  - Update comments in syscalls.master.
  - Include defintions for audit identifiers for compat system calls in
    <sys/sysproto.h>.

Modified:
  stable/7/lib/libc/   (props changed)
  stable/7/lib/libc/sys/Symbol.map
  stable/7/sys/   (props changed)
  stable/7/sys/compat/freebsd32/syscalls.master
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/kern/makesyscalls.sh
  stable/7/sys/kern/syscalls.master
  stable/7/sys/sys/sysent.h

Modified: stable/7/lib/libc/sys/Symbol.map
==============================================================================
--- stable/7/lib/libc/sys/Symbol.map	Fri Jul 24 19:12:19 2009	(r195853)
+++ stable/7/lib/libc/sys/Symbol.map	Fri Jul 24 19:35:06 2009	(r195854)
@@ -202,7 +202,6 @@ FBSD_1.0 {
 	nanosleep;
 	netbsd_lchown;
 	netbsd_msync;
-	nfsclnt;
 	nfssvc;
 	nfstat;
 	nlstat;
@@ -746,8 +745,6 @@ FBSDprivate_1.0 {
 	__sys_netbsd_lchown;
 	_netbsd_msync;
 	__sys_netbsd_msync;
-	_nfsclnt;
-	__sys_nfsclnt;
 	_nfssvc;
 	__sys_nfssvc;
 	_nfstat;

Modified: stable/7/sys/compat/freebsd32/syscalls.master
==============================================================================
--- stable/7/sys/compat/freebsd32/syscalls.master	Fri Jul 24 19:12:19 2009	(r195853)
+++ stable/7/sys/compat/freebsd32/syscalls.master	Fri Jul 24 19:35:06 2009	(r195854)
@@ -5,15 +5,17 @@
 ; System call name/number master file.
 ; Processed to created init_sysent.c, syscalls.c and syscall.h.
 
-; Columns: number audit type nargs name alt{name,tag,rtyp}/comments
+; Columns: number audit type name alt{name,tag,rtyp}/comments
 ;	number	system call number, must be in order
 ;	audit	the audit event associated with the system call
 ;		A value of AUE_NULL means no auditing, but it also means that
 ;		there is no audit event for the call at this time. For the
 ;		case where the event exists, but we don't want auditing, the
 ;		event should be #defined to AUE_NULL in audit_kevents.h.
-;	type	one of STD, OBSOL, UNIMPL, COMPAT, CPT_NOA, LIBCOMPAT,
-;		NODEF, NOARGS, NOPROTO, NOIMPL, NOSTD, COMPAT4
+;	type	one of STD, OBSOL, UNIMPL, COMPAT, COMPAT4, COMPAT6,
+;		LIBCOMPAT, NODEF, NOARGS, NOPROTO, NOSTD
+;		The COMPAT* options may be combined with one or more NO*
+;		options separated by '|' with no spaces (e.g. COMPAT|NOARGS)
 ;	name	psuedo-prototype of syscall routine
 ;		If one of the following alts is different, then all appear:
 ;	altname	name of system call if different
@@ -25,15 +27,16 @@
 ;	STD	always included
 ;	COMPAT	included on COMPAT #ifdef
 ;	COMPAT4	included on COMPAT4 #ifdef (FreeBSD 4 compat)
+;	COMPAT6	included on COMPAT6 #ifdef (FreeBSD 6 compat)
 ;	LIBCOMPAT included on COMPAT #ifdef, and placed in syscall.h
 ;	OBSOL	obsolete, not included in system, only specifies name
 ;	UNIMPL	not implemented, placeholder only
 ;	NOSTD	implemented but as a lkm that can be statically
-;		compiled in; sysent entry will be filled with lkmsys
+;		compiled in; sysent entry will be filled with lkmressys
 ;		so the SYSCALL_MODULE macro works
 ;	NOARGS	same as STD except do not create structure in sys/sysproto.h
 ;	NODEF	same as STD except only have the entry in the syscall table
-;		added.  Meaning - do do not create structure or function
+;		added.  Meaning - do not create structure or function
 ;		prototype in sys/sysproto.h
 ;	NOPROTO	same as STD except do not create structure or
 ;		function prototype in sys/sysproto.h.  Does add a
@@ -388,16 +391,16 @@
 ;
 ; The following are reserved for loadable syscalls
 ;
-210	AUE_NULL	UNIMPL
-211	AUE_NULL	UNIMPL
-212	AUE_NULL	UNIMPL
-213	AUE_NULL	UNIMPL
-214	AUE_NULL	UNIMPL
-215	AUE_NULL	UNIMPL
-216	AUE_NULL	UNIMPL
-217	AUE_NULL	UNIMPL
-218	AUE_NULL	UNIMPL
-219	AUE_NULL	UNIMPL
+210	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+211	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+212	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+213	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+214	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+215	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+216	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+217	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+218	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
+219	AUE_NULL	NODEF	lkmnosys lkmnosys nosys_args int
 
 ;
 ; The following were introduced with NetBSD/4.4Lite-2
@@ -652,7 +655,7 @@
 367	AUE_NULL	UNIMPL	__cap_get_file
 368	AUE_NULL	UNIMPL	__cap_set_fd
 369	AUE_NULL	UNIMPL	__cap_set_file
-370	AUE_NULL	UNIMPL	lkmressys
+370	AUE_NULL	UNIMPL	nosys
 371	AUE_EXTATTR_SET_FD	NOPROTO	{ int extattr_set_fd(int fd, \
 				    int attrnamespace, const char *attrname, \
 				    void *data, size_t nbytes); }

Modified: stable/7/sys/kern/makesyscalls.sh
==============================================================================
--- stable/7/sys/kern/makesyscalls.sh	Fri Jul 24 19:12:19 2009	(r195853)
+++ stable/7/sys/kern/makesyscalls.sh	Fri Jul 24 19:35:06 2009	(r195854)
@@ -213,6 +213,19 @@ s/\$//g
 		print
 		exit 1
 	}
+	# Returns true if the type "name" is the first flag in the type field
+	function type(name, flags, n) {
+		n = split($3, flags, /\|/)
+		return (n > 0 && flags[1] == name)
+	}
+	# Returns true if the flag "name" is set in the type field
+	function flag(name, flags, i, n) {
+		n = split($3, flags, /\|/)
+		for (i = 1; i <= n; i++)
+			if (flags[i] == name)
+				return 1
+		return 0
+	}
 	function align_sysent_comment(column) {
 		printf("\t") > sysent
 		column = column + 8 - column % 8
@@ -241,7 +254,7 @@ s/\$//g
 			rettype="int"
 			end=NF
 		}
-		if ($3 == "NODEF") {
+		if (flag("NODEF")) {
 			auditev="AUE_NULL"
 			funcname=$4
 			argssize = "AS(" $6 ")"
@@ -267,11 +280,11 @@ s/\$//g
 			funcalias = funcname
 		if (argalias == "") {
 			argalias = funcname "_args"
-			if ($3 == "COMPAT")
+			if (flag("COMPAT"))
 				argalias = "o" argalias
-			if ($3 == "COMPAT4")
+			if (flag("COMPAT4"))
 				argalias = "freebsd4_" argalias
-			if ($3 == "COMPAT6")
+			if (flag("COMPAT6"))
 				argalias = "freebsd6_" argalias
 		}
 		f++
@@ -318,8 +331,8 @@ s/\$//g
 		auditev = $2;
 	}
 
-	$3 == "STD" || $3 == "NODEF" || $3 == "NOARGS"  || $3 == "NOPROTO" \
-	    || $3 == "NOIMPL" || $3 == "NOSTD" {
+	type("STD") || type("NODEF") || type("NOARGS") || type("NOPROTO") \
+	    || type("NOSTD") {
 		parseline()
 		printf("\t/* %s */\n\tcase %d: {\n", funcname, syscall) > systrace
 		printf("\t/* %s */\n\tcase %d:\n", funcname, syscall) > systracetmp
@@ -345,43 +358,30 @@ s/\$//g
 		}
 		printf("\t\t*n_args = %d;\n\t\tbreak;\n\t}\n", argc) > systrace
 		printf("\t\tbreak;\n") > systracetmp
-		if ((!nosys || funcname != "nosys") && \
-		    (funcname != "lkmnosys") && (funcname != "lkmressys")) {
-			if (argc != 0 && $3 != "NOARGS" && $3 != "NOPROTO") {
-				printf("struct %s {\n", argalias) > sysarg
-				for (i = 1; i <= argc; i++)
-					printf("\tchar %s_l_[PADL_(%s)]; " \
-					    "%s %s; char %s_r_[PADR_(%s)];\n",
-					    argname[i], argtype[i],
-					    argtype[i], argname[i],
-					    argname[i], argtype[i]) > sysarg
-				printf("};\n") > sysarg
-			}
-			else if ($3 != "NOARGS" && $3 != "NOPROTO" && \
-			    $3 != "NODEF")
-				printf("struct %s {\n\tregister_t dummy;\n};\n",
-				    argalias) > sysarg
-		}
-		if (($3 != "NOPROTO" && $3 != "NODEF" && \
-		    (funcname != "nosys" || !nosys)) || \
-		    (funcname == "lkmnosys" && !lkmnosys) || \
-		    funcname == "lkmressys") {
+		if (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \
+		    !flag("NODEF")) {
+			printf("struct %s {\n", argalias) > sysarg
+			for (i = 1; i <= argc; i++)
+				printf("\tchar %s_l_[PADL_(%s)]; " \
+				    "%s %s; char %s_r_[PADR_(%s)];\n",
+				    argname[i], argtype[i],
+				    argtype[i], argname[i],
+				    argname[i], argtype[i]) > sysarg
+			printf("};\n") > sysarg
+		}
+		else if (!flag("NOARGS") && !flag("NOPROTO") && !flag("NODEF"))
+			printf("struct %s {\n\tregister_t dummy;\n};\n",
+			    argalias) > sysarg
+		if (!flag("NOPROTO") && !flag("NODEF")) {
 			printf("%s\t%s(struct thread *, struct %s *)",
 			    rettype, funcname, argalias) > sysdcl
 			printf(";\n") > sysdcl
 			printf("#define\t%sAUE_%s\t%s\n", syscallprefix,
 			    funcalias, auditev) > sysaue
 		}
-		if (funcname == "nosys")
-			nosys = 1
-		if (funcname == "lkmnosys")
-			lkmnosys = 1
 		printf("\t{ %s, (sy_call_t *)", argssize) > sysent
 		column = 8 + 2 + length(argssize) + 15
-		if ($3 == "NOIMPL") {
-			printf("%s },", "nosys, AUE_NULL, NULL, 0, 0") > sysent
-			column = column + length("nosys") + 3
-		} else if ($3 == "NOSTD") {
+		if (flag("NOSTD")) {
 			printf("%s },", "lkmressys, AUE_NULL, NULL, 0, 0") > sysent
 			column = column + length("lkmressys") + 3
 		} else {
@@ -392,7 +392,7 @@ s/\$//g
 		printf("/* %d = %s */\n", syscall, funcalias) > sysent
 		printf("\t\"%s\",\t\t\t/* %d = %s */\n",
 		    funcalias, syscall, funcalias) > sysnames
-		if ($3 != "NODEF") {
+		if (!flag("NODEF")) {
 			printf("#define\t%s%s\t%d\n", syscallprefix,
 		    	    funcalias, syscall) > syshdr
 			printf(" \\\n\t%s.o", funcalias) > sysmk
@@ -400,28 +400,32 @@ s/\$//g
 		syscall++
 		next
 	}
-	$3 == "COMPAT" || $3 == "COMPAT4" || $3 == "COMPAT6" || $3 == "CPT_NOA" {
-		if ($3 == "COMPAT" || $3 == "CPT_NOA") {
+	type("COMPAT") || type("COMPAT4") || type("COMPAT6") {
+		if (flag("COMPAT")) {
 			ncompat++
 			out = syscompat
 			outdcl = syscompatdcl
 			wrap = "compat"
 			prefix = "o"
-		} else if ($3 == "COMPAT4") {
+			descr = "old"
+		} else if (flag("COMPAT4")) {
 			ncompat4++
 			out = syscompat4
 			outdcl = syscompat4dcl
 			wrap = "compat4"
 			prefix = "freebsd4_"
-		} else if ($3 == "COMPAT6") {
+			descr = "freebsd4"
+		} else if (flag("COMPAT6")) {
 			ncompat6++
 			out = syscompat6
 			outdcl = syscompat6dcl
 			wrap = "compat6"
 			prefix = "freebsd6_"
+			descr = "freebsd6"
 		}
 		parseline()
-		if (argc != 0 && $3 != "CPT_NOA") {
+		if (argc != 0 && !flag("NOARGS") && !flag("NOPROTO") && \
+		    !flag("NODEF")) {
 			printf("struct %s {\n", argalias) > out
 			for (i = 1; i <= argc; i++)
 				printf("\tchar %s_l_[PADL_(%s)]; %s %s; " \
@@ -431,22 +435,33 @@ s/\$//g
 				    argname[i], argtype[i]) > out
 			printf("};\n") > out
 		}
-		else if($3 != "CPT_NOA")
+		else if (!flag("NOARGS") && !flag("NOPROTO") && !flag("NODEF"))
 			printf("struct %s {\n\tregister_t dummy;\n};\n",
 			    argalias) > sysarg
-		printf("%s\t%s%s(struct thread *, struct %s *);\n",
-		    rettype, prefix, funcname, argalias) > outdcl
-		printf("\t{ %s(%s,%s), %s, NULL, 0, 0 },",
-		    wrap, argssize, funcname, auditev) > sysent
-		align_sysent_comment(8 + 9 + \
-		    length(argssize) + 1 + length(funcname) + length(auditev) + 4)
-		printf("/* %d = old %s */\n", syscall, funcalias) > sysent
-		printf("\t\"%s.%s\",\t\t/* %d = old %s */\n",
-		    wrap, funcalias, syscall, funcalias) > sysnames
-		if ($3 == "COMPAT" || $3 == "CPT_NOA") {
+		if (!flag("NOPROTO") && !flag("NODEF")) {
+			printf("%s\t%s%s(struct thread *, struct %s *);\n",
+			    rettype, prefix, funcname, argalias) > outdcl
+			printf("#define\t%sAUE_%s%s\t%s\n", syscallprefix,
+			    prefix, funcname, auditev) > sysaue
+		}
+		if (flag("NOSTD")) {
+			printf("\t{ %s, (sy_call_t *)%s, %s, NULL, 0, 0 },",
+			    "0", "lkmressys", "AUE_NULL") > sysent
+			align_sysent_comment(8 + 2 + length("0") + 15 + \
+			    length("lkmressys") + 3)
+		} else {
+			printf("\t{ %s(%s,%s), %s, NULL, 0, 0 },",
+			    wrap, argssize, funcname, auditev) > sysent
+			align_sysent_comment(8 + 9 + length(argssize) + 1 + \
+			    length(funcname) + length(auditev) + 4)
+		}
+		printf("/* %d = %s %s */\n", syscall, descr, funcalias) > sysent
+		printf("\t\"%s.%s\",\t\t/* %d = %s %s */\n",
+		    wrap, funcalias, syscall, descr, funcalias) > sysnames
+		if (flag("COMPAT")) {
 			printf("\t\t\t\t/* %d is old %s */\n",
 			    syscall, funcalias) > syshdr
-		} else {
+		} else if (!flag("NODEF")) {
 			printf("#define\t%s%s%s\t%d\n", syscallprefix,
 			    prefix, funcalias, syscall) > syshdr
 			printf(" \\\n\t%s%s.o", prefix, funcalias) > sysmk
@@ -454,7 +469,7 @@ s/\$//g
 		syscall++
 		next
 	}
-	$3 == "LIBCOMPAT" {
+	type("LIBCOMPAT") {
 		ncompat++
 		parseline()
 		printf("%s\to%s();\n", rettype, funcname) > syscompatdcl
@@ -471,7 +486,7 @@ s/\$//g
 		syscall++
 		next
 	}
-	$3 == "OBSOL" {
+	type("OBSOL") {
 		printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },") > sysent
 		align_sysent_comment(34)
 		printf("/* %d = obsolete %s */\n", syscall, comment) > sysent
@@ -482,7 +497,7 @@ s/\$//g
 		syscall++
 		next
 	}
-	$3 == "UNIMPL" {
+	type("UNIMPL") {
 		printf("\t{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0 },\t\t\t/* %d = %s */\n",
 		    syscall, comment) > sysent
 		printf("\t\"#%d\",\t\t\t/* %d = %s */\n",

Modified: stable/7/sys/kern/syscalls.master
==============================================================================
--- stable/7/sys/kern/syscalls.master	Fri Jul 24 19:12:19 2009	(r195853)
+++ stable/7/sys/kern/syscalls.master	Fri Jul 24 19:35:06 2009	(r195854)
@@ -11,8 +11,10 @@
 ;		there is no audit event for the call at this time. For the
 ;		case where the event exists, but we don't want auditing, the
 ;		event should be #defined to AUE_NULL in audit_kevents.h.
-;	type	one of STD, OBSOL, UNIMPL, COMPAT, CPT_NOA, LIBCOMPAT,
-;		NODEF, NOARGS, NOPROTO, NOIMPL, NOSTD, COMPAT4
+;	type	one of STD, OBSOL, UNIMPL, COMPAT, COMPAT4, COMPAT6,
+;		LIBCOMPAT, NODEF, NOARGS, NOPROTO, NOSTD
+;		The COMPAT* options may be combined with one or more NO*
+;		options separated by '|' with no spaces (e.g. COMPAT|NOARGS)
 ;	name	psuedo-prototype of syscall routine
 ;		If one of the following alts is different, then all appear:
 ;	altname	name of system call if different
@@ -24,15 +26,16 @@
 ;	STD	always included
 ;	COMPAT	included on COMPAT #ifdef
 ;	COMPAT4	included on COMPAT4 #ifdef (FreeBSD 4 compat)
+;	COMPAT6	included on COMPAT6 #ifdef (FreeBSD 6 compat)
 ;	LIBCOMPAT included on COMPAT #ifdef, and placed in syscall.h
 ;	OBSOL	obsolete, not included in system, only specifies name
 ;	UNIMPL	not implemented, placeholder only
 ;	NOSTD	implemented but as a lkm that can be statically
-;		compiled in; sysent entry will be filled with lkmsys
+;		compiled in; sysent entry will be filled with lkmressys
 ;		so the SYSCALL_MODULE macro works
 ;	NOARGS	same as STD except do not create structure in sys/sysproto.h
 ;	NODEF	same as STD except only have the entry in the syscall table
-;		added.  Meaning - do do not create structure or function
+;		added.  Meaning - do not create structure or function
 ;		prototype in sys/sysproto.h
 ;	NOPROTO	same as STD except do not create structure or
 ;		function prototype in sys/sysproto.h.  Does add a
@@ -214,7 +217,7 @@
 				    int protocol); }
 98	AUE_CONNECT	STD	{ int connect(int s, caddr_t name, \
 				    int namelen); }
-99	AUE_ACCEPT	CPT_NOA	{ int accept(int s, caddr_t name, \
+99	AUE_ACCEPT	COMPAT|NOARGS { int accept(int s, caddr_t name, \
 				    int *anamelen); } accept accept_args int
 100	AUE_GETPRIORITY	STD	{ int getpriority(int which, int who); }
 101	AUE_SEND	COMPAT	{ int send(int s, caddr_t buf, int len, \
@@ -258,7 +261,7 @@
 				    struct timezone *tzp); }
 123	AUE_FCHOWN	STD	{ int fchown(int fd, int uid, int gid); }
 124	AUE_FCHMOD	STD	{ int fchmod(int fd, int mode); }
-125	AUE_RECVFROM	CPT_NOA	{ int recvfrom(int s, caddr_t buf, \
+125	AUE_RECVFROM	COMPAT|NOARGS { int recvfrom(int s, caddr_t buf, \
 				    size_t len, int flags, caddr_t from, int \
 				    *fromlenaddr); } recvfrom recvfrom_args \
 				    int
@@ -294,7 +297,7 @@
 148	AUE_QUOTACTL	STD	{ int quotactl(char *path, int cmd, int uid, \
 				    caddr_t arg); }
 149	AUE_O_QUOTA	COMPAT	{ int quota(void); }
-150	AUE_GETSOCKNAME	CPT_NOA	{ int getsockname(int fdec, \
+150	AUE_GETSOCKNAME	COMPAT|NOARGS { int getsockname(int fdec, \
 				    caddr_t asa, int *alen); } getsockname \
 				    getsockname_args int
 
@@ -380,7 +383,7 @@
 197	AUE_MMAP	STD	{ caddr_t freebsd6_mmap(caddr_t addr, \
 				    size_t len, int prot, int flags, int fd, \
 				    int pad, off_t pos); }
-198	AUE_NULL	STD	{ int nosys(void); } __syscall \
+198	AUE_NULL	NOPROTO	{ int nosys(void); } __syscall \
 				    __syscall_args int
 199	AUE_LSEEK	STD	{ off_t freebsd6_lseek(int fd, int pad, \
 				    off_t offset, int whence); }
@@ -657,7 +660,7 @@
 367	AUE_NULL	UNIMPL	__cap_get_file
 368	AUE_NULL	UNIMPL	__cap_set_fd
 369	AUE_NULL	UNIMPL	__cap_set_file
-370	AUE_NULL	NODEF	lkmressys lkmressys nosys_args int
+370	AUE_NULL	UNIMPL	nosys
 371	AUE_EXTATTR_SET_FD	STD	{ int extattr_set_fd(int fd, \
 				    int attrnamespace, const char *attrname, \
 				    void *data, size_t nbytes); }
@@ -668,7 +671,7 @@
 				    int attrnamespace, \
 				    const char *attrname); }
 374	AUE_NULL	STD	{ int __setugid(int flag); }
-375	AUE_NULL	NOIMPL	{ int nfsclnt(int flag, caddr_t argp); }
+375	AUE_NULL	UNIMPL	nfsclnt
 376	AUE_EACCESS	STD	{ int eaccess(char *path, int flags); }
 377	AUE_NULL	UNIMPL	afs_syscall
 378	AUE_NMOUNT	STD	{ int nmount(struct iovec *iovp, \

Modified: stable/7/sys/sys/sysent.h
==============================================================================
--- stable/7/sys/sys/sysent.h	Fri Jul 24 19:12:19 2009	(r195853)
+++ stable/7/sys/sys/sysent.h	Fri Jul 24 19:35:06 2009	(r195854)
@@ -158,6 +158,12 @@ int    syscall_register(int *offset, str
 int    syscall_deregister(int *offset, struct sysent *old_sysent);
 int    syscall_module_handler(struct module *mod, int what, void *arg);
 
+/* Special purpose system call functions. */
+struct nosys_args;
+
+int	lkmnosys(struct thread *, struct nosys_args *);
+int	lkmressys(struct thread *, struct nosys_args *);
+
 #endif /* _KERNEL */
 
 #endif /* !_SYS_SYSENT_H_ */


More information about the svn-src-stable-7 mailing list