xref: /haiku/headers/private/fs_shell/fssh_fs_info.h (revision 820dca4df6c7bf955c46e8f6521b9408f50b2900)
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