fs.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
  3. *
  4. * SPDX-License-Identifier: GPL-2.0
  5. */
  6. #ifndef _FS_H
  7. #define _FS_H
  8. #include <common.h>
  9. #define FS_TYPE_ANY 0
  10. #define FS_TYPE_FAT 1
  11. #define FS_TYPE_EXT 2
  12. #define FS_TYPE_SANDBOX 3
  13. #define FS_TYPE_UBIFS 4
  14. /*
  15. * Tell the fs layer which block device an partition to use for future
  16. * commands. This also internally identifies the filesystem that is present
  17. * within the partition. The identification process may be limited to a
  18. * specific filesystem type by passing FS_* in the fstype parameter.
  19. *
  20. * Returns 0 on success.
  21. * Returns non-zero if there is an error accessing the disk or partition, or
  22. * no known filesystem type could be recognized on it.
  23. */
  24. int fs_set_blk_dev(const char *ifname, const char *dev_part_str, int fstype);
  25. /*
  26. * Print the list of files on the partition previously set by fs_set_blk_dev(),
  27. * in directory "dirname".
  28. *
  29. * Returns 0 on success. Returns non-zero on error.
  30. */
  31. int fs_ls(const char *dirname);
  32. /*
  33. * Determine whether a file exists
  34. *
  35. * Returns 1 if the file exists, 0 if it doesn't exist.
  36. */
  37. int fs_exists(const char *filename);
  38. /*
  39. * fs_size - Determine a file's size
  40. *
  41. * @filename: Name of the file
  42. * @size: Size of file
  43. * @return 0 if ok with valid *size, negative on error
  44. */
  45. int fs_size(const char *filename, loff_t *size);
  46. /*
  47. * fs_read - Read file from the partition previously set by fs_set_blk_dev()
  48. * Note that not all filesystem types support either/both offset!=0 or len!=0.
  49. *
  50. * @filename: Name of file to read from
  51. * @addr: The address to read into
  52. * @offset: The offset in file to read from
  53. * @len: The number of bytes to read. Maybe 0 to read entire file
  54. * @actread: Returns the actual number of bytes read
  55. * @return 0 if ok with valid *actread, -1 on error conditions
  56. */
  57. int fs_read(const char *filename, ulong addr, loff_t offset, loff_t len,
  58. loff_t *actread);
  59. /*
  60. * fs_write - Write file to the partition previously set by fs_set_blk_dev()
  61. * Note that not all filesystem types support offset!=0.
  62. *
  63. * @filename: Name of file to read from
  64. * @addr: The address to read into
  65. * @offset: The offset in file to read from. Maybe 0 to write to start of file
  66. * @len: The number of bytes to write
  67. * @actwrite: Returns the actual number of bytes written
  68. * @return 0 if ok with valid *actwrite, -1 on error conditions
  69. */
  70. int fs_write(const char *filename, ulong addr, loff_t offset, loff_t len,
  71. loff_t *actwrite);
  72. /*
  73. * Common implementation for various filesystem commands, optionally limited
  74. * to a specific filesystem type via the fstype parameter.
  75. */
  76. int do_size(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  77. int fstype);
  78. int do_load(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  79. int fstype);
  80. int do_ls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  81. int fstype);
  82. int file_exists(const char *dev_type, const char *dev_part, const char *file,
  83. int fstype);
  84. int do_save(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  85. int fstype);
  86. /*
  87. * Determine the UUID of the specified filesystem and print it. Optionally it is
  88. * possible to store the UUID directly in env.
  89. */
  90. int do_fs_uuid(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[],
  91. int fstype);
  92. /*
  93. * Determine the type of the specified filesystem and print it. Optionally it is
  94. * possible to store the type directly in env.
  95. */
  96. int do_fs_type(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
  97. #endif /* _FS_H */