OSDN Git Service

proc: test /proc/self/wchan
authorAlexey Dobriyan <adobriyan@gmail.com>
Tue, 10 Apr 2018 23:31:45 +0000 (16:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 11 Apr 2018 17:28:34 +0000 (10:28 -0700)
This patch starts testing /proc.  Many more tests to come (I promise).

Read from /proc/self/wchan should always return "0" as current is in
TASK_RUNNING state while reading /proc/self/wchan.

Link: http://lkml.kernel.org/r/20180226212006.GA742@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
tools/testing/selftests/Makefile
tools/testing/selftests/proc/.gitignore [new file with mode: 0644]
tools/testing/selftests/proc/Makefile [new file with mode: 0644]
tools/testing/selftests/proc/config [new file with mode: 0644]
tools/testing/selftests/proc/proc-self-wchan.c [new file with mode: 0644]

index 2fc410b..32aafa9 100644 (file)
@@ -25,6 +25,7 @@ TARGETS += mqueue
 TARGETS += net
 TARGETS += nsfs
 TARGETS += powerpc
+TARGETS += proc
 TARGETS += pstore
 TARGETS += ptrace
 TARGETS += seccomp
diff --git a/tools/testing/selftests/proc/.gitignore b/tools/testing/selftests/proc/.gitignore
new file mode 100644 (file)
index 0000000..4c851db
--- /dev/null
@@ -0,0 +1 @@
+/proc-self-wchan
diff --git a/tools/testing/selftests/proc/Makefile b/tools/testing/selftests/proc/Makefile
new file mode 100644 (file)
index 0000000..592603a
--- /dev/null
@@ -0,0 +1,6 @@
+CFLAGS += -Wall -O2
+
+TEST_GEN_PROGS :=
+TEST_GEN_PROGS += proc-self-wchan
+
+include ../lib.mk
diff --git a/tools/testing/selftests/proc/config b/tools/testing/selftests/proc/config
new file mode 100644 (file)
index 0000000..68fbd2b
--- /dev/null
@@ -0,0 +1 @@
+CONFIG_PROC_FS=y
diff --git a/tools/testing/selftests/proc/proc-self-wchan.c b/tools/testing/selftests/proc/proc-self-wchan.c
new file mode 100644 (file)
index 0000000..b8d8728
--- /dev/null
@@ -0,0 +1,25 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <unistd.h>
+
+int main(void)
+{
+       char buf[64];
+       int fd;
+
+       fd = open("/proc/self/wchan", O_RDONLY);
+       if (fd == -1) {
+               if (errno == ENOENT)
+                       return 2;
+               return 1;
+       }
+
+       buf[0] = '\0';
+       if (read(fd, buf, sizeof(buf)) != 1)
+               return 1;
+       if (buf[0] != '0')
+               return 1;
+       return 0;
+}