libubootenv
uboot_private.h
1/*
2 * (C) Copyright 2019
3 * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6 */
7
8#pragma once
9
10#include <stdbool.h>
11#include <stdint.h>
12#include <sys/queue.h>
13#include <mtd/mtd-user.h>
14#include "libuboot.h"
15
16typedef enum {
17 TYPE_ATTR_STRING, /* default */
18 TYPE_ATTR_DECIMAL,
19 TYPE_ATTR_HEX,
20 TYPE_ATTR_BOOL,
21 TYPE_ATTR_IP,
22 TYPE_ATTR_MAC
23} type_attribute;
24
25typedef enum {
26 ACCESS_ATTR_ANY, /* default */
27 ACCESS_ATTR_READ_ONLY,
28 ACCESS_ATTR_WRITE_ONCE,
29 ACCESS_ATTR_CHANGE_DEFAULT,
30} access_attribute;
31
32enum flags_type {
33 FLAGS_NONE,
34 FLAGS_BOOLEAN,
35 FLAGS_INCREMENTAL
36};
37
38enum device_type {
39 DEVICE_NONE,
40 DEVICE_FILE,
41 DEVICE_MTD,
42 DEVICE_UBI,
43};
44
53 uint32_t crc;
55 char data[];
56};
57
60 uint32_t crc;
62 unsigned char flags;
64 char data[];
65};
66
69 char devname[DEVNAME_MAX_LENGTH];
71 long long int offset;
73 size_t envsize;
75 size_t sectorsize;
77 long unsigned int envsectors;
79 struct mtd_info_user mtdinfo;
81 uint32_t crc;
83 int fd;
85 unsigned char flags;
87 enum flags_type flagstype;
89 enum device_type device_type;
90};
91
94struct var_entry {
96 char *name;
98 char *value;
100 type_attribute type;
102 access_attribute access;
105};
106
107LIST_HEAD(vars, var_entry);
108
111struct uboot_ctx {
115 bool valid;
117 size_t size;
123 int lock;
125 struct vars varlist;
126};
Definition: uboot_private.h:111
struct uboot_flash_env envdevs[2]
Definition: uboot_private.h:119
bool redundant
Definition: uboot_private.h:113
bool valid
Definition: uboot_private.h:115
struct vars varlist
Definition: uboot_private.h:125
int current
Definition: uboot_private.h:121
int lock
Definition: uboot_private.h:123
size_t size
Definition: uboot_private.h:117
Definition: uboot_private.h:51
char data[]
Definition: uboot_private.h:55
uint32_t crc
Definition: uboot_private.h:53
Definition: uboot_private.h:58
unsigned char flags
Definition: uboot_private.h:62
uint32_t crc
Definition: uboot_private.h:60
char data[]
Definition: uboot_private.h:64
Definition: uboot_private.h:67
long unsigned int envsectors
Definition: uboot_private.h:77
enum device_type device_type
Definition: uboot_private.h:89
int fd
Definition: uboot_private.h:83
char devname[DEVNAME_MAX_LENGTH]
Definition: uboot_private.h:69
unsigned char flags
Definition: uboot_private.h:85
struct mtd_info_user mtdinfo
Definition: uboot_private.h:79
uint32_t crc
Definition: uboot_private.h:81
size_t envsize
Definition: uboot_private.h:73
long long int offset
Definition: uboot_private.h:71
size_t sectorsize
Definition: uboot_private.h:75
enum flags_type flagstype
Definition: uboot_private.h:87
Definition: uboot_private.h:94
type_attribute type
Definition: uboot_private.h:100
LIST_ENTRY(var_entry) next
access_attribute access
Definition: uboot_private.h:102
char * value
Definition: uboot_private.h:98
char * name
Definition: uboot_private.h:96