1#!/bin/sh
2#
3# Suspend the system using either ACPI or APM.
4# For APM, "apm -z" will be issued.
5# For ACPI, the configured suspend state will be looked up, checked to see
6# if it is supported, and "acpiconf -s <state>" will be issued.
7#
8# Mark Santcroos <marks@ripe.net>
9#
10# $FreeBSD$
11
12PATH=/sbin:/usr/sbin:/usr/bin:/bin
13
14ACPI_SUSPEND_STATE=hw.acpi.suspend_state
15ACPI_SUPPORTED_STATES=hw.acpi.supported_sleep_state
16APM_SUSPEND_DELAY=machdep.apm_suspend_delay
17
18# Check for ACPI support
19if sysctl $ACPI_SUSPEND_STATE >/dev/null 2>&1; then
20	# Get configured suspend state
21	SUSPEND_STATE=`sysctl -n $ACPI_SUSPEND_STATE `
22
23	# Get list of supported suspend states
24	SUPPORTED_STATES=`sysctl -n $ACPI_SUPPORTED_STATES `
25
26	# Check if the configured suspend state is supported by the system
27	if echo $SUPPORTED_STATES | grep $SUSPEND_STATE >/dev/null; then
28		# execute ACPI style suspend command
29		exec acpiconf -s $SUSPEND_STATE
30	else
31		echo -n "Requested suspend state $SUSPEND_STATE "
32		echo -n "is not supported.  "
33		echo    "Supported states: $SUPPORTED_STATES"
34	fi
35# Check for APM support
36elif sysctl $APM_SUSPEND_DELAY >/dev/null 2>&1; then
37	# Execute APM style suspend command
38	exec apm -z
39else
40	echo "Error: no ACPI or APM suspend support found."
41fi
42
43exit 1
44