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 ); 126 127struct test_entry 128{ 129 int test_run_it; /* 0 means do not run this test, else run it */ 130 test_rtn_t test_routine; /* routine to call */ 131 void * test_input; /* optional input to test_routine */ 132 char * test_infop; /* information about what is tested */ 133}; 134typedef struct test_entry * test_entryp; 135 136/* Special replacement printf with date/time stamp */ 137int my_printf(const char * __restrict fmt, ...); 138#define printf my_printf 139 140/* 141 If running xnu_quick_test under testbots, disable special 142 printf defined in the previous step. This is done in order 143 to generate log messages in a format which testbots understands 144*/ 145 146#if RUN_UNDER_TESTBOTS 147#undef printf 148#endif 149 150#endif /* !_TESTS_H_ */ 151