2 #include <sys/syscall.h>
10 # ifdef MAJOR_IN_SYSMACROS
11 # include <sys/sysmacros.h>
13 # ifdef MAJOR_IN_MKDEV
14 # include <sys/mkdev.h>
17 # define TMP_FILE "mknod"
22 long rc = syscall(__NR_mknod, TMP_FILE, 0, 0xdeadbeef);
23 printf("mknod(\"%s\", 0) = %ld %s (%m)\n",
24 TMP_FILE, rc, errno2name());
26 rc = syscall(__NR_mknod, TMP_FILE, -1L, 0xdeadbeef);
27 printf("mknod(\"%s\", %#o) = %ld %s (%m)\n",
28 TMP_FILE, -1, rc, errno2name());
30 rc = syscall(__NR_mknod, TMP_FILE, S_IFREG|0600, 0);
31 printf("mknod(\"%s\", S_IFREG|0600) = %ld %s (%m)\n",
32 TMP_FILE, rc, errno2name());
35 (unsigned long) 0xdeadbeef00000000 | makedev(1, 7);
37 rc = syscall(__NR_mknod, TMP_FILE, S_IFCHR | 0400, dev);
38 printf("mknod(\"%s\", S_IFCHR|0400, makedev(1, 7)) = %ld %s (%m)\n",
39 TMP_FILE, rc, errno2name());
41 const unsigned long mode =
42 ((unsigned long) 0xfacefeedffffffff & ~S_IFMT) | S_IFBLK;
43 dev = (unsigned long) 0xdeadbeefbadc0ded;
45 rc = syscall(__NR_mknod, TMP_FILE, mode, dev);
46 printf("mknod(\"%s\", S_IFBLK|S_ISUID|S_ISGID|S_ISVTX|%#o"
47 ", makedev(%u, %u)) = %ld %s (%m)\n",
48 TMP_FILE, (unsigned) mode & ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX),
49 major((unsigned) dev), minor((unsigned) dev),
52 puts("+++ exited with 0 +++");
58 SKIP_MAIN_UNDEFINED("__NR_mknod")