本文整理汇总了C++中do_shutdown函数的典型用法代码示例。如果您正苦于以下问题:C++ do_shutdown函数的具体用法?C++ do_shutdown怎么用?C++ do_shutdown使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了do_shutdown函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parse
/* Standard reboot/shutdown utilities talk to init using /dev/initctl.
* We should check if the fifo was recreated and reopen it.
*/
static void parse(void *UNUSED(arg), int fd, int UNUSED(events))
{
struct init_request rq;
_d("Receiving request on %s...", FINIT_FIFO);
while (1) {
ssize_t len = read(fd, &rq, sizeof(rq));
if (len <= 0) {
if (-1 == len) {
if (EINTR == errno)
continue;
if (EAGAIN == errno)
break;
_e("Failed reading initctl request, error %d: %s", errno, strerror(errno));
}
break;
}
if (rq.magic != INIT_MAGIC || len != sizeof(rq)) {
_e("Invalid initctl request.");
break;
}
_d("Magic OK...");
if (rq.cmd == INIT_CMD_RUNLVL) {
switch (rq.runlevel) {
case '0':
_d("Halting system (SIGUSR2)");
do_shutdown(SIGUSR2);
break;
case 's':
case 'S':
rq.runlevel = '1';
/* Fall through to regular processing */
case '1'...'5':
_d("Setting new runlevel %c ...", rq.runlevel);
svc_runlevel(rq.runlevel - '0');
break;
case '6':
_d("Rebooting system (SIGUSR1)");
do_shutdown(SIGUSR1);
break;
default:
_d("Unsupported runlevel: %d", rq.runlevel);
break;
}
} else if (rq.cmd == INIT_CMD_DEBUG) {
debug = !debug;
} else {
_d("Unsupported cmd: %d", rq.cmd);
}
}
示例2: board_status_probe
/*
************************************************************************************************************
*
* function
*
* name :
*
* parmeters : standby_mode: 0, 普通模式,需要检测电源状态
*
* 1, 测试模式,强制进入standby模式,不论电源状态
*
* return :
*
* note : probe power and other condition
*
*
*
************************************************************************************************************
*/
void board_status_probe(int standby_mode)
{
int ret;
//清除power按键
axp_probe_key();
//启动条件判断,第一阶段,检测电源电压状态
if(!standby_mode)
{
ret = board_probe_power_level(); //负数:关机;0:进入系统;正数:待机
debug("stage1 resule %d\n", ret);
if(ret < 0)
{
do_shutdown(NULL, 0, 1, NULL);
}
else if(!ret)
{
return ;
}
//启动条件判断,第二阶段,检测开机原因
ret = board_probe_poweron_cause(); //负数,0:进入系统;正数:待机或者直接关机
debug("stage2 resule %d\n", ret);
if(ret <= 0)
{
return ;
}
else if(ret == AXP_VBUS_DCIN_NOT_EXIST) //当前一次为boot standby状态,但是启动时检查无外部电源,直接关机
{
do_shutdown(NULL, 0, 1, NULL);
}
}
//启动条件判断,第三阶段,检测电池存在
//负数:关机;0:进入系统;正数:待机
ret = board_probe_bat_status(standby_mode);
debug("stage3 resule %d\n", ret);
if(ret < 0)
{
do_shutdown(NULL, 0, 1, NULL);
}
else if(!ret)
{
return ;
}
//启动条件判断,第四阶段,进入boot待机
//负数:关机,其它:进入系统
ret = board_standby_status(ret);
debug("stage4 resule %d\n", ret);
if(ret < 0)
{
do_shutdown(NULL, 0, 1, NULL);
}
return ;
}
示例3: do_abort
/**
* abort task to run on test timed out
*
* @param cls NULL
* @param tc the task context
*/
static void
do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
LOG (GNUNET_ERROR_TYPE_WARNING, "Aborting\n");
abort_task = NULL;
do_shutdown (cls, tc);
}
示例4: ds1287_issue_shutdown
static uint_t
ds1287_issue_shutdown(caddr_t arg)
{
struct ds1287 *softsp = (struct ds1287 *)arg;
DPRINTF("ds1287_issue_shutdown\n");
mutex_enter(&softsp->ds1287_mutex);
softsp->events |= PB_BUTTON_PRESS;
if (softsp->monitor_on != 0) {
mutex_exit(&softsp->ds1287_mutex);
pollwakeup(&softsp->pollhd, POLLRDNORM);
pollwakeup(&softsp->pollhd, POLLIN);
return (DDI_INTR_CLAIMED);
}
if (!softsp->shutdown_pending) {
cmn_err(CE_WARN, "Power button is pressed, powering down "
"the system!");
softsp->shutdown_pending = 1;
do_shutdown();
/*
* Wait a while for "do_shutdown()" to shut down the system
* before logging an error message.
*/
(void) timeout((void(*)(void *))ds1287_log_message, NULL,
100 * hz);
}
mutex_exit(&softsp->ds1287_mutex);
return (DDI_INTR_CLAIMED);
}
示例5: do_switches
// this just wraps ALL the code in total catch block
int Kernel::run(int argc, const char* argv[], const std::string& appName)
{
m_argc = argc;
m_argv = argv;
m_appName = appName;
int switches_status = do_switches();
if (switches_status)
return switches_status;
int startup_status = do_startup();
if (startup_status)
return startup_status;
int execution_status = do_execution();
// note we will try to shutdown cleanly even if we got an error condition
// in the execution phase
int shutdown_status = do_shutdown();
if (execution_status)
return execution_status;
return shutdown_status;
}
示例6: shutdown_handler
/*
* Shut down on INT USR1 USR2
*/
static void shutdown_handler(int sig, siginfo_t *info, void *UNUSED(ctx))
{
_d("Rebooting on signal %d from %s (PID %d)",
sig, pid_get_name(info->si_pid, NULL, 0), info->si_pid);
do_shutdown(sig);
}
示例7: do_abort
/**
* abort task to run on test timed out
*
* @param cls NULL
* @param tc the task context
*/
static void
do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
LOG (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n");
abort_task = GNUNET_SCHEDULER_NO_TASK;
do_shutdown (cls, tc);
}
示例8: do_abort
/**
* abort task to run on test timed out
*
* @param cls NULL
* @param tc the task context
*/
static void
do_abort (void *cls)
{
LOG (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n");
abort_task = NULL;
do_shutdown (cls);
}
示例9: ctrl_c_shutdown
static void
ctrl_c_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
ctrl_c_task_id = NULL;
do_shutdown ();
GNUNET_break (0);
global_ret = 1;
}
示例10: do_deferred_shutdown
static void
do_deferred_shutdown (DskWebsocket *websocket)
{
if (websocket->outgoing.size == 0)
do_shutdown (websocket);
else
websocket->is_deferred_shutdown = DSK_TRUE;
}
示例11: do_abort
/**
* Shutdown nicely
*
* @param cls
* @param tc the task context
*/
static void
do_abort (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc)
{
LOG (GNUNET_ERROR_TYPE_DEBUG, "Aborting test...\n");
abort_task_id = GNUNET_SCHEDULER_NO_TASK;
result = TEST_FAIL;
do_shutdown (cls, tc);
}
示例12: main
/*
* Main program.
* Write a wtmp entry and reboot cq. halt.
*/
int main(int argc, char **argv)
{
int do_sync = 1;
int do_hard = 0;
int do_ifdown = 0;
int c;
/*
* Get flags
*/
while((c = getopt(argc, argv, ":ifn:")) != EOF) {
switch(c) {
case 'n':
do_sync = 0;
break;
case 'f':
do_hard = 1;
break;
case 'i':
do_ifdown = 1;
break;
default:
usage();
}
}
if (argc == optind) usage();
if (geteuid() != 0) {
fprintf(stderr, "%s: must be superuser.\n", progname);
exit(1);
}
(void)chdir("/");
if (!do_hard ) {
/*
* See if we are in runlevel 0 or 6.
*/
c = get_runlevel();
if (c != '0' && c != '6')
do_shutdown(argv[optind]);
}
if (do_sync) {
sync();
sleep(2);
}
if (do_ifdown)
(void)ifdown();
(void)hdflush();
syscall(SYS_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,
LINUX_REBOOT_CMD_RESTART2, argv[optind]);
return 0;
}
示例13: dialog_ok
void dialog_ok(GtkWidget *widget, gpointer data)
{
const gchar *title = (const gchar *)data;
if(!g_strcasecmp(title, item_labels[2]))
do_reboot();
else if(!g_strcasecmp(title, item_labels[3]))
do_shutdown();
}
示例14: main
int
main (int argc, char *argv[])
{
if (0 != GNUNET_TESTING_peer_run ("test-fs-namespace-list-updateable",
"test_fs_namespace_data.conf",
&run, NULL))
return 1;
do_shutdown ();
return err;
}
示例15: do_stop
static void do_stop(struct cardstate *cs)
{
unsigned long flags;
spin_lock_irqsave(&cs->lock, flags);
cs->connected = 0;
spin_unlock_irqrestore(&cs->lock, flags);
do_shutdown(cs);
}