haiku/src/system/kernel/shutdown.c

46 lines
821 B
C
Raw Normal View History

/*
* Copyright 2009, Olivier Coursière. All rights reserved.
* Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#include <kernel.h>
#include <syscalls.h>
status_t
system_shutdown(bool reboot)
{
int32 cookie = 0;
team_info info;
// Now shutdown all system services!
// TODO: Once we are sure we can shutdown the system on all hardware
// checking reboot may not be necessary anymore.
if (reboot) {
while (get_next_team_info(&cookie, &info) == B_OK) {
if (info.team == B_SYSTEM_TEAM)
continue;
kill_team(info.team);
}
}
sync();
return arch_cpu_shutdown(reboot);
}
// #pragma mark -
status_t
_user_shutdown(bool reboot)
{
if (geteuid() != 0)
return B_NOT_ALLOWED;
return system_shutdown(reboot);
}