blob: b519a8d47d13d2ef6dd03d820f26260c929505b0 [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 Szeredi85c74fc2001-10-28 19:44:14 +000047};
48
49/* Conservative buffer size for the client */
50#define FUSE_MAX_IN 8192
51
52struct fuse_lookup_out {
53 unsigned long ino;
54 struct fuse_attr attr;
55};
56
57struct fuse_getattr_out {
58 struct fuse_attr attr;
59};
60
61struct fuse_getdir_out {
62 int fd;
63 void *file; /* Used by kernel only */
64};
65
66struct fuse_mknod_in {
67 unsigned short mode;
68 unsigned short rdev;
69 char name[1];
70};
71
72struct fuse_mknod_out {
73 unsigned long ino;
74 struct fuse_attr attr;
75};
76
Miklos Szeredib483c932001-10-29 14:57:57 +000077struct fuse_mkdir_in {
78 unsigned short mode;
79 char name[1];
80};
81
82
83struct fuse_rename_in {
84 unsigned long newdir;
85 char names[2];
86};
87
Miklos Szeredi85c74fc2001-10-28 19:44:14 +000088struct fuse_in_header {
89 int unique;
90 enum fuse_opcode opcode;
Miklos Szeredib483c932001-10-29 14:57:57 +000091 unsigned long ino;
Miklos Szeredi85c74fc2001-10-28 19:44:14 +000092};
93
94struct fuse_out_header {
95 int unique;
96 int result;
97};
98
99struct fuse_dirent {
100 unsigned long ino;
101 unsigned short namelen;
102 unsigned char type;
103 char name[256];
104};
105
106#define FUSE_NAME_OFFSET ((unsigned int) ((struct fuse_dirent *) 0)->name)
107#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(long) - 1) & ~(sizeof(long) - 1))
108#define FUSE_DIRENT_SIZE(d) \
109 FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
110
111/*
112 * Local Variables:
113 * indent-tabs-mode: t
114 * c-basic-offset: 8
115 * End:
116 */