]>
git.ipfire.org Git - thirdparty/systemd.git/blob - src/hibernate-resume/hibernate-resume.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
3 This file is part of systemd.
5 Copyright 2014 Ivan Shapovalov
12 #include "alloc-util.h"
17 int main(int argc
, char *argv
[]) {
20 _cleanup_free_
char *major_minor
= NULL
;
24 log_error("This program expects one argument.");
28 log_set_target(LOG_TARGET_AUTO
);
29 log_parse_environment();
34 /* Refuse to run unless we are in an initrd() */
40 if (stat(device
, &st
) < 0) {
41 log_error_errno(errno
, "Failed to stat '%s': %m", device
);
45 if (!S_ISBLK(st
.st_mode
)) {
46 log_error("Resume device '%s' is not a block device.", device
);
50 if (asprintf(&major_minor
, "%d:%d", major(st
.st_rdev
), minor(st
.st_rdev
)) < 0) {
55 r
= write_string_file("/sys/power/resume", major_minor
, WRITE_STRING_FILE_CREATE
);
57 log_error_errno(r
, "Failed to write '%s' to /sys/power/resume: %m", major_minor
);
62 * The write above shall not return.
64 * However, failed resume is a normal condition (may mean that there is
65 * no hibernation image).
68 log_info("Could not resume from '%s' (%s).", device
, major_minor
);