Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 Sep 2013 12:10:48 +0000 (UTC)
From:      Peter Holm <pho@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r255701 - user/pho/stress2/misc
Message-ID:  <201309191210.r8JCAmBu039540@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pho
Date: Thu Sep 19 12:10:47 2013
New Revision: 255701
URL: http://svnweb.freebsd.org/changeset/base/255701

Log:
  Check syscall argument against ignore list. Added support for LP64.
  
  Sponsored by:	EMC / Isilon storage division

Modified:
  user/pho/stress2/misc/syscall4.sh

Modified: user/pho/stress2/misc/syscall4.sh
==============================================================================
--- user/pho/stress2/misc/syscall4.sh	Thu Sep 19 11:06:58 2013	(r255700)
+++ user/pho/stress2/misc/syscall4.sh	Thu Sep 19 12:10:47 2013	(r255701)
@@ -108,6 +108,7 @@ static int ignore[] = {
 	SYS_mac_syscall,
 	SYS_sigtimedwait,
 	SYS_sigwaitinfo,
+	SYS_pdfork,
 };
 
 int fd[900], fds[2], socketpr[2];
@@ -129,7 +130,8 @@ hand(int i __unused) {	/* handler */
 unsigned long
 makearg(void)
 {
-	unsigned int i, val;
+	unsigned int i;
+	unsigned long val;
 
 	val = arc4random();
 	i   = arc4random() % 100;
@@ -138,7 +140,14 @@ makearg(void)
 	if (i >= 20 && i < 40)
 		val = val & 0xffff;
 	if (i >= 40 && i < 60)
-		val = (unsigned long)(r) + (val & 0xffff);
+		val = (unsigned long)(r) | (val & 0xffff);
+#if defined(__LP64__)
+	if (i >= 60) {
+		val = (val << 32) | arc4random();
+		if (i > 80)
+			val = val & 0x00007fffffffffffUL;
+	}
+#endif
 
 	return(val);
 }
@@ -208,7 +217,7 @@ calls(void *arg __unused)
 		num = syscallno;
 		while (num == 0) {
 			num = random_int(0, SYS_MAXSYSCALL);
-			for (j = 0; j < (int)sizeof(ignore) / (int)sizeof(ignore[0]); j++)
+			for (j = 0; j < (int)nitems(ignore); j++)
 				if (num == ignore[j]) {
 					num = 0;
 					break;
@@ -260,8 +269,12 @@ main(int argc, char **argv)
 	signal(SIGSYS,  hand);
 	signal(SIGTRAP, hand);
 
-	if (argc == 2)
+	if (argc == 2) {
 		syscallno = atoi(argv[1]);
+		for (j = 0; j < (int)nitems(ignore); j++)
+			if (syscallno == ignore[j]) 
+				errx(0, "syscall #%d is on the ignore list.", syscallno);
+	}
 
 	for (i = 0; i < 100000; i++) {
 		if (fork() == 0) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201309191210.r8JCAmBu039540>