4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 // Test that /proc/*/task never contains "0".
17 #include <sys/types.h>
26 static pid_t pid = -1;
28 static void atexit_hook(void)
35 static void *f(void *_)
40 static void sigalrm(int _)
52 pthread_create(&pth, NULL, f, NULL);
53 pthread_join(pth, NULL);
60 snprintf(buf, sizeof(buf), "/proc/%u/task", pid);
62 signal(SIGALRM, sigalrm);
66 DIR *d = opendir(buf);
68 while ((de = readdir(d))) {
69 if (strcmp(de->d_name, "0") == 0) {