svn commit: r306157 - head/sys/kern

Mark Johnston markj at FreeBSD.org
Thu Sep 22 04:49:32 UTC 2016


Author: markj
Date: Thu Sep 22 04:49:31 2016
New Revision: 306157
URL: https://svnweb.freebsd.org/changeset/base/306157

Log:
  Annotate syscall provider pointer arguments with the "userland" keyword.
  
  This causes dtrace to automatically copyin arguments from userland, so
  one no longer has to explicitly use the copyin() action to do so. Moreover,
  copyin() on userland addresses is a no-op, so existing scripts should be
  unaffected by this change.
  
  Discussed with:	rstone
  MFC after:	2 weeks

Modified:
  head/sys/kern/makesyscalls.sh

Modified: head/sys/kern/makesyscalls.sh
==============================================================================
--- head/sys/kern/makesyscalls.sh	Thu Sep 22 03:35:02 2016	(r306156)
+++ head/sys/kern/makesyscalls.sh	Thu Sep 22 04:49:31 2016	(r306157)
@@ -418,7 +418,10 @@ s/\$//g
 			for (i = 1; i <= argc; i++) {
 				arg = argtype[i]
 				sub("__restrict$", "", arg)
-				printf("\t\tcase %d:\n\t\t\tp = \"%s\";\n\t\t\tbreak;\n", i - 1, arg) > systracetmp
+				if (index(arg, "*") > 0)
+					printf("\t\tcase %d:\n\t\t\tp = \"userland %s\";\n\t\t\tbreak;\n", i - 1, arg) > systracetmp
+				else
+					printf("\t\tcase %d:\n\t\t\tp = \"%s\";\n\t\t\tbreak;\n", i - 1, arg) > systracetmp
 				if (index(arg, "*") > 0 || arg == "caddr_t")
 					printf("\t\tuarg[%d] = (intptr_t) p->%s; /* %s */\n", \
 					     i - 1, \


More information about the svn-src-head mailing list