162306a36Sopenharmony_ci#pragma once 262306a36Sopenharmony_ci#undef NDEBUG 362306a36Sopenharmony_ci#include <assert.h> 462306a36Sopenharmony_ci#include <dirent.h> 562306a36Sopenharmony_ci#include <errno.h> 662306a36Sopenharmony_ci#include <stdbool.h> 762306a36Sopenharmony_ci#include <stdlib.h> 862306a36Sopenharmony_ci#include <string.h> 962306a36Sopenharmony_ci#include <unistd.h> 1062306a36Sopenharmony_ci#include <sys/syscall.h> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cistatic inline pid_t sys_getpid(void) 1362306a36Sopenharmony_ci{ 1462306a36Sopenharmony_ci return syscall(SYS_getpid); 1562306a36Sopenharmony_ci} 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_cistatic inline pid_t sys_gettid(void) 1862306a36Sopenharmony_ci{ 1962306a36Sopenharmony_ci return syscall(SYS_gettid); 2062306a36Sopenharmony_ci} 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_cistatic inline bool streq(const char *s1, const char *s2) 2362306a36Sopenharmony_ci{ 2462306a36Sopenharmony_ci return strcmp(s1, s2) == 0; 2562306a36Sopenharmony_ci} 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_cistatic unsigned long long xstrtoull(const char *p, char **end) 2862306a36Sopenharmony_ci{ 2962306a36Sopenharmony_ci if (*p == '0') { 3062306a36Sopenharmony_ci *end = (char *)p + 1; 3162306a36Sopenharmony_ci return 0; 3262306a36Sopenharmony_ci } else if ('1' <= *p && *p <= '9') { 3362306a36Sopenharmony_ci unsigned long long val; 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci errno = 0; 3662306a36Sopenharmony_ci val = strtoull(p, end, 10); 3762306a36Sopenharmony_ci assert(errno == 0); 3862306a36Sopenharmony_ci return val; 3962306a36Sopenharmony_ci } else 4062306a36Sopenharmony_ci assert(0); 4162306a36Sopenharmony_ci} 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_cistatic struct dirent *xreaddir(DIR *d) 4462306a36Sopenharmony_ci{ 4562306a36Sopenharmony_ci struct dirent *de; 4662306a36Sopenharmony_ci 4762306a36Sopenharmony_ci errno = 0; 4862306a36Sopenharmony_ci de = readdir(d); 4962306a36Sopenharmony_ci assert(de || errno == 0); 5062306a36Sopenharmony_ci return de; 5162306a36Sopenharmony_ci} 52