blob: 64a4af371f42bb792ea748005c78438d9d2e3f4a [file] [log] [blame]
Miklos Szeredi85c74fc2001-10-28 19:44:14 +00001/*
2 FUSE: Filesystem in Userspace
3 Copyright (C) 2001 Miklos Szeredi (mszeredi@inf.bme.hu)
4
5 This program can be distributed under the terms of the GNU GPL.
6 See the file COPYING.
7*/
8
9/* This file defines the kernel interface of FUSE */
10
11
12#define FUSE_MOUNT_VERSION 1
13
14struct fuse_mount_data {
15 int version;
16 int fd;
17};
18
19#define FUSE_ROOT_INO 1
20
21struct fuse_attr {
22 unsigned short mode;
23 unsigned short nlink;
24 unsigned short uid;
25 unsigned short gid;
26 unsigned short rdev;
27 unsigned long long size;
28 unsigned long blksize;
29 unsigned long blocks;
30 unsigned long atime;
31 unsigned long mtime;
32 unsigned long ctime;
33};
34
35enum fuse_opcode {
36 FUSE_LOOKUP = 1,
37 FUSE_FORGET,
38 FUSE_GETATTR,
39 FUSE_READLINK,
40 FUSE_GETDIR,
41 FUSE_MKNOD,
Miklos Szeredib483c932001-10-29 14:57:57 +000042 FUSE_MKDIR,
43 FUSE_SYMLINK,
44 FUSE_UNLINK,
45 FUSE_RMDIR,
46 FUSE_RENAME,
Miklos Szeredi19dff1b2001-10-30 15:06:52 +000047 FUSE_LINK,
Miklos Szeredi85c74fc2001-10-28 19:44:14 +000048};
49
50/* Conservative buffer size for the client */
51#define FUSE_MAX_IN 8192
52
53struct fuse_lookup_out {
54 unsigned long ino;
55 struct fuse_attr attr;
56};
57
58struct fuse_getattr_out {
59 struct fuse_attr attr;
60};
61
62struct fuse_getdir_out {
63 int fd;
64 void *file; /* Used by kernel only */
65};
66
67struct fuse_mknod_in {
68 unsigned short mode;
69 unsigned short rdev;
70 char name[1];
71};
72
73struct fuse_mknod_out {
74 unsigned long ino;
75 struct fuse_attr attr;
76};
77
Miklos Szeredib483c932001-10-29 14:57:57 +000078struct fuse_mkdir_in {
79 unsigned short mode;
80 char name[1];
81};
82
Miklos Szeredib483c932001-10-29 14:57:57 +000083struct fuse_rename_in {
84 unsigned long newdir;
Miklos Szeredi19dff1b2001-10-30 15:06:52 +000085 char names[1];
86};
87
88struct fuse_link_in {
89 unsigned long newdir;
90 char name[1];
Miklos Szeredib483c932001-10-29 14:57:57 +000091};
92
Miklos Szeredi85c74fc2001-10-28 19:44:14 +000093struct fuse_in_header {
94 int unique;
95 enum fuse_opcode opcode;
Miklos Szeredib483c932001-10-29 14:57:57 +000096 unsigned long ino;
Miklos Szeredi85c74fc2001-10-28 19:44:14 +000097};
98
99struct fuse_out_header {
100 int unique;
Miklos Szeredi19dff1b2001-10-30 15:06:52 +0000101 int error;
Miklos Szeredi85c74fc2001-10-28 19:44:14 +0000102};
103
104struct fuse_dirent {
105 unsigned long ino;
106 unsigned short namelen;
107 unsigned char type;
108 char name[256];
109};
110
111#define FUSE_NAME_OFFSET ((unsigned int) ((struct fuse_dirent *) 0)->name)
112#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(long) - 1) & ~(sizeof(long) - 1))
113#define FUSE_DIRENT_SIZE(d) \
114 FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
115
116/*
117 * Local Variables:
118 * indent-tabs-mode: t
119 * c-basic-offset: 8
120 * End:
121 */