xref: /freebsd/usr.sbin/zzz/zzz.c (revision aba599a6cc550bf209b42a81a3cdb3f6e94d0613)
1*aba599a6SAymeric Wibo /*
2*aba599a6SAymeric Wibo  * SPDX-License-Identifier: BSD-2-Clause
3*aba599a6SAymeric Wibo  *
4*aba599a6SAymeric Wibo  * Copyright (c) 2026 The FreeBSD Foundation
5*aba599a6SAymeric Wibo  *
6*aba599a6SAymeric Wibo  * This software was developed by Aymeric Wibo <obiwac@freebsd.org>
7*aba599a6SAymeric Wibo  * under sponsorship from the FreeBSD Foundation.
8*aba599a6SAymeric Wibo  */
9*aba599a6SAymeric Wibo 
10*aba599a6SAymeric Wibo #include <sys/power.h>
11*aba599a6SAymeric Wibo 
12*aba599a6SAymeric Wibo #include <err.h>
13*aba599a6SAymeric Wibo #include <errno.h>
14*aba599a6SAymeric Wibo #include <fcntl.h>
15*aba599a6SAymeric Wibo #include <paths.h>
16*aba599a6SAymeric Wibo #include <stdio.h>
17*aba599a6SAymeric Wibo #include <stdlib.h>
18*aba599a6SAymeric Wibo #include <string.h>
19*aba599a6SAymeric Wibo #include <sysexits.h>
20*aba599a6SAymeric Wibo 
21*aba599a6SAymeric Wibo static void
usage(void)22*aba599a6SAymeric Wibo usage(void)
23*aba599a6SAymeric Wibo {
24*aba599a6SAymeric Wibo 	(void)fprintf(stderr, "usage: zzz\n");
25*aba599a6SAymeric Wibo 	exit(1);
26*aba599a6SAymeric Wibo }
27*aba599a6SAymeric Wibo 
28*aba599a6SAymeric Wibo int
main(int argc,char * argv[])29*aba599a6SAymeric Wibo main(int argc, char *argv[])
30*aba599a6SAymeric Wibo {
31*aba599a6SAymeric Wibo 	int powerfd;
32*aba599a6SAymeric Wibo 	enum power_transition trans;
33*aba599a6SAymeric Wibo 
34*aba599a6SAymeric Wibo 	(void)argv;
35*aba599a6SAymeric Wibo 	if (argc > 1)
36*aba599a6SAymeric Wibo 		usage();
37*aba599a6SAymeric Wibo 
38*aba599a6SAymeric Wibo 	powerfd = open(_PATH_DEVPOWER, O_RDWR);
39*aba599a6SAymeric Wibo 	if (powerfd < 0)
40*aba599a6SAymeric Wibo 		err(EX_OSFILE, "could not open power device");
41*aba599a6SAymeric Wibo 
42*aba599a6SAymeric Wibo 	trans = POWER_TRANSITION_SUSPEND;
43*aba599a6SAymeric Wibo 	if (ioctl(powerfd, PIOTRANSITION, &trans) != 0)
44*aba599a6SAymeric Wibo 		err(EX_IOERR, "could not request suspend transition");
45*aba599a6SAymeric Wibo 
46*aba599a6SAymeric Wibo 	return (EXIT_SUCCESS);
47*aba599a6SAymeric Wibo }
48