svn commit: r309661 - stable/11/tests/sys/kern/pipe

Ngie Cooper ngie at FreeBSD.org
Wed Dec 7 00:55:38 UTC 2016


Author: ngie
Date: Wed Dec  7 00:55:36 2016
New Revision: 309661
URL: https://svnweb.freebsd.org/changeset/base/309661

Log:
  MFC r306962:
  r306962 (by br):
  
  Ensure data in pipe is available to read.
  Useful for latest (5th, direct mode) test only.

Modified:
  stable/11/tests/sys/kern/pipe/pipe_fstat_bug_test.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/tests/sys/kern/pipe/pipe_fstat_bug_test.c
==============================================================================
--- stable/11/tests/sys/kern/pipe/pipe_fstat_bug_test.c	Tue Dec  6 23:52:56 2016	(r309660)
+++ stable/11/tests/sys/kern/pipe/pipe_fstat_bug_test.c	Wed Dec  7 00:55:36 2016	(r309661)
@@ -26,6 +26,7 @@ SUCH DAMAGE.
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
+#include <sys/event.h>
 #include <assert.h>
 #include <err.h>
 #include <errno.h>
@@ -49,10 +50,12 @@ main(void)
 {
 	char buffer[32768], buffer2[32768], go[] = "go", go2[] = "go2";
 	int desc[2], ipc_coord[2];
+	struct kevent event, ke;
 	ssize_t error;
 	int successes = 0;
 	struct stat status;
 	pid_t new_pid;
+	int kq;
 
 	error = pipe(desc);
 	if (error == -1)
@@ -118,9 +121,24 @@ main(void)
 		_exit(0);
 	}
 
+	kq = kqueue();
+	if (kq == -1)
+		_exit(1);
+
+	EV_SET(&ke, desc[0], EVFILT_READ, EV_ADD, 0, 0, NULL);
+
+	/* Attach event to the kqueue. */
+	if (kevent(kq, &ke, 1, NULL, 0, NULL) != 0)
+		_exit(2);
+
 	while (successes < 5) {
 		SYNC_W(1, go);
 		SYNC_R(1, go2);
+
+		/* Ensure data is available to read */
+		if (kevent(kq, NULL, 0, &event, 1, NULL) != 1)
+			_exit(3);
+
 		fstat(desc[0], &status);
 		error = read(desc[0], &buffer2, sizeof(buffer2));
 


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