1*d83cc019SAndroid Build Coastguard Worker #include <unistd.h> 2*d83cc019SAndroid Build Coastguard Worker #include <fcntl.h> 3*d83cc019SAndroid Build Coastguard Worker #include <stdlib.h> 4*d83cc019SAndroid Build Coastguard Worker #include <sys/reboot.h> 5*d83cc019SAndroid Build Coastguard Worker 6*d83cc019SAndroid Build Coastguard Worker #include "igt_core.h" 7*d83cc019SAndroid Build Coastguard Worker 8*d83cc019SAndroid Build Coastguard Worker #include "igt_sysrq.h" 9*d83cc019SAndroid Build Coastguard Worker 10*d83cc019SAndroid Build Coastguard Worker /** 11*d83cc019SAndroid Build Coastguard Worker * igt_sysrq_reboot: Reboots the machine 12*d83cc019SAndroid Build Coastguard Worker * 13*d83cc019SAndroid Build Coastguard Worker * Syncs filesystems and immediately reboots the machine. 14*d83cc019SAndroid Build Coastguard Worker */ igt_sysrq_reboot(void)15*d83cc019SAndroid Build Coastguard Workervoid igt_sysrq_reboot(void) 16*d83cc019SAndroid Build Coastguard Worker { 17*d83cc019SAndroid Build Coastguard Worker sync(); 18*d83cc019SAndroid Build Coastguard Worker 19*d83cc019SAndroid Build Coastguard Worker /* Try to be nice at first, and if that fails pull the trigger */ 20*d83cc019SAndroid Build Coastguard Worker if (reboot(RB_AUTOBOOT)) { 21*d83cc019SAndroid Build Coastguard Worker int fd = open("/proc/sysrq-trigger", O_WRONLY); 22*d83cc019SAndroid Build Coastguard Worker igt_ignore_warn(write(fd, "b", 2)); 23*d83cc019SAndroid Build Coastguard Worker close(fd); 24*d83cc019SAndroid Build Coastguard Worker } 25*d83cc019SAndroid Build Coastguard Worker 26*d83cc019SAndroid Build Coastguard Worker abort(); 27*d83cc019SAndroid Build Coastguard Worker } 28