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 
16 typedef 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 
25 typedef 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 
32 enum flags_type {
33  FLAGS_NONE,
34  FLAGS_BOOLEAN,
35  FLAGS_INCREMENTAL
36 };
37 
38 enum 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 
94 struct var_entry {
96  char *name;
98  char *value;
100  type_attribute type;
102  access_attribute access;
105 };
106 
107 LIST_HEAD(vars, var_entry);
108 
111 struct uboot_ctx {
113  bool redundant;
115  bool valid;
117  size_t size;
119  struct uboot_flash_env envdevs[2];
121  int current;
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