1
0
mirror of https://github.com/deadw00d/AROS.git synced 2025-10-26 21:18:42 +00:00
Files
AROS-v0/arch/all-unix/exec/shutdowna.c
deadwood 1ebb5df920 Introduce EMERGENCY flag for ShutdownA
This flag indicates that something has already gone wrong and least
amount of code should be used to do reboot or shutdown. This means
not running non-critical reset handlers. Note that the handler itself
needs to decide whethere it is critical or not.
2022-01-16 10:28:06 +01:00

50 lines
1014 B
C

/*
Copyright (C) 1995-2013, The AROS Development Team. All rights reserved.
Desc: ShutdownA() - Shut down the operating system.
*/
/* Prevent 'timeval redefinition' error */
#define timeval timeval_AROS
#include <aros/debug.h>
#include <proto/exec.h>
#include "exec_intern.h"
#include "exec_util.h"
/* See rom/exec/shutdowna.c for documentation */
AROS_LH1(ULONG, ShutdownA,
AROS_LHA(ULONG, action, D0),
struct ExecBase *, SysBase, 173, Exec)
{
AROS_LIBFUNC_INIT
int exitcode;
switch(action & SD_ACTION_MASK)
{
case SD_ACTION_POWEROFF:
exitcode = 0;
break;
case SD_ACTION_COLDREBOOT:
exitcode = 0x81; /* Magic value for our bootstrap */
break;
default:
return 0; /* Unknown action code */
}
Exec_DoResetCallbacks((struct IntExecBase *)SysBase, action);
PD(SysBase).SysIFace->exit(exitcode);
AROS_HOST_BARRIER
/* Just shut up the compiler, we won't return */
return 0;
AROS_LIBFUNC_EXIT
}