OpenCores
URL https://opencores.org/ocsvn/hf-risc/hf-risc/trunk

Subversion Repositories hf-risc

[/] [hf-risc/] [trunk/] [tools/] [riscv-gnu-toolchain-master/] [linux-headers/] [include/] [linux/] [fuse.h] - Blame information for rev 13

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 13 serginhofr
/*
2
    This file defines the kernel interface of FUSE
3
    Copyright (C) 2001-2008  Miklos Szeredi <miklos@szeredi.hu>
4
 
5
    This program can be distributed under the terms of the GNU GPL.
6
    See the file COPYING.
7
 
8
    This -- and only this -- header file may also be distributed under
9
    the terms of the BSD Licence as follows:
10
 
11
    Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved.
12
 
13
    Redistribution and use in source and binary forms, with or without
14
    modification, are permitted provided that the following conditions
15
    are met:
16
    1. Redistributions of source code must retain the above copyright
17
       notice, this list of conditions and the following disclaimer.
18
    2. Redistributions in binary form must reproduce the above copyright
19
       notice, this list of conditions and the following disclaimer in the
20
       documentation and/or other materials provided with the distribution.
21
 
22
    THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
23
    ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
    IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25
    ARE DISCLAIMED.  IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
26
    FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27
    DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28
    OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29
    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
    LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31
    OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32
    SUCH DAMAGE.
33
*/
34
 
35
/*
36
 * This file defines the kernel interface of FUSE
37
 *
38
 * Protocol changelog:
39
 *
40
 * 7.9:
41
 *  - new fuse_getattr_in input argument of GETATTR
42
 *  - add lk_flags in fuse_lk_in
43
 *  - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in
44
 *  - add blksize field to fuse_attr
45
 *  - add file flags field to fuse_read_in and fuse_write_in
46
 *
47
 * 7.10
48
 *  - add nonseekable open flag
49
 *
50
 * 7.11
51
 *  - add IOCTL message
52
 *  - add unsolicited notification support
53
 *  - add POLL message and NOTIFY_POLL notification
54
 *
55
 * 7.12
56
 *  - add umask flag to input argument of open, mknod and mkdir
57
 *  - add notification messages for invalidation of inodes and
58
 *    directory entries
59
 *
60
 * 7.13
61
 *  - make max number of background requests and congestion threshold
62
 *    tunables
63
 *
64
 * 7.14
65
 *  - add splice support to fuse device
66
 *
67
 * 7.15
68
 *  - add store notify
69
 *  - add retrieve notify
70
 *
71
 * 7.16
72
 *  - add BATCH_FORGET request
73
 *  - FUSE_IOCTL_UNRESTRICTED shall now return with array of 'struct
74
 *    fuse_ioctl_iovec' instead of ambiguous 'struct iovec'
75
 *  - add FUSE_IOCTL_32BIT flag
76
 *
77
 * 7.17
78
 *  - add FUSE_FLOCK_LOCKS and FUSE_RELEASE_FLOCK_UNLOCK
79
 *
80
 * 7.18
81
 *  - add FUSE_IOCTL_DIR flag
82
 *  - add FUSE_NOTIFY_DELETE
83
 *
84
 * 7.19
85
 *  - add FUSE_FALLOCATE
86
 *
87
 * 7.20
88
 *  - add FUSE_AUTO_INVAL_DATA
89
 *
90
 * 7.21
91
 *  - add FUSE_READDIRPLUS
92
 *  - send the requested events in POLL request
93
 *
94
 * 7.22
95
 *  - add FUSE_ASYNC_DIO
96
 */
97
 
98
#ifndef _LINUX_FUSE_H
99
#define _LINUX_FUSE_H
100
 
101
#include <stdint.h>
102
 
103
/*
104
 * Version negotiation:
105
 *
106
 * Both the kernel and userspace send the version they support in the
107
 * INIT request and reply respectively.
108
 *
109
 * If the major versions match then both shall use the smallest
110
 * of the two minor versions for communication.
111
 *
112
 * If the kernel supports a larger major version, then userspace shall
113
 * reply with the major version it supports, ignore the rest of the
114
 * INIT message and expect a new INIT message from the kernel with a
115
 * matching major version.
116
 *
117
 * If the library supports a larger major version, then it shall fall
118
 * back to the major protocol version sent by the kernel for
119
 * communication and reply with that major version (and an arbitrary
120
 * supported minor version).
121
 */
122
 
123
/** Version number of this interface */
124
#define FUSE_KERNEL_VERSION 7
125
 
126
/** Minor version number of this interface */
127
#define FUSE_KERNEL_MINOR_VERSION 22
128
 
129
/** The node ID of the root inode */
130
#define FUSE_ROOT_ID 1
131
 
132
/* Make sure all structures are padded to 64bit boundary, so 32bit
133
   userspace works under 64bit kernels */
134
 
135
struct fuse_attr {
136
        uint64_t        ino;
137
        uint64_t        size;
138
        uint64_t        blocks;
139
        uint64_t        atime;
140
        uint64_t        mtime;
141
        uint64_t        ctime;
142
        uint32_t        atimensec;
143
        uint32_t        mtimensec;
144
        uint32_t        ctimensec;
145
        uint32_t        mode;
146
        uint32_t        nlink;
147
        uint32_t        uid;
148
        uint32_t        gid;
149
        uint32_t        rdev;
150
        uint32_t        blksize;
151
        uint32_t        padding;
152
};
153
 
154
struct fuse_kstatfs {
155
        uint64_t        blocks;
156
        uint64_t        bfree;
157
        uint64_t        bavail;
158
        uint64_t        files;
159
        uint64_t        ffree;
160
        uint32_t        bsize;
161
        uint32_t        namelen;
162
        uint32_t        frsize;
163
        uint32_t        padding;
164
        uint32_t        spare[6];
165
};
166
 
167
struct fuse_file_lock {
168
        uint64_t        start;
169
        uint64_t        end;
170
        uint32_t        type;
171
        uint32_t        pid; /* tgid */
172
};
173
 
174
/**
175
 * Bitmasks for fuse_setattr_in.valid
176
 */
177
#define FATTR_MODE      (1 << 0)
178
#define FATTR_UID       (1 << 1)
179
#define FATTR_GID       (1 << 2)
180
#define FATTR_SIZE      (1 << 3)
181
#define FATTR_ATIME     (1 << 4)
182
#define FATTR_MTIME     (1 << 5)
183
#define FATTR_FH        (1 << 6)
184
#define FATTR_ATIME_NOW (1 << 7)
185
#define FATTR_MTIME_NOW (1 << 8)
186
#define FATTR_LOCKOWNER (1 << 9)
187
 
188
/**
189
 * Flags returned by the OPEN request
190
 *
191
 * FOPEN_DIRECT_IO: bypass page cache for this open file
192
 * FOPEN_KEEP_CACHE: don't invalidate the data cache on open
193
 * FOPEN_NONSEEKABLE: the file is not seekable
194
 */
195
#define FOPEN_DIRECT_IO         (1 << 0)
196
#define FOPEN_KEEP_CACHE        (1 << 1)
197
#define FOPEN_NONSEEKABLE       (1 << 2)
198
 
199
/**
200
 * INIT request/reply flags
201
 *
202
 * FUSE_ASYNC_READ: asynchronous read requests
203
 * FUSE_POSIX_LOCKS: remote locking for POSIX file locks
204
 * FUSE_FILE_OPS: kernel sends file handle for fstat, etc... (not yet supported)
205
 * FUSE_ATOMIC_O_TRUNC: handles the O_TRUNC open flag in the filesystem
206
 * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".."
207
 * FUSE_BIG_WRITES: filesystem can handle write size larger than 4kB
208
 * FUSE_DONT_MASK: don't apply umask to file mode on create operations
209
 * FUSE_SPLICE_WRITE: kernel supports splice write on the device
210
 * FUSE_SPLICE_MOVE: kernel supports splice move on the device
211
 * FUSE_SPLICE_READ: kernel supports splice read on the device
212
 * FUSE_FLOCK_LOCKS: remote locking for BSD style file locks
213
 * FUSE_HAS_IOCTL_DIR: kernel supports ioctl on directories
214
 * FUSE_AUTO_INVAL_DATA: automatically invalidate cached pages
215
 * FUSE_DO_READDIRPLUS: do READDIRPLUS (READDIR+LOOKUP in one)
216
 * FUSE_READDIRPLUS_AUTO: adaptive readdirplus
217
 * FUSE_ASYNC_DIO: asynchronous direct I/O submission
218
 */
219
#define FUSE_ASYNC_READ         (1 << 0)
220
#define FUSE_POSIX_LOCKS        (1 << 1)
221
#define FUSE_FILE_OPS           (1 << 2)
222
#define FUSE_ATOMIC_O_TRUNC     (1 << 3)
223
#define FUSE_EXPORT_SUPPORT     (1 << 4)
224
#define FUSE_BIG_WRITES         (1 << 5)
225
#define FUSE_DONT_MASK          (1 << 6)
226
#define FUSE_SPLICE_WRITE       (1 << 7)
227
#define FUSE_SPLICE_MOVE        (1 << 8)
228
#define FUSE_SPLICE_READ        (1 << 9)
229
#define FUSE_FLOCK_LOCKS        (1 << 10)
230
#define FUSE_HAS_IOCTL_DIR      (1 << 11)
231
#define FUSE_AUTO_INVAL_DATA    (1 << 12)
232
#define FUSE_DO_READDIRPLUS     (1 << 13)
233
#define FUSE_READDIRPLUS_AUTO   (1 << 14)
234
#define FUSE_ASYNC_DIO          (1 << 15)
235
 
236
/**
237
 * CUSE INIT request/reply flags
238
 *
239
 * CUSE_UNRESTRICTED_IOCTL:  use unrestricted ioctl
240
 */
241
#define CUSE_UNRESTRICTED_IOCTL (1 << 0)
242
 
243
/**
244
 * Release flags
245
 */
246
#define FUSE_RELEASE_FLUSH      (1 << 0)
247
#define FUSE_RELEASE_FLOCK_UNLOCK       (1 << 1)
248
 
249
/**
250
 * Getattr flags
251
 */
252
#define FUSE_GETATTR_FH         (1 << 0)
253
 
254
/**
255
 * Lock flags
256
 */
257
#define FUSE_LK_FLOCK           (1 << 0)
258
 
259
/**
260
 * WRITE flags
261
 *
262
 * FUSE_WRITE_CACHE: delayed write from page cache, file handle is guessed
263
 * FUSE_WRITE_LOCKOWNER: lock_owner field is valid
264
 */
265
#define FUSE_WRITE_CACHE        (1 << 0)
266
#define FUSE_WRITE_LOCKOWNER    (1 << 1)
267
 
268
/**
269
 * Read flags
270
 */
271
#define FUSE_READ_LOCKOWNER     (1 << 1)
272
 
273
/**
274
 * Ioctl flags
275
 *
276
 * FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine
277
 * FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed
278
 * FUSE_IOCTL_RETRY: retry with new iovecs
279
 * FUSE_IOCTL_32BIT: 32bit ioctl
280
 * FUSE_IOCTL_DIR: is a directory
281
 *
282
 * FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs
283
 */
284
#define FUSE_IOCTL_COMPAT       (1 << 0)
285
#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
286
#define FUSE_IOCTL_RETRY        (1 << 2)
287
#define FUSE_IOCTL_32BIT        (1 << 3)
288
#define FUSE_IOCTL_DIR          (1 << 4)
289
 
290
#define FUSE_IOCTL_MAX_IOV      256
291
 
292
/**
293
 * Poll flags
294
 *
295
 * FUSE_POLL_SCHEDULE_NOTIFY: request poll notify
296
 */
297
#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
298
 
299
enum fuse_opcode {
300
        FUSE_LOOKUP        = 1,
301
        FUSE_FORGET        = 2,  /* no reply */
302
        FUSE_GETATTR       = 3,
303
        FUSE_SETATTR       = 4,
304
        FUSE_READLINK      = 5,
305
        FUSE_SYMLINK       = 6,
306
        FUSE_MKNOD         = 8,
307
        FUSE_MKDIR         = 9,
308
        FUSE_UNLINK        = 10,
309
        FUSE_RMDIR         = 11,
310
        FUSE_RENAME        = 12,
311
        FUSE_LINK          = 13,
312
        FUSE_OPEN          = 14,
313
        FUSE_READ          = 15,
314
        FUSE_WRITE         = 16,
315
        FUSE_STATFS        = 17,
316
        FUSE_RELEASE       = 18,
317
        FUSE_FSYNC         = 20,
318
        FUSE_SETXATTR      = 21,
319
        FUSE_GETXATTR      = 22,
320
        FUSE_LISTXATTR     = 23,
321
        FUSE_REMOVEXATTR   = 24,
322
        FUSE_FLUSH         = 25,
323
        FUSE_INIT          = 26,
324
        FUSE_OPENDIR       = 27,
325
        FUSE_READDIR       = 28,
326
        FUSE_RELEASEDIR    = 29,
327
        FUSE_FSYNCDIR      = 30,
328
        FUSE_GETLK         = 31,
329
        FUSE_SETLK         = 32,
330
        FUSE_SETLKW        = 33,
331
        FUSE_ACCESS        = 34,
332
        FUSE_CREATE        = 35,
333
        FUSE_INTERRUPT     = 36,
334
        FUSE_BMAP          = 37,
335
        FUSE_DESTROY       = 38,
336
        FUSE_IOCTL         = 39,
337
        FUSE_POLL          = 40,
338
        FUSE_NOTIFY_REPLY  = 41,
339
        FUSE_BATCH_FORGET  = 42,
340
        FUSE_FALLOCATE     = 43,
341
        FUSE_READDIRPLUS   = 44,
342
 
343
        /* CUSE specific operations */
344
        CUSE_INIT          = 4096,
345
};
346
 
347
enum fuse_notify_code {
348
        FUSE_NOTIFY_POLL   = 1,
349
        FUSE_NOTIFY_INVAL_INODE = 2,
350
        FUSE_NOTIFY_INVAL_ENTRY = 3,
351
        FUSE_NOTIFY_STORE = 4,
352
        FUSE_NOTIFY_RETRIEVE = 5,
353
        FUSE_NOTIFY_DELETE = 6,
354
        FUSE_NOTIFY_CODE_MAX,
355
};
356
 
357
/* The read buffer is required to be at least 8k, but may be much larger */
358
#define FUSE_MIN_READ_BUFFER 8192
359
 
360
#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
361
 
362
struct fuse_entry_out {
363
        uint64_t        nodeid;         /* Inode ID */
364
        uint64_t        generation;     /* Inode generation: nodeid:gen must
365
                                           be unique for the fs's lifetime */
366
        uint64_t        entry_valid;    /* Cache timeout for the name */
367
        uint64_t        attr_valid;     /* Cache timeout for the attributes */
368
        uint32_t        entry_valid_nsec;
369
        uint32_t        attr_valid_nsec;
370
        struct fuse_attr attr;
371
};
372
 
373
struct fuse_forget_in {
374
        uint64_t        nlookup;
375
};
376
 
377
struct fuse_forget_one {
378
        uint64_t        nodeid;
379
        uint64_t        nlookup;
380
};
381
 
382
struct fuse_batch_forget_in {
383
        uint32_t        count;
384
        uint32_t        dummy;
385
};
386
 
387
struct fuse_getattr_in {
388
        uint32_t        getattr_flags;
389
        uint32_t        dummy;
390
        uint64_t        fh;
391
};
392
 
393
#define FUSE_COMPAT_ATTR_OUT_SIZE 96
394
 
395
struct fuse_attr_out {
396
        uint64_t        attr_valid;     /* Cache timeout for the attributes */
397
        uint32_t        attr_valid_nsec;
398
        uint32_t        dummy;
399
        struct fuse_attr attr;
400
};
401
 
402
#define FUSE_COMPAT_MKNOD_IN_SIZE 8
403
 
404
struct fuse_mknod_in {
405
        uint32_t        mode;
406
        uint32_t        rdev;
407
        uint32_t        umask;
408
        uint32_t        padding;
409
};
410
 
411
struct fuse_mkdir_in {
412
        uint32_t        mode;
413
        uint32_t        umask;
414
};
415
 
416
struct fuse_rename_in {
417
        uint64_t        newdir;
418
};
419
 
420
struct fuse_link_in {
421
        uint64_t        oldnodeid;
422
};
423
 
424
struct fuse_setattr_in {
425
        uint32_t        valid;
426
        uint32_t        padding;
427
        uint64_t        fh;
428
        uint64_t        size;
429
        uint64_t        lock_owner;
430
        uint64_t        atime;
431
        uint64_t        mtime;
432
        uint64_t        unused2;
433
        uint32_t        atimensec;
434
        uint32_t        mtimensec;
435
        uint32_t        unused3;
436
        uint32_t        mode;
437
        uint32_t        unused4;
438
        uint32_t        uid;
439
        uint32_t        gid;
440
        uint32_t        unused5;
441
};
442
 
443
struct fuse_open_in {
444
        uint32_t        flags;
445
        uint32_t        unused;
446
};
447
 
448
struct fuse_create_in {
449
        uint32_t        flags;
450
        uint32_t        mode;
451
        uint32_t        umask;
452
        uint32_t        padding;
453
};
454
 
455
struct fuse_open_out {
456
        uint64_t        fh;
457
        uint32_t        open_flags;
458
        uint32_t        padding;
459
};
460
 
461
struct fuse_release_in {
462
        uint64_t        fh;
463
        uint32_t        flags;
464
        uint32_t        release_flags;
465
        uint64_t        lock_owner;
466
};
467
 
468
struct fuse_flush_in {
469
        uint64_t        fh;
470
        uint32_t        unused;
471
        uint32_t        padding;
472
        uint64_t        lock_owner;
473
};
474
 
475
struct fuse_read_in {
476
        uint64_t        fh;
477
        uint64_t        offset;
478
        uint32_t        size;
479
        uint32_t        read_flags;
480
        uint64_t        lock_owner;
481
        uint32_t        flags;
482
        uint32_t        padding;
483
};
484
 
485
#define FUSE_COMPAT_WRITE_IN_SIZE 24
486
 
487
struct fuse_write_in {
488
        uint64_t        fh;
489
        uint64_t        offset;
490
        uint32_t        size;
491
        uint32_t        write_flags;
492
        uint64_t        lock_owner;
493
        uint32_t        flags;
494
        uint32_t        padding;
495
};
496
 
497
struct fuse_write_out {
498
        uint32_t        size;
499
        uint32_t        padding;
500
};
501
 
502
#define FUSE_COMPAT_STATFS_SIZE 48
503
 
504
struct fuse_statfs_out {
505
        struct fuse_kstatfs st;
506
};
507
 
508
struct fuse_fsync_in {
509
        uint64_t        fh;
510
        uint32_t        fsync_flags;
511
        uint32_t        padding;
512
};
513
 
514
struct fuse_setxattr_in {
515
        uint32_t        size;
516
        uint32_t        flags;
517
};
518
 
519
struct fuse_getxattr_in {
520
        uint32_t        size;
521
        uint32_t        padding;
522
};
523
 
524
struct fuse_getxattr_out {
525
        uint32_t        size;
526
        uint32_t        padding;
527
};
528
 
529
struct fuse_lk_in {
530
        uint64_t        fh;
531
        uint64_t        owner;
532
        struct fuse_file_lock lk;
533
        uint32_t        lk_flags;
534
        uint32_t        padding;
535
};
536
 
537
struct fuse_lk_out {
538
        struct fuse_file_lock lk;
539
};
540
 
541
struct fuse_access_in {
542
        uint32_t        mask;
543
        uint32_t        padding;
544
};
545
 
546
struct fuse_init_in {
547
        uint32_t        major;
548
        uint32_t        minor;
549
        uint32_t        max_readahead;
550
        uint32_t        flags;
551
};
552
 
553
struct fuse_init_out {
554
        uint32_t        major;
555
        uint32_t        minor;
556
        uint32_t        max_readahead;
557
        uint32_t        flags;
558
        uint16_t        max_background;
559
        uint16_t        congestion_threshold;
560
        uint32_t        max_write;
561
};
562
 
563
#define CUSE_INIT_INFO_MAX 4096
564
 
565
struct cuse_init_in {
566
        uint32_t        major;
567
        uint32_t        minor;
568
        uint32_t        unused;
569
        uint32_t        flags;
570
};
571
 
572
struct cuse_init_out {
573
        uint32_t        major;
574
        uint32_t        minor;
575
        uint32_t        unused;
576
        uint32_t        flags;
577
        uint32_t        max_read;
578
        uint32_t        max_write;
579
        uint32_t        dev_major;              /* chardev major */
580
        uint32_t        dev_minor;              /* chardev minor */
581
        uint32_t        spare[10];
582
};
583
 
584
struct fuse_interrupt_in {
585
        uint64_t        unique;
586
};
587
 
588
struct fuse_bmap_in {
589
        uint64_t        block;
590
        uint32_t        blocksize;
591
        uint32_t        padding;
592
};
593
 
594
struct fuse_bmap_out {
595
        uint64_t        block;
596
};
597
 
598
struct fuse_ioctl_in {
599
        uint64_t        fh;
600
        uint32_t        flags;
601
        uint32_t        cmd;
602
        uint64_t        arg;
603
        uint32_t        in_size;
604
        uint32_t        out_size;
605
};
606
 
607
struct fuse_ioctl_iovec {
608
        uint64_t        base;
609
        uint64_t        len;
610
};
611
 
612
struct fuse_ioctl_out {
613
        int32_t         result;
614
        uint32_t        flags;
615
        uint32_t        in_iovs;
616
        uint32_t        out_iovs;
617
};
618
 
619
struct fuse_poll_in {
620
        uint64_t        fh;
621
        uint64_t        kh;
622
        uint32_t        flags;
623
        uint32_t        events;
624
};
625
 
626
struct fuse_poll_out {
627
        uint32_t        revents;
628
        uint32_t        padding;
629
};
630
 
631
struct fuse_notify_poll_wakeup_out {
632
        uint64_t        kh;
633
};
634
 
635
struct fuse_fallocate_in {
636
        uint64_t        fh;
637
        uint64_t        offset;
638
        uint64_t        length;
639
        uint32_t        mode;
640
        uint32_t        padding;
641
};
642
 
643
struct fuse_in_header {
644
        uint32_t        len;
645
        uint32_t        opcode;
646
        uint64_t        unique;
647
        uint64_t        nodeid;
648
        uint32_t        uid;
649
        uint32_t        gid;
650
        uint32_t        pid;
651
        uint32_t        padding;
652
};
653
 
654
struct fuse_out_header {
655
        uint32_t        len;
656
        int32_t         error;
657
        uint64_t        unique;
658
};
659
 
660
struct fuse_dirent {
661
        uint64_t        ino;
662
        uint64_t        off;
663
        uint32_t        namelen;
664
        uint32_t        type;
665
        char name[];
666
};
667
 
668
#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
669
#define FUSE_DIRENT_ALIGN(x) \
670
        (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
671
#define FUSE_DIRENT_SIZE(d) \
672
        FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
673
 
674
struct fuse_direntplus {
675
        struct fuse_entry_out entry_out;
676
        struct fuse_dirent dirent;
677
};
678
 
679
#define FUSE_NAME_OFFSET_DIRENTPLUS \
680
        offsetof(struct fuse_direntplus, dirent.name)
681
#define FUSE_DIRENTPLUS_SIZE(d) \
682
        FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen)
683
 
684
struct fuse_notify_inval_inode_out {
685
        uint64_t        ino;
686
        int64_t         off;
687
        int64_t         len;
688
};
689
 
690
struct fuse_notify_inval_entry_out {
691
        uint64_t        parent;
692
        uint32_t        namelen;
693
        uint32_t        padding;
694
};
695
 
696
struct fuse_notify_delete_out {
697
        uint64_t        parent;
698
        uint64_t        child;
699
        uint32_t        namelen;
700
        uint32_t        padding;
701
};
702
 
703
struct fuse_notify_store_out {
704
        uint64_t        nodeid;
705
        uint64_t        offset;
706
        uint32_t        size;
707
        uint32_t        padding;
708
};
709
 
710
struct fuse_notify_retrieve_out {
711
        uint64_t        notify_unique;
712
        uint64_t        nodeid;
713
        uint64_t        offset;
714
        uint32_t        size;
715
        uint32_t        padding;
716
};
717
 
718
/* Matches the size of fuse_write_in */
719
struct fuse_notify_retrieve_in {
720
        uint64_t        dummy1;
721
        uint64_t        offset;
722
        uint32_t        size;
723
        uint32_t        dummy2;
724
        uint64_t        dummy3;
725
        uint64_t        dummy4;
726
};
727
 
728
#endif /* _LINUX_FUSE_H */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.