1 /* General File System informations/capabilities 2 ** 3 ** Distributed under the terms of the OpenBeOS License. 4 */ 5 #ifndef _FSSH_FS_INFO_H 6 #define _FSSH_FS_INFO_H 7 8 #include "fssh_defs.h" 9 #include "fssh_os.h" 10 11 12 /* fs_info.flags */ 13 #define FSSH_B_FS_IS_READONLY 0x00000001 14 #define FSSH_B_FS_IS_REMOVABLE 0x00000002 15 #define FSSH_B_FS_IS_PERSISTENT 0x00000004 16 #define FSSH_B_FS_IS_SHARED 0x00000008 17 #define FSSH_B_FS_HAS_MIME 0x00010000 18 #define FSSH_B_FS_HAS_ATTR 0x00020000 19 #define FSSH_B_FS_HAS_QUERY 0x00040000 20 // those additions are preliminary and may be removed 21 #define FSSH_B_FS_HAS_SELF_HEALING_LINKS 0x00080000 22 #define FSSH_B_FS_HAS_ALIASES 0x00100000 23 #define FSSH_B_FS_SUPPORTS_NODE_MONITORING 0x00200000 24 25 typedef struct fssh_fs_info { 26 fssh_dev_t dev; /* volume dev_t */ 27 fssh_ino_t root; /* root ino_t */ 28 uint32_t flags; /* flags (see above) */ 29 fssh_off_t block_size; /* fundamental block size */ 30 fssh_off_t io_size; /* optimal i/o size */ 31 fssh_off_t total_blocks; /* total number of blocks */ 32 fssh_off_t free_blocks; /* number of free blocks */ 33 fssh_off_t total_nodes; /* total number of nodes */ 34 fssh_off_t free_nodes; /* number of free nodes */ 35 char device_name[128]; /* device holding fs */ 36 char volume_name[FSSH_B_FILE_NAME_LENGTH]; /* volume name */ 37 char fsh_name[FSSH_B_OS_NAME_LENGTH]; /* name of fs handler */ 38 } fssh_fs_info; 39 40 41 #ifdef __cplusplus 42 extern "C" { 43 #endif 44 45 extern fssh_dev_t dev_for_path(const char *path); 46 extern fssh_dev_t next_dev(int32_t *pos); 47 extern int fs_stat_dev(fssh_dev_t dev, fssh_fs_info *info); 48 49 #ifdef __cplusplus 50 } 51 #endif 52 53 #endif /* _FSSH_FS_INFO_H */ 54