vfs: check userland buffers before reading them.
[haiku.git] / headers / os / kernel / fs_info.h
blob546dd45a643538b9d73a5a41a90b9b32bfdf18bc
1 /*
2 * Copyright 2002-2016, Haiku Inc. All Rights Reserved.
3 * Distributed under the terms of the MIT License.
4 */
5 #ifndef _FS_INFO_H
6 #define _FS_INFO_H
8 #include <OS.h>
11 /* fs_info.flags */
12 #define B_FS_IS_READONLY 0x00000001
13 #define B_FS_IS_REMOVABLE 0x00000002
14 #define B_FS_IS_PERSISTENT 0x00000004
15 #define B_FS_IS_SHARED 0x00000008
16 #define B_FS_HAS_MIME 0x00010000
17 #define B_FS_HAS_ATTR 0x00020000
18 #define B_FS_HAS_QUERY 0x00040000
19 // those additions are preliminary and may be removed
20 #define B_FS_HAS_SELF_HEALING_LINKS 0x00080000
21 #define B_FS_HAS_ALIASES 0x00100000
22 #define B_FS_SUPPORTS_NODE_MONITORING 0x00200000
23 #define B_FS_SUPPORTS_MONITOR_CHILDREN 0x00400000
25 typedef struct fs_info {
26 dev_t dev; /* volume dev_t */
27 ino_t root; /* root ino_t */
28 uint32 flags; /* flags (see above) */
29 off_t block_size; /* fundamental block size */
30 off_t io_size; /* optimal i/o size */
31 off_t total_blocks; /* total number of blocks */
32 off_t free_blocks; /* number of free blocks */
33 off_t total_nodes; /* total number of nodes */
34 off_t free_nodes; /* number of free nodes */
35 char device_name[128]; /* device holding fs */
36 char volume_name[B_FILE_NAME_LENGTH]; /* volume name */
37 char fsh_name[B_OS_NAME_LENGTH]; /* name of fs handler */
38 } fs_info;
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
45 extern dev_t dev_for_path(const char *path);
46 extern dev_t next_dev(int32 *pos);
47 extern int fs_stat_dev(dev_t dev, fs_info *info);
49 #ifdef __cplusplus
51 #endif
53 #endif /* _FS_INFO_H */