- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly. - Clean up MFS by removing old, dead code (backwards compatibility is broken by the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all functions have proper banners and prototypes. - VFS should always provide a (syntactically) valid path to the FS; no need for the FS to do sanity checks when leaving/entering mount points. - Fix several bugs in MFS: - Several path lookup bugs in MFS. - A link can be too big for the path buffer. - A mountpoint can become inaccessible when the creation of a new inode fails, because the inode already exists and is a mountpoint. - Introduce support for supplemental groups. - Add test 46 to test supplemental group functionality (and removed obsolete suppl. tests from test 2). - Clean up VFS (not everything is done yet). - ISOFS now opens device read-only. This makes the -r flag in the mount command unnecessary (but will still report to be mounted read-write). - Introduce PipeFS. PipeFS is a new FS that handles all anonymous and named pipes. However, named pipes still reside on the (M)FS, as they are part of the file system on disk. To make this work VFS now has a concept of 'mapped' inodes, which causes read, write, truncate and stat requests to be redirected to the mapped FS, and all other requests to the original FS.
58 lines
1.4 KiB
C
58 lines
1.4 KiB
C
/* The following names are synonyms for the variables in the input message. */
|
|
#define exec_name m1_p1
|
|
#define exec_len m1_i1
|
|
#define func m6_f1
|
|
#define grp_id m1_i1
|
|
#define grp_no m1_i1
|
|
#define groupsp m1_p1
|
|
#define namelen m1_i2
|
|
#define pid m1_i1
|
|
#define seconds m1_i1
|
|
#define which_timer m1_i1
|
|
#define new_val m1_p1
|
|
#define old_val m1_p2
|
|
#define sig m6_i1
|
|
#define stack_bytes m1_i2
|
|
#define stack_ptr m1_p2
|
|
#define status m1_i1
|
|
#define usr_id m1_i1
|
|
#define request m2_i2
|
|
#define data m2_l2
|
|
#define sig_nr m1_i2
|
|
#define sig_nsa m1_p1
|
|
#define sig_osa m1_p2
|
|
#define sig_ret m1_p3
|
|
#define stat_nr m2_i1
|
|
#define sig_set m2_l1
|
|
#define sig_how m2_i1
|
|
#define sig_context m2_p1
|
|
#define info_what m1_i1
|
|
#define info_where m1_p1
|
|
#define reboot_flag m1_i1
|
|
#define reboot_code m1_p1
|
|
#define reboot_strlen m1_i2
|
|
#define svrctl_req m2_i1
|
|
#define svrctl_argp m2_p1
|
|
#define stime m2_l1
|
|
#define memsize m4_l1
|
|
#define membase m4_l2
|
|
#define sysuname_req m1_i1
|
|
#define sysuname_field m1_i2
|
|
#define sysuname_len m1_i3
|
|
#define sysuname_value m1_p1
|
|
|
|
/* The following names are synonyms for the variables in a reply message. */
|
|
#define reply_res m_type
|
|
#define reply_res2 m2_i1
|
|
#define reply_res3 m2_i2
|
|
#define reply_ptr m2_p1
|
|
#define reply_mask m2_l1
|
|
#define reply_trace m2_l2
|
|
#define reply_time m2_l1
|
|
#define reply_utime m2_l2
|
|
#define reply_t1 m4_l1
|
|
#define reply_t2 m4_l2
|
|
#define reply_t3 m4_l3
|
|
#define reply_t4 m4_l4
|
|
#define reply_t5 m4_l5
|
|
|