Blame view

include/fs.h 7.69 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0 */
045fa1e11   Stephen Warren   fs: add filesyste...
2
3
  /*
   * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
045fa1e11   Stephen Warren   fs: add filesyste...
4
5
6
7
8
9
10
11
12
   */
  #ifndef _FS_H
  #define _FS_H
  
  #include <common.h>
  
  #define FS_TYPE_ANY	0
  #define FS_TYPE_FAT	1
  #define FS_TYPE_EXT	2
92ccc96bf   Simon Glass   sandbox: Add host...
13
  #define FS_TYPE_SANDBOX	3
251cee0db   Hans de Goede   ubifs: Add generi...
14
  #define FS_TYPE_UBIFS	4
0c936ee31   Marek BehĂșn   fs: btrfs: Add U-...
15
  #define FS_TYPE_BTRFS	5
045fa1e11   Stephen Warren   fs: add filesyste...
16

0bd36ee73   Peng Fan   MLK-12425-2 video...
17
  int do_fat_size(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]);
144499823   Simon Glass   common: Move func...
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  /**
   * do_fat_fsload - Run the fatload command
   *
   * @cmdtp: Command information for fatload
   * @flag: Command flags (CMD_FLAG_...)
   * @argc: Number of arguments
   * @argv: List of arguments
   * @return result (see enum command_ret_t)
   */
  int do_fat_fsload(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]);
  
  /**
   * do_ext2load - Run the ext2load command
   *
   * @cmdtp: Command information for ext2load
   * @flag: Command flags (CMD_FLAG_...)
   * @argc: Number of arguments
   * @argv: List of arguments
   * @return result (see enum command_ret_t)
   */
  int do_ext2load(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]);
045fa1e11   Stephen Warren   fs: add filesyste...
39
40
41
42
43
44
45
46
47
48
49
50
51
  /*
   * Tell the fs layer which block device an partition to use for future
   * commands. This also internally identifies the filesystem that is present
   * within the partition. The identification process may be limited to a
   * specific filesystem type by passing FS_* in the fstype parameter.
   *
   * Returns 0 on success.
   * Returns non-zero if there is an error accessing the disk or partition, or
   * no known filesystem type could be recognized on it.
   */
  int fs_set_blk_dev(const char *ifname, const char *dev_part_str, int fstype);
  
  /*
4bbcc965f   Rob Clark   fs: add fs_readdir()
52
53
54
55
56
57
58
59
60
   * fs_set_blk_dev_with_part - Set current block device + partition
   *
   * Similar to fs_set_blk_dev(), but useful for cases where you already
   * know the blk_desc and part number.
   *
   * Returns 0 on success.
   * Returns non-zero if invalid partition or error accessing the disk.
   */
  int fs_set_blk_dev_with_part(struct blk_desc *desc, int part);
0d488e8f5   Alex Kiernan   fs: Add fs_get_ty...
61
  /**
64f49eb7d   AKASHI Takahiro   fs: export fs_clo...
62
63
   * fs_close() - Unset current block device and partition
   *
e4bad9f9f   Heinrich Schuchardt   fs: update fs_clo...
64
65
66
67
68
69
   * fs_close() closes the connection to a file system opened with either
   * fs_set_blk_dev() or fs_set_dev_with_part().
   *
   * Many file functions implicitly call fs_close(), e.g. fs_closedir(),
   * fs_exist(), fs_ln(), fs_ls(), fs_mkdir(), fs_read(), fs_size(), fs_write(),
   * fs_unlink().
64f49eb7d   AKASHI Takahiro   fs: export fs_clo...
70
71
72
73
   */
  void fs_close(void);
  
  /**
b7cd95627   AKASHI Takahiro   fs: add fs_get_ty...
74
75
76
77
78
79
80
81
82
83
   * fs_get_type() - Get type of current filesystem
   *
   * Return: filesystem type
   *
   * Returns filesystem type representing the current filesystem, or
   * FS_TYPE_ANY for any unrecognised filesystem.
   */
  int fs_get_type(void);
  
  /**
0d488e8f5   Alex Kiernan   fs: Add fs_get_ty...
84
85
86
87
88
89
90
91
   * fs_get_type_name() - Get type of current filesystem
   *
   * Return: Pointer to filesystem name
   *
   * Returns a string describing the current filesystem, or the sentinel
   * "unsupported" for any unrecognised filesystem.
   */
  const char *fs_get_type_name(void);
4bbcc965f   Rob Clark   fs: add fs_readdir()
92
  /*
045fa1e11   Stephen Warren   fs: add filesyste...
93
94
95
96
97
98
99
100
   * Print the list of files on the partition previously set by fs_set_blk_dev(),
   * in directory "dirname".
   *
   * Returns 0 on success. Returns non-zero on error.
   */
  int fs_ls(const char *dirname);
  
  /*
6152916a9   Stephen Warren   fs: implement inf...
101
102
103
104
105
106
107
   * Determine whether a file exists
   *
   * Returns 1 if the file exists, 0 if it doesn't exist.
   */
  int fs_exists(const char *filename);
  
  /*
d455d8789   Suriyan Ramasami   fs: API changes e...
108
   * fs_size - Determine a file's size
cf6598193   Stephen Warren   fs: implement siz...
109
   *
d455d8789   Suriyan Ramasami   fs: API changes e...
110
111
112
   * @filename: Name of the file
   * @size: Size of file
   * @return 0 if ok with valid *size, negative on error
cf6598193   Stephen Warren   fs: implement siz...
113
   */
d455d8789   Suriyan Ramasami   fs: API changes e...
114
  int fs_size(const char *filename, loff_t *size);
cf6598193   Stephen Warren   fs: implement siz...
115

a0e92cde2   Heinrich Schuchardt   fs: correct comme...
116
117
118
119
120
  /**
   * fs_read() - read file from the partition previously set by fs_set_blk_dev()
   *
   * Note that not all filesystem drivers support either or both of offset != 0
   * and len != 0.
045fa1e11   Stephen Warren   fs: add filesyste...
121
   *
a0e92cde2   Heinrich Schuchardt   fs: correct comme...
122
123
124
125
126
127
   * @filename:	full path of the file to read from
   * @addr:	address of the buffer to write to
   * @offset:	offset in the file from where to start reading
   * @len:	the number of bytes to read. Use 0 to read entire file.
   * @actread:	returns the actual number of bytes read
   * Return:	0 if OK with valid *actread, -1 on error conditions
045fa1e11   Stephen Warren   fs: add filesyste...
128
   */
d455d8789   Suriyan Ramasami   fs: API changes e...
129
130
  int fs_read(const char *filename, ulong addr, loff_t offset, loff_t len,
  	    loff_t *actread);
045fa1e11   Stephen Warren   fs: add filesyste...
131

a0e92cde2   Heinrich Schuchardt   fs: correct comme...
132
133
134
135
  /**
   * fs_write() - write file to the partition previously set by fs_set_blk_dev()
   *
   * Note that not all filesystem drivers support offset != 0.
bd6fb31fa   Stephen Warren   fs: fix generic s...
136
   *
a0e92cde2   Heinrich Schuchardt   fs: correct comme...
137
138
139
140
141
142
   * @filename:	full path of the file to write to
   * @addr:	address of the buffer to read from
   * @offset:	offset in the file from where to start writing
   * @len:	the number of bytes to write
   * @actwrite:	returns the actual number of bytes written
   * Return:	0 if OK with valid *actwrite, -1 on error conditions
bd6fb31fa   Stephen Warren   fs: fix generic s...
143
   */
d455d8789   Suriyan Ramasami   fs: API changes e...
144
145
  int fs_write(const char *filename, ulong addr, loff_t offset, loff_t len,
  	     loff_t *actwrite);
bd6fb31fa   Stephen Warren   fs: fix generic s...
146
147
  
  /*
4bbcc965f   Rob Clark   fs: add fs_readdir()
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
   * Directory entry types, matches the subset of DT_x in posix readdir()
   * which apply to u-boot.
   */
  #define FS_DT_DIR  4         /* directory */
  #define FS_DT_REG  8         /* regular file */
  #define FS_DT_LNK  10        /* symbolic link */
  
  /*
   * A directory entry, returned by fs_readdir().  Returns information
   * about the file/directory at the current directory entry position.
   */
  struct fs_dirent {
  	unsigned type;       /* one of FS_DT_x (not a mask) */
  	loff_t size;         /* size in bytes */
  	char name[256];
  };
  
  /* Note: fs_dir_stream should be treated as opaque to the user of fs layer */
  struct fs_dir_stream {
  	/* private to fs. layer: */
  	struct blk_desc *desc;
  	int part;
  };
  
  /*
   * fs_opendir - Open a directory
   *
   * @filename: the path to directory to open
   * @return a pointer to the directory stream or NULL on error and errno
   *    set appropriately
   */
  struct fs_dir_stream *fs_opendir(const char *filename);
  
  /*
   * fs_readdir - Read the next directory entry in the directory stream.
   *
   * Works in an analogous way to posix readdir().  The previously returned
   * directory entry is no longer valid after calling fs_readdir() again.
   * After fs_closedir() is called, the returned directory entry is no
   * longer valid.
   *
   * @dirs: the directory stream
   * @return the next directory entry (only valid until next fs_readdir() or
   *    fs_closedir() call, do not attempt to free()) or NULL if the end of
   *    the directory is reached.
   */
  struct fs_dirent *fs_readdir(struct fs_dir_stream *dirs);
  
  /*
   * fs_closedir - close a directory stream
   *
   * @dirs: the directory stream
   */
  void fs_closedir(struct fs_dir_stream *dirs);
  
  /*
e2519daf5   AKASHI Takahiro   fs: add unlink in...
204
205
206
207
208
209
210
211
212
213
   * fs_unlink - delete a file or directory
   *
   * If a given name is a directory, it will be deleted only if it's empty
   *
   * @filename: Name of file or directory to delete
   * @return 0 on success, -1 on error conditions
   */
  int fs_unlink(const char *filename);
  
  /*
e7074cffb   AKASHI Takahiro   fs: add mkdir int...
214
215
216
217
218
219
220
221
   * fs_mkdir - Create a directory
   *
   * @filename: Name of directory to create
   * @return 0 on success, -1 on error conditions
   */
  int fs_mkdir(const char *filename);
  
  /*
045fa1e11   Stephen Warren   fs: add filesyste...
222
223
224
   * Common implementation for various filesystem commands, optionally limited
   * to a specific filesystem type via the fstype parameter.
   */
cf6598193   Stephen Warren   fs: implement siz...
225
226
  int do_size(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  		int fstype);
f9b55e228   Stephen Warren   fs: rename fsload...
227
  int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
b770e88a6   Wolfgang Denk   Fix number base h...
228
  		int fstype);
045fa1e11   Stephen Warren   fs: add filesyste...
229
230
  int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  		int fstype);
6152916a9   Stephen Warren   fs: implement inf...
231
232
  int file_exists(const char *dev_type, const char *dev_part, const char *file,
  		int fstype);
a8f6ab522   Simon Glass   fs: Add support f...
233
  int do_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
b770e88a6   Wolfgang Denk   Fix number base h...
234
  		int fstype);
e2519daf5   AKASHI Takahiro   fs: add unlink in...
235
236
  int do_rm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  		int fstype);
e7074cffb   AKASHI Takahiro   fs: add mkdir int...
237
238
  int do_mkdir(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  		int fstype);
aaa12157c   Jean-Jacques Hiblot   fs: Add a new com...
239
240
  int do_ln(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  	  int fstype);
045fa1e11   Stephen Warren   fs: add filesyste...
241

59e890ef7   Christian Gmeiner   fs: make it possi...
242
243
244
245
246
247
  /*
   * Determine the UUID of the specified filesystem and print it. Optionally it is
   * possible to store the UUID directly in env.
   */
  int do_fs_uuid(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  		int fstype);
1a1ad8e09   Sjoerd Simons   fs: Add command t...
248
249
250
251
252
  /*
   * Determine the type of the specified filesystem and print it. Optionally it is
   * possible to store the type directly in env.
   */
  int do_fs_type(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
045fa1e11   Stephen Warren   fs: add filesyste...
253
  #endif /* _FS_H */