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 Wibousage(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 Wibomain(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