Linux-libre 5.0.10-gnu
[librecmc/linux-libre.git] / tools / testing / selftests / proc / proc.h
1 #pragma once
2 #undef NDEBUG
3 #include <assert.h>
4 #include <dirent.h>
5 #include <errno.h>
6 #include <stdbool.h>
7 #include <stdlib.h>
8 #include <string.h>
9 #include <unistd.h>
10 #include <sys/syscall.h>
11
12 static inline pid_t sys_getpid(void)
13 {
14         return syscall(SYS_getpid);
15 }
16
17 static inline pid_t sys_gettid(void)
18 {
19         return syscall(SYS_gettid);
20 }
21
22 static inline bool streq(const char *s1, const char *s2)
23 {
24         return strcmp(s1, s2) == 0;
25 }
26
27 static unsigned long long xstrtoull(const char *p, char **end)
28 {
29         if (*p == '0') {
30                 *end = (char *)p + 1;
31                 return 0;
32         } else if ('1' <= *p && *p <= '9') {
33                 unsigned long long val;
34
35                 errno = 0;
36                 val = strtoull(p, end, 10);
37                 assert(errno == 0);
38                 return val;
39         } else
40                 assert(0);
41 }
42
43 static struct dirent *xreaddir(DIR *d)
44 {
45         struct dirent *de;
46
47         errno = 0;
48         de = readdir(d);
49         assert(de || errno == 0);
50         return de;
51 }