Blame view

tools/env/fw_env.h 4.21 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
6aff3115b   wdenk   * Use 1-byte-read...
2
  /*
bc11756da   Grant Erickson   Propagate Error S...
3
   * (C) Copyright 2002-2008
6aff3115b   wdenk   * Use 1-byte-read...
4
   * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
6aff3115b   wdenk   * Use 1-byte-read...
5
   */
371ee1376   Andreas Fenkart   tools: env: parse...
6
  #include <stdint.h>
e3c52f2b8   Tom Rini   Revert "fw_env: f...
7

00c234f38   Stefano Babic   env: add a versio...
8
9
10
11
12
13
  /*
   * Programs using the library must check which API is available,
   * that varies depending on the U-Boot version.
   * This can be changed in future
   */
  #define FW_ENV_API_VERSION	1
81974f447   Andreas Fenkart   tools/env: no glo...
14
  struct env_opts {
371ee1376   Andreas Fenkart   tools: env: parse...
15
16
17
  #ifdef CONFIG_FILE
  	char *config_file;
  #endif
d40dbfb74   B, Ravi   env: tool: add co...
18
  	char *lockname;
371ee1376   Andreas Fenkart   tools: env: parse...
19
  };
07ce94402   Andreas Fenkart   tools: env: intro...
20

fd4e3280e   Andreas Fenkart   tools/env: kernel...
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  /**
   * fw_printenv() - print one or several environment variables
   *
   * @argc: number of variables names to be printed, prints all if 0
   * @argv: array of variable names to be printed, if argc != 0
   * @value_only: do not repeat the variable name, print the bare value,
   *          only one variable allowed with this option, argc must be 1
   * @opts: encryption key, configuration file, defaults are used if NULL
   *
   * Description:
   *  Uses fw_env_open, fw_getenv
   *
   * Return:
   *  0 on success, -1 on failure (modifies errno)
   */
81974f447   Andreas Fenkart   tools/env: no glo...
36
  int fw_printenv(int argc, char *argv[], int value_only, struct env_opts *opts);
fd4e3280e   Andreas Fenkart   tools/env: kernel...
37
38
  
  /**
382bee57f   Simon Glass   env: Rename seten...
39
   * fw_env_set() - adds or removes one variable to the environment
fd4e3280e   Andreas Fenkart   tools/env: kernel...
40
41
42
43
44
45
46
47
   *
   * @argc: number of strings in argv, argv[0] is variable name,
   *          argc==1 means erase variable, argc > 1 means add a variable
   * @argv: argv[0] is variable name, argv[1..argc-1] are concatenated separated
   *           by single blank and set as the new value of the variable
   * @opts: how to retrieve environment from flash, defaults are used if NULL
   *
   * Description:
33f0086cb   Stefano Babic   env: fix memory l...
48
   *  Uses fw_env_open, fw_env_write, fw_env_flush
fd4e3280e   Andreas Fenkart   tools/env: kernel...
49
50
51
52
53
54
55
   *
   * Return:
   *  0 on success, -1 on failure (modifies errno)
   *
   * ERRORS:
   *  EROFS - some variables ("ethaddr", "serial#") cannot be modified
   */
382bee57f   Simon Glass   env: Rename seten...
56
  int fw_env_set(int argc, char *argv[], struct env_opts *opts);
fd4e3280e   Andreas Fenkart   tools/env: kernel...
57
58
59
60
61
62
63
64
  
  /**
   * fw_parse_script() - adds or removes multiple variables with a batch script
   *
   * @fname: batch script file name
   * @opts: encryption key, configuration file, defaults are used if NULL
   *
   * Description:
33f0086cb   Stefano Babic   env: fix memory l...
65
   *  Uses fw_env_open, fw_env_write, fw_env_flush
fd4e3280e   Andreas Fenkart   tools/env: kernel...
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
   *
   * Return:
   *  0 success, -1 on failure (modifies errno)
   *
   * Script Syntax:
   *
   *  key [ [space]+ value]
   *
   *  lines starting with '#' treated as comment
   *
   *  A variable without value will be deleted. Any number of spaces are allowed
   *  between key and value. The value starts with the first non-space character
   *  and ends with newline. No comments allowed on these lines.  Spaces inside
   *  the value are preserved verbatim.
   *
   * Script Example:
   *
   *  netdev         eth0
   *
   *  kernel_addr    400000
   *
   *  foo            spaces           are copied verbatim
   *
   *  # delete variable bar
   *
   *  bar
   */
81974f447   Andreas Fenkart   tools/env: no glo...
93
  int fw_parse_script(char *fname, struct env_opts *opts);
fd4e3280e   Andreas Fenkart   tools/env: kernel...
94
95
96
97
98
99
100
101
102
103
  
  
  /**
   * fw_env_open() - read enviroment from flash into RAM cache
   *
   * @opts: encryption key, configuration file, defaults are used if NULL
   *
   * Return:
   *  0 on success, -1 on failure (modifies errno)
   */
81974f447   Andreas Fenkart   tools/env: no glo...
104
  int fw_env_open(struct env_opts *opts);
fd4e3280e   Andreas Fenkart   tools/env: kernel...
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
  
  /**
   * fw_getenv() - lookup variable in the RAM cache
   *
   * @name: variable to be searched
   * Return:
   *  pointer to start of value, NULL if not found
   */
  char *fw_getenv(char *name);
  
  /**
   * fw_env_write() - modify a variable held in the RAM cache
   *
   * @name: variable
   * @value: delete variable if NULL, otherwise create or overwrite the variable
   *
   * This is called in sequence to update the environment in RAM without updating
   * the copy in flash after each set
   *
   * Return:
   *  0 on success, -1 on failure (modifies errno)
   *
   * ERRORS:
   *  EROFS - some variables ("ethaddr", "serial#") cannot be modified
   */
c3a23e8b5   Andreas Fenkart   tools/env: remove...
130
  int fw_env_write(char *name, char *value);
fd4e3280e   Andreas Fenkart   tools/env: kernel...
131
132
  
  /**
33f0086cb   Stefano Babic   env: fix memory l...
133
134
135
136
137
138
139
140
141
142
143
   * fw_env_flush - write the environment from RAM cache back to flash
   *
   * @opts: encryption key, configuration file, defaults are used if NULL
   *
   * Return:
   *  0 on success, -1 on failure (modifies errno)
   */
  int fw_env_flush(struct env_opts *opts);
  
  /**
   * fw_env_close - free allocated structure and close env
fd4e3280e   Andreas Fenkart   tools/env: kernel...
144
145
146
147
148
149
   *
   * @opts: encryption key, configuration file, defaults are used if NULL
   *
   * Return:
   *  0 on success, -1 on failure (modifies errno)
   */
81974f447   Andreas Fenkart   tools/env: no glo...
150
  int fw_env_close(struct env_opts *opts);
6aff3115b   wdenk   * Use 1-byte-read...
151

33f0086cb   Stefano Babic   env: fix memory l...
152

00c234f38   Stefano Babic   env: add a versio...
153
154
155
156
157
158
159
  /**
   * fw_env_version - return the current version of the library
   *
   * Return:
   *  version string of the library
   */
  char *fw_env_version(void);
c3a23e8b5   Andreas Fenkart   tools/env: remove...
160
  unsigned long crc32(unsigned long, const unsigned char *, unsigned);