1#ifndef _TESTS_H_ 2#define _TESTS_H_ 3 4#ifndef CONFORMANCE_TESTS_IN_XNU 5#define CONFORMANCE_TESTS_IN_XNU 0 6#endif 7#ifndef TEST_SYSTEM_CALLS 8#define TEST_SYSTEM_CALLS 0 9#endif 10 11#include <errno.h> 12#include <fcntl.h> 13#include <signal.h> /* Install signal handlers*/ 14#include <spawn.h> 15#include <stdio.h> 16#include <stdlib.h> 17#include <string.h> 18#include <unistd.h> 19#include <stdbool.h> 20#include <assert.h> 21#include <stdarg.h> /* Used to support printf() in misc.c */ 22#include <mach/machine.h> /* Used to determine host properties */ 23#include <mach/vm_inherit.h> 24#include <sys/acct.h> 25#include <sys/aio.h> 26#include <sys/attr.h> 27#include <sys/dirent.h> 28#include <sys/disk.h> 29#include <sys/uio.h> 30#include <sys/kauth.h> 31#include <sys/mman.h> 32#include <sys/mount.h> 33#include <sys/param.h> 34#include <sys/ptrace.h> 35#include <sys/quota.h> 36#include <sys/resource.h> 37#include <sys/select.h> 38#include <sys/signal.h> 39#include <sys/socket.h> 40#include <sys/stat.h> 41#include <sys/syscall.h> 42#include <sys/sysctl.h> /* Used to determine host properties */ 43#include <sys/syslimits.h> 44#include <sys/time.h> 45#include <sys/ttycom.h> 46#include <sys/types.h> 47#include <sys/ucred.h> 48#include <sys/vnode.h> 49#include <sys/wait.h> 50#include <TargetConditionals.h> /* for TARGET_OS_EMBEDDED */ 51 52#define MY_BUFFER_SIZE (1024 * 10) 53#define ARM 100 /* I am not sure if the value really matters? */ 54#define INTEL 38947 /* 55 * Random values used by execve tests to 56 * determine architecture of machine. 57 */ 58 59#define FILE_NOTME "/private/tmp/notme" /* file in /private/tmp not owned by the current user */ 60#define FILE_ME "/private/tmp/me" /* file in /private/tmp owned by the current user */ 61 62typedef int (*test_rtn_t)(void *); 63 64int access_chmod_fchmod_test( void * the_argp ); 65int acct_test( void * the_argp ); 66int aio_tests( void * the_argp ); 67int bsd_shm_tests( void * the_argp ); 68int chdir_fchdir_test( void * the_argp ); 69int chflags_fchflags_test( void * the_argp ); 70int chroot_test( void * the_argp ); 71int chown_fchown_lchown_lstat_symlink_test( void * the_argp ); 72int create_file_with_name( char *the_pathp, char *the_namep, int remove_existing ); 73int create_random_name( char *the_pathp, int do_open ); 74int directory_tests( void * the_argp ); 75int do_execve_test(char * path, char * argv[], void * envpi, int killwait); 76int do_spawn_test(int arch, int shouldfail); 77int dup_test( void * the_argp ); 78int exchangedata_test( void * the_argp ); 79int execve_kill_vfork_test( void * the_argp ); 80int fcntl_test( void * the_argp ); 81int fork_wait4_exit_test( void * the_argp ); 82int fs_stat_tests( void * the_argp ); 83int get_architecture(void); /* Intel or PPC */ 84int get_bits(void); /* 64 or 32 */ 85int getlogin_setlogin_test( void * the_argp ); 86int getpid_getppid_pipe_test( void * the_argp ); 87int getpriority_setpriority_test( void * the_argp ); 88int getrusage_test( void * the_argp ); 89int groups_test( void * the_argp ); 90int ioctl_test( void * the_argp ); 91int kqueue_tests( void * the_argp ); 92int limit_tests( void * the_argp ); 93int link_stat_unlink_test( void * the_argp ); 94int locking_test( void * the_argp ); 95int memory_tests( void * the_argp ); 96int message_queue_tests( void * the_argp ); 97int mkdir_rmdir_umask_test( void * the_argp ); 98int mkfifo_test( void * the_argp ); 99int mknod_sync_test( void * the_argp ); 100int open_close_test( void * the_argp ); 101int process_group_test( void * the_argp ); 102int quotactl_test( void * the_argp ); 103int read_write_test( void * the_argp ); 104int rename_test( void * the_argp ); 105int searchfs_test( void * the_argp ); 106int sema_tests( void * the_argp ); 107int sema2_tests( void * the_argp ); 108int shm_tests( void * the_argp ); 109int signals_test( void * the_argp ); 110int socket_tests( void * the_argp ); 111int socket2_tests( void * the_argp ); 112int syscall_test( void * the_argp ); 113int time_tests( void * the_argp ); 114int uid_tests( void * the_argp ); 115int xattr_tests( void * the_argp ); 116int data_exec_tests( void * the_argp ); 117int machvm_tests( void * the_argp ); 118int getdirentries_test( void * the_argp ); 119int statfs_32bit_inode_tests( void * the_argp ); 120int commpage_data_tests( void * the_argp ); 121int atomic_fifo_queue_test( void * the_argp ); 122int sched_tests( void * the_argp ); 123int content_protection_test( void * the_argp ); 124int pipes_test( void * the_argp ); 125int kaslr_test( void * the_argp ); 126int getattrlistbulk_test( void * the_argp ); 127int openat_close_test( void * the_argp ); 128int linkat_fstatat_unlinkat_test( void * the_argp ); 129int faccessat_fchmodat_fchmod_test( void * the_argp ); 130int fchownat_fchown_symlinkat_test( void * the_argp ); 131int mkdirat_unlinkat_umask_test( void * the_argp ); 132int renameat_test( void * the_argp ); 133int set_exception_ports_test( void * the_argp ); 134 135struct test_entry 136{ 137 int test_run_it; /* 0 means do not run this test, else run it */ 138 test_rtn_t test_routine; /* routine to call */ 139 void * test_input; /* optional input to test_routine */ 140 char * test_infop; /* information about what is tested */ 141}; 142typedef struct test_entry * test_entryp; 143 144/* Special replacement printf with date/time stamp */ 145int my_printf(const char * __restrict fmt, ...); 146#define printf my_printf 147 148/* 149 If running xnu_quick_test under testbots, disable special 150 printf defined in the previous step. This is done in order 151 to generate log messages in a format which testbots understands 152*/ 153 154#if RUN_UNDER_TESTBOTS 155#undef printf 156#endif 157 158#endif /* !_TESTS_H_ */ 159