procfs.hpp 700 B

123456789101112131415161718192021222324252627282930
  1. #pragma once
  2. #include <defs.hpp>
  3. #include <string>
  4. #include <vector>
  5. #include <sys/types.h>
  6. namespace kernel::procfs {
  7. using read_fn = std::function<isize(u8*, usize)>;
  8. using write_fn = std::function<isize(const u8*, usize)>;
  9. struct procfs_file {
  10. std::string name;
  11. ino_t ino;
  12. read_fn read;
  13. write_fn write;
  14. std::vector<procfs_file>* children;
  15. };
  16. const procfs_file* root();
  17. const procfs_file* find(const procfs_file* parent, std::string name);
  18. const procfs_file* mkdir(const procfs_file* parent, std::string name);
  19. const procfs_file* create(const procfs_file* parent, std::string name,
  20. read_fn read, write_fn write);
  21. } // namespace kernel::procfs