1
0
mirror of https://github.com/deadw00d/AROS.git synced 2025-10-26 21:18:42 +00:00
Files
AROS-v0/arch/ppc-chrp/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

47 lines
1.1 KiB
C

/*
Copyright (C) 1995-2013, The AROS Development Team. All rights reserved.
Desc: ShutdownA() - Shut down the operating system.
*/
#include <aros/debug.h>
#include <proto/exec.h>
#include <proto/rtas.h>
/* See rom/kernel/issuper.c for documentation */
static int rtas_call(struct ExecBase *SysBase, const char *method, int nargs, int nret, void *output, ...)
{
va_list args;
void *RTASBase = OpenResource("rtas.resource");
int retval;
va_start(args, output);
retval = RTASCall(method, nargs, nret, output, args);
va_end(args);
return retval;
}
AROS_LH1(ULONG, ShutdownA,
AROS_LHA(ULONG, action, D0),
struct ExecBase *, SysBase, 173, Exec)
{
AROS_LIBFUNC_INIT
void *RTASBase = OpenResource("rtas.resource");
if (RTASBase)
{
if ((action & SD_ACTION_MASK) == SD_ACTION_COLDREBOOT)
rtas_call(SysBase, "system-reboot", 0, 1, NULL);
else if ((action & SD_ACTION_MASK) ==SD_ACTION_POWEROFF)
rtas_call(SysBase, "power-off", 2, 1, NULL, -1, -1);
}
return 0;
AROS_LIBFUNC_EXIT
}