extern int poweroff_main(int argc, char **argv) { char *delay; /* delay in seconds before rebooting */ if(bb_getopt_ulflags(argc, argv, "d:", &delay)) { sleep(atoi(delay)); } #ifndef CONFIG_INIT #ifndef RB_POWER_OFF #define RB_POWER_OFF 0x4321fedc #endif return(bb_shutdown_system(RB_POWER_OFF)); #else return kill_init(SIGUSR2); #endif }
extern int halt_main(int argc, char **argv) { char *delay; /* delay in seconds before rebooting */ if(bb_getopt_ulflags(argc, argv, "d:", &delay)) { sleep(atoi(delay)); } #ifndef CONFIG_INIT #ifndef RB_HALT_SYSTEM #define RB_HALT_SYSTEM 0xcdef0123 #endif return(bb_shutdown_system(RB_HALT_SYSTEM)); #else return kill_init(SIGUSR1); #endif }
extern int reboot_main(int argc, char **argv) { char *delay; /* delay in seconds before rebooting */ unsigned long opt; int fw_upgrade = 0; #if defined(TCSUPPORT_START_TRAP) || defined(TCSUPPORT_SYSLOG_ENHANCE) int count = 0; #endif if((opt = bb_getopt_ulflags(argc, argv, "d:u", &delay)) > 0) { if (opt & 0x1) sleep(atoi(delay)); if (opt & 0x2) fw_upgrade = 1; } system("killall -9 monitorcfgmgr"); //Andy Chiu, 2015/03/18. stop monitorcfgmgr before stop cfg_manager if (fw_upgrade) { system("killall -9 cfg_manager"); } else { system("killall -SIGTERM cfg_manager"); //Andy Chiu, 2015/05/12. send SIGTERM to cfg_manager first and make sure it /* wait cfg_manager done */ while (!quit_signal() && count++ < 10) sleep(1); } #ifdef TCSUPPORT_SYSLOG_ENHANCE count = 0; system("killall syslogd"); /* wait syslogd storing system log */ while (!syslogd_quit_signal() && count++ < 10) sleep(1); #endif #if defined(TCSUPPORT_CPU_MT7510) || defined(TCSUPPORT_CPU_MT7520) #if defined(MT7592) if_down("wds0"); if_down("wds1"); if_down("wds2"); if_down("wds3"); if_down("ra0"); if_down("ra1"); if_down("ra2"); if_down("ra3"); syscall(__NR_delete_module, "mt7603eap", O_NONBLOCK|O_EXCL); #endif #if defined(MT7612E) if_down("wdsi0"); if_down("wdsi1"); if_down("wdsi2"); if_down("wdsi3"); if_down("rai0"); if_down("rai1"); if_down("rai2"); if_down("rai3"); syscall(__NR_delete_module, "mt7662e_ap", O_NONBLOCK|O_EXCL); #endif #if defined(MT7610E) if_down("wdsi0"); if_down("wdsi1"); if_down("wdsi2"); if_down("wdsi3"); if_down("rai0"); if_down("rai1"); if_down("rai2"); if_down("rai3"); syscall(__NR_delete_module, "mt7610e_ap", O_NONBLOCK|O_EXCL); #endif #endif #ifndef CONFIG_INIT #ifndef RB_AUTOBOOT #define RB_AUTOBOOT 0x01234567 #endif return(bb_shutdown_system(RB_AUTOBOOT)); #else return kill_init(SIGTERM); #endif }