1*d83cc019SAndroid Build Coastguard Worker #include "igt.h" 2*d83cc019SAndroid Build Coastguard Worker #include <sys/ioctl.h> 3*d83cc019SAndroid Build Coastguard Worker #include <fcntl.h> 4*d83cc019SAndroid Build Coastguard Worker #include <errno.h> 5*d83cc019SAndroid Build Coastguard Worker #include <string.h> 6*d83cc019SAndroid Build Coastguard Worker #include <signal.h> 7*d83cc019SAndroid Build Coastguard Worker #include <i915_drm.h> 8*d83cc019SAndroid Build Coastguard Worker 9*d83cc019SAndroid Build Coastguard Worker main(void)10*d83cc019SAndroid Build Coastguard Workerint main(void) 11*d83cc019SAndroid Build Coastguard Worker { 12*d83cc019SAndroid Build Coastguard Worker struct drm_i915_gem_sw_finish arg = { 0 }; 13*d83cc019SAndroid Build Coastguard Worker int fd; 14*d83cc019SAndroid Build Coastguard Worker 15*d83cc019SAndroid Build Coastguard Worker signal(SIGALRM, SIG_IGN); 16*d83cc019SAndroid Build Coastguard Worker 17*d83cc019SAndroid Build Coastguard Worker fd = __drm_open_driver(DRIVER_INTEL); 18*d83cc019SAndroid Build Coastguard Worker if (fd < 0) 19*d83cc019SAndroid Build Coastguard Worker return IGT_EXIT_SKIP; 20*d83cc019SAndroid Build Coastguard Worker 21*d83cc019SAndroid Build Coastguard Worker alarm(1); 22*d83cc019SAndroid Build Coastguard Worker if (ioctl(fd, DRM_IOCTL_I915_GEM_SW_FINISH, &arg) == 0) 23*d83cc019SAndroid Build Coastguard Worker return IGT_EXIT_SKIP; 24*d83cc019SAndroid Build Coastguard Worker 25*d83cc019SAndroid Build Coastguard Worker switch (errno) { 26*d83cc019SAndroid Build Coastguard Worker case ENOENT: 27*d83cc019SAndroid Build Coastguard Worker return 0; 28*d83cc019SAndroid Build Coastguard Worker case EIO: 29*d83cc019SAndroid Build Coastguard Worker return 1; 30*d83cc019SAndroid Build Coastguard Worker case EINTR: 31*d83cc019SAndroid Build Coastguard Worker return 2; 32*d83cc019SAndroid Build Coastguard Worker default: 33*d83cc019SAndroid Build Coastguard Worker return 3; 34*d83cc019SAndroid Build Coastguard Worker } 35*d83cc019SAndroid Build Coastguard Worker } 36