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 <sys/queue.h>
12 #include "libuboot.h"
13 
14 typedef enum {
15  TYPE_ATTR_STRING, /* default */
16  TYPE_ATTR_DECIMAL,
17  TYPE_ATTR_HEX,
18  TYPE_ATTR_BOOL,
19  TYPE_ATTR_IP,
20  TYPE_ATTR_MAC
21 } type_attribute;
22 
23 typedef enum {
24  ACCESS_ATTR_ANY, /* default */
25  ACCESS_ATTR_READ_ONLY,
26  ACCESS_ATTR_WRITE_ONCE,
27  ACCESS_ATTR_CHANGE_DEFAULT,
28 } access_attribute;
29 
30 enum flags_type {
31  FLAGS_NONE,
32  FLAGS_BOOLEAN,
33  FLAGS_INCREMENTAL
34 };
35 
44  uint32_t crc;
46  char data[];
47 };
48 
51  uint32_t crc;
53  unsigned char flags;
55  char data[];
56 };
57 
60  char devname[DEVNAME_MAX_LENGTH];
62  long long int offset;
64  size_t envsize;
66  size_t sectorsize;
68  long unsigned int envsectors;
70  struct mtd_info_user mtdinfo;
72  uint32_t crc;
74  int fd;
76  unsigned char flags;
78  enum flags_type flagstype;
79 };
80 
83 struct var_entry {
85  char *name;
87  char *value;
89  type_attribute type;
91  access_attribute access;
93  LIST_ENTRY(var_entry) next;
94 };
95 
96 LIST_HEAD(vars, var_entry);
97 
100 struct uboot_ctx {
102  bool redundant;
104  bool valid;
106  size_t size;
108  struct uboot_flash_env envdevs[2];
110  int current;
112  int lock;
114  struct vars varlist;
115 };
unsigned char flags
Definition: uboot_private.h:53
uint32_t crc
Definition: uboot_private.h:51
unsigned char flags
Definition: uboot_private.h:76
size_t size
Definition: uboot_private.h:106
Definition: uboot_private.h:83
uint32_t crc
Definition: uboot_private.h:72
access_attribute access
Definition: uboot_private.h:91
Definition: uboot_private.h:58
int lock
Definition: uboot_private.h:112
char * value
Definition: uboot_private.h:87
int current
Definition: uboot_private.h:110
Definition: uboot_private.h:100
Definition: uboot_private.h:49
char data[]
Definition: uboot_private.h:46
size_t sectorsize
Definition: uboot_private.h:66
char * name
Definition: uboot_private.h:85
uint32_t crc
Definition: uboot_private.h:44
bool redundant
Definition: uboot_private.h:102
bool valid
Definition: uboot_private.h:104
long unsigned int envsectors
Definition: uboot_private.h:68
Definition: uboot_private.h:42
int fd
Definition: uboot_private.h:74
long long int offset
Definition: uboot_private.h:62
type_attribute type
Definition: uboot_private.h:89
size_t envsize
Definition: uboot_private.h:64