1 #include <stdint.h> 2 #include <unistd.h> 3 #include <stdbool.h> 4 5 #ifdef __cplusplus 6 extern "C" { 7 #endif 8 9 /* TODO: not thread-safe nor fork-safe */ 10 extern volatile int t_status; 11 12 #define T_LOC2(l) __FILE__ ":" #l 13 #define T_LOC1(l) T_LOC2(l) 14 #define t_error(...) t_printf(T_LOC1(__LINE__) ": " __VA_ARGS__) 15 16 int t_printf(const char *s, ...); 17 18 int t_vmfill(void **, size_t *, int); 19 int t_memfill(void); 20 21 void t_fdfill(void); 22 23 void t_randseed(uint64_t s); 24 uint64_t t_randn(uint64_t n); 25 uint64_t t_randint(uint64_t a, uint64_t b); 26 void t_shuffle(uint64_t *p, size_t n); 27 void t_randrange(uint64_t *p, size_t n); 28 int t_choose(uint64_t n, size_t k, uint64_t *p); 29 30 char *t_pathrel(char *buf, size_t n, char *argv0, char *p); 31 32 int t_setrlim(int r, long lim); 33 34 int t_setutf8(void); 35 36 void check_log(const char *file, const char *pattern, bool regex_match); 37 void clear_log(const char *log_dir, const char *file_tag); 38 // Use the file_tag to match all the files in log_dir, and then check if the file contain pattern. 39 void find_and_check_file(const char *log_dir, const char *file_tag, const char *pattern, bool regex_match); 40 41 #ifndef __arm__ 42 #define __clock_gettime64 clock_gettime 43 #define __pthread_cond_timedwait_time64 pthread_cond_timedwait 44 #define __nanosleep_time64 nanosleep 45 #define __fstat_time64 fstat 46 #define __lstat_time64 lstat 47 #define __stat_time64 stat 48 #define __utimensat_time64 utimensat 49 #define __adjtimex_time64 adjtimex 50 #define __clock_adjtime64 clock_adjtime 51 #define __clock_getres_time64 clock_getres 52 #define __clock_nanosleep_time64 clock_nanosleep 53 #define __clock_settime64 clock_settime 54 #define __cnd_timedwait_time64 cnd_timedwait 55 #define __ctime64 ctime 56 #define __ctime64_r ctime_r 57 #define __difftime64 difftime 58 #define __dlsym_time64 dlsym 59 #define __fstatat_time64 fstatat 60 #define __futimens_time64 futimens 61 #define __futimes_time64 futimes 62 #define __futimesat_time64 futimesat 63 #define __getitimer_time64 getitimer 64 #define __getrusage_time64 getrusage 65 #define __gettimeofday_time64 gettimeofday 66 #define __gmtime64 gmtime 67 #define __gmtime64_r gmtime_r 68 #define __localtime64 localtime 69 #define __localtime64_r localtime_r 70 #define __lutimes_time64 lutimes 71 #define __mktime64 mktime 72 #define __mtx_timedlock_time64 mtx_timedlock 73 #define __ppoll_time64 ppoll 74 #define __pselect_time64 pselect 75 #define __pthread_mutex_timedlock_time64 pthread_mutex_timedlock 76 #define __pthread_rwlock_timedrdlock_time64 pthread_rwlock_timedrdlock 77 #define __pthread_rwlock_timedwrlock_time64 pthread_rwlock_timedwrlock 78 #define __recvmmsg_time64 recvmmsg 79 #define __sched_rr_get_interval_time64 sched_rr_get_interval 80 #define __select_time64 select 81 #define __sem_timedwait_time64 sem_timedwait 82 #define __semtimedop_time64 semtimedop 83 #define __setitimer_time64 setitimer 84 #define __settimeofday_time64 settimeofday 85 #define __sigtimedwait_time64 sigtimedwait 86 #define __thrd_sleep_time64 thrd_sleep 87 #define __time64 time 88 #define __timegm_time64 timegm 89 #define __timer_gettime64 timer_gettime 90 #define __timer_settime64 timer_settime 91 #define __timerfd_gettime64 timerfd_gettime 92 #define __timerfd_settime64 timerfd_settime 93 #define __timespec_get_time64 timespec_get 94 #define __utime64 utime 95 #define __utimes_time64 utimes 96 #define __wait4_time64 wait4 97 #endif 98 99 #define TEST_MODE 0666 100 101 #ifdef __cplusplus 102 } 103 #endif 104