4 #define CALL(n) [((n) - FS_BASE)]
6 int (*fsdriver_callvec
[NREQS
])(const struct fsdriver
* __restrict
,
7 const message
* __restrict
, message
* __restrict
) = {
8 CALL(REQ_PUTNODE
) = fsdriver_putnode
,
9 CALL(REQ_SLINK
) = fsdriver_slink
,
10 CALL(REQ_FTRUNC
) = fsdriver_trunc
,
11 CALL(REQ_CHOWN
) = fsdriver_chown
,
12 CALL(REQ_CHMOD
) = fsdriver_chmod
,
13 CALL(REQ_INHIBREAD
) = fsdriver_inhibread
,
14 CALL(REQ_STAT
) = fsdriver_stat
,
15 CALL(REQ_UTIME
) = fsdriver_utime
,
16 CALL(REQ_STATVFS
) = fsdriver_statvfs
,
17 CALL(REQ_BREAD
) = fsdriver_bread
,
18 CALL(REQ_BWRITE
) = fsdriver_bwrite
,
19 CALL(REQ_UNLINK
) = fsdriver_unlink
,
20 CALL(REQ_RMDIR
) = fsdriver_rmdir
,
21 CALL(REQ_UNMOUNT
) = fsdriver_unmount
,
22 CALL(REQ_SYNC
) = fsdriver_sync
,
23 CALL(REQ_NEW_DRIVER
) = fsdriver_newdriver
,
24 CALL(REQ_FLUSH
) = fsdriver_flush
,
25 CALL(REQ_READ
) = fsdriver_read
,
26 CALL(REQ_WRITE
) = fsdriver_write
,
27 CALL(REQ_MKNOD
) = fsdriver_mknod
,
28 CALL(REQ_MKDIR
) = fsdriver_mkdir
,
29 CALL(REQ_CREATE
) = fsdriver_create
,
30 CALL(REQ_LINK
) = fsdriver_link
,
31 CALL(REQ_RENAME
) = fsdriver_rename
,
32 CALL(REQ_LOOKUP
) = fsdriver_lookup
,
33 CALL(REQ_MOUNTPOINT
) = fsdriver_mountpoint
,
34 CALL(REQ_READSUPER
) = fsdriver_readsuper
,
35 CALL(REQ_NEWNODE
) = fsdriver_newnode
,
36 CALL(REQ_RDLINK
) = fsdriver_rdlink
,
37 CALL(REQ_GETDENTS
) = fsdriver_getdents
,
38 CALL(REQ_PEEK
) = fsdriver_peek
,
39 CALL(REQ_BPEEK
) = fsdriver_bpeek