efivars.h revision 0974a682d155a5874123ba7de9c1e314c6681e0f
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering
12b42c76672a66c2d4ea7212c14f8f1b5a62b78dTom Gundersen#pragma once
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering/***
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering This file is part of systemd.
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering Copyright 2013 Lennart Poettering
19adb8a3204fefd91411b5f0f350c8bc6bcf75feZbigniew Jędrzejewski-Szmek
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering systemd is free software; you can redistribute it and/or modify it
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering under the terms of the GNU Lesser General Public License as published by
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering (at your option) any later version.
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering systemd is distributed in the hope that it will be useful, but
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering Lesser General Public License for more details.
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering You should have received a copy of the GNU Lesser General Public License
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering***/
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering
e2b696ee9bffad34daaafc99d3a5d8ee13504288Lennart Poettering#include <sys/types.h>
dfdebb1b925332352966804303b2516a6506a429Zbigniew Jędrzejewski-Szmek#include <inttypes.h>
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#include <stdbool.h>
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#include "sd-id128.h"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#include "time-util.h"
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f)
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define EFI_VENDOR_GLOBAL SD_ID128_MAKE(8b,e4,df,61,93,ca,11,d2,aa,0d,00,e0,98,03,2b,8c)
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek#define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekbool is_efi_boot(void);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint is_efi_secure_boot(void);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint is_efi_secure_boot_setup_mode(void);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_set_variable(sd_id128_t vendor, const char *name, const void *value, size_t size);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_get_variable_string(sd_id128_t vendor, const char *name, char **p);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *part_uuid, char **path, bool *active);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_add_boot_option(uint16_t id, const char *title, uint32_t part, uint64_t pstart, uint64_t psize, sd_id128_t part_uuid, const char *path);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_remove_boot_option(uint16_t id);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_get_boot_order(uint16_t **order);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_set_boot_order(uint16_t *order, size_t n);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_get_boot_options(uint16_t **options);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_loader_get_device_part_uuid(sd_id128_t *u);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekint efi_loader_get_boot_usec(usec_t *firmware, usec_t *loader);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmekchar *efi_tilt_backslashes(char *s);
798d3a524ea57aaf40cb53858aaa45ec702f012dZbigniew Jędrzejewski-Szmek