1 /* $NetBSD: bootvar.h,v 1.1 2025/02/24 13:47:55 christos Exp $ */ 2 3 /* 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 14 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 */ 25 26 #ifndef _BOOTVAR_H_ 27 #define _BOOTVAR_H_ 28 29 #ifndef lint 30 __RCSID("$NetBSD: bootvar.h,v 1.1 2025/02/24 13:47:55 christos Exp $"); 31 #endif /* not lint */ 32 33 /* 34 * Structure of Boot####, Device####, SysPrep#### variables. 35 */ 36 typedef struct boot_var { 37 uint32_t Attributes; 38 #define LOAD_OPTION_ACTIVE __BIT(0) 39 #define IS_ACTIVE(attr) ((attr) & LOAD_OPTION_ACTIVE) 40 #define LOAD_OPTION_FORCE_RECONNECT __BIT(1) 41 #define LOAD_OPTION_HIDDEN __BIT(3) 42 #define LOAD_OPTION_CATEGORY __BITS(12,8) 43 #define LOAD_OPTION_CATEGORY_BOOT 0 44 #define LOAD_OPTION_CATEGORY_APP __BIT(8) 45 #define LOAD_OPTION_BITS \ 46 "\177\020" \ 47 "b\x00""Active\0" \ 48 "b\x01""Reconnect\0" \ 49 "b\x03""Hidden\0" \ 50 "b\x08""CatApp\0" 51 52 uint16_t FilePathListLength; 53 uint16_t Description[]; /* XXX: gcc warns about alignment when packed */ 54 // devpath_t FilePathList[]; 55 // uint8_t OptionalData[]; 56 } __packed boot_var_t; 57 58 int find_new_bootvar(efi_var_t **, size_t, const char *); 59 void *make_bootvar_data(const char *, uint, uint32_t, const char *, 60 const char *, const char *, size_t *); 61 62 #endif /* _BOOTVAR_H_ */ 63