1 2 #include "fsdriver.h" 3 4 #define CALL(n) [((n) - FS_BASE)] 5 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 40 }; 41