brintos

brintos / linux-shallow public Read only

0
0
Text · 846 B · b7d57ea Raw
52 lines · c
1#pragma once2#undef NDEBUG3#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 12static inline pid_t sys_getpid(void)13{14	return syscall(SYS_getpid);15}16 17static inline pid_t sys_gettid(void)18{19	return syscall(SYS_gettid);20}21 22static inline bool streq(const char *s1, const char *s2)23{24	return strcmp(s1, s2) == 0;25}26 27static 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	} else40		assert(0);41}42 43static 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}52