1*cf84ac9aSAndroid Build Coastguard Worker #include "tests.h" 2*cf84ac9aSAndroid Build Coastguard Worker #include <fcntl.h> 3*cf84ac9aSAndroid Build Coastguard Worker #include <asm/unistd.h> 4*cf84ac9aSAndroid Build Coastguard Worker 5*cf84ac9aSAndroid Build Coastguard Worker #if defined __NR_dup3 && defined O_CLOEXEC 6*cf84ac9aSAndroid Build Coastguard Worker 7*cf84ac9aSAndroid Build Coastguard Worker # include <stdio.h> 8*cf84ac9aSAndroid Build Coastguard Worker # include <unistd.h> 9*cf84ac9aSAndroid Build Coastguard Worker 10*cf84ac9aSAndroid Build Coastguard Worker int main(void)11*cf84ac9aSAndroid Build Coastguard Workermain(void) 12*cf84ac9aSAndroid Build Coastguard Worker { 13*cf84ac9aSAndroid Build Coastguard Worker const long int fd_old = (long int) 0xdeadbeefffffffffULL; 14*cf84ac9aSAndroid Build Coastguard Worker const long int fd_new = (long int) 0xdeadbeeffffffffeULL; 15*cf84ac9aSAndroid Build Coastguard Worker 16*cf84ac9aSAndroid Build Coastguard Worker long rc = syscall(__NR_dup3, fd_old, fd_new, O_CLOEXEC); 17*cf84ac9aSAndroid Build Coastguard Worker printf("dup3(%d, %d, O_CLOEXEC) = %ld %s (%m)\n", 18*cf84ac9aSAndroid Build Coastguard Worker (int) fd_old, (int) fd_new, rc, errno2name()); 19*cf84ac9aSAndroid Build Coastguard Worker 20*cf84ac9aSAndroid Build Coastguard Worker puts("+++ exited with 0 +++"); 21*cf84ac9aSAndroid Build Coastguard Worker return 0; 22*cf84ac9aSAndroid Build Coastguard Worker } 23*cf84ac9aSAndroid Build Coastguard Worker 24*cf84ac9aSAndroid Build Coastguard Worker #else 25*cf84ac9aSAndroid Build Coastguard Worker 26*cf84ac9aSAndroid Build Coastguard Worker SKIP_MAIN_UNDEFINED("__NR_dup3 && O_CLOEXEC") 27*cf84ac9aSAndroid Build Coastguard Worker 28*cf84ac9aSAndroid Build Coastguard Worker #endif 29