summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-01-14 18:12:00 -0700
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-01-14 20:02:28 -0700
commit6e48efec92b3357b2b762d14994d2f812a3b6ef7 (patch)
tree236d11893dafb8f45141fdacc7d6f47cc0aa8529
parent7f4b9794efb591c9de9906340fe2c26c838c2f52 (diff)
lib9p: Have a go at filling out 9P2000.L.9p
-rw-r--r--lib9p/idl/2010-9P2000.L.9p.wip132
1 files changed, 91 insertions, 41 deletions
diff --git a/lib9p/idl/2010-9P2000.L.9p.wip b/lib9p/idl/2010-9P2000.L.9p.wip
index f5e79c5..972e7d0 100644
--- a/lib9p/idl/2010-9P2000.L.9p.wip
+++ b/lib9p/idl/2010-9P2000.L.9p.wip
@@ -1,56 +1,106 @@
# lib9p/idl/2010-9P2000.L.9p - Definitions of 9P2000.L messages
#
-# Copyright (C) 2024 Luke T. Shumaker <lukeshu@lukeshu.com>
+# Copyright (C) 2024-2025 Luke T. Shumaker <lukeshu@lukeshu.com>
# SPDX-License-Identifier: AGPL-3.0-or-later
# "9P2000.L" Linux extension
# https://github.com/chaos/diod/blob/master/protocol.md
version "9P2000.L"
-from ./2002-9P2000.9p import *
-from ./2005-9P2000.u.9p import Tauth, Tattach
+from ./2002-9P2000.9p import tag, fid, s, qt, qid, Tversion, Rversion, Tflush, Rflush, Twalk, Rwalk, Tread, Rread, Twrite, Rwrite, Tclunk, RClunk, Tremove, Rremove
+from ./2005-9P2000.u.9p import nuid, Tauth, Rauth, Tattach, Rattach
+
+bitfield getattr = 8
+ "0=MODE"
+ "1=NLINK"
+ "2=UID"
+ "3=GID"
+ "4=RDEV"
+ "5=ATIME"
+ "6=MTIME"
+ "7=CTIME"
+ "8=INO"
+ "9=SIZE"
+ "10=BLOCKS"
+
+ "11=BTIME"
+ "12=GEN"
+ "13=DATA_VERSION"
+
+ "BASIC=0x000007ff" # Mask for fields up to BLOCKS
+ "ALL =0x00003fff" # Mask for All fields above
+
+bitfield setattr = 4
+ "0=MODE"
+ "1=UID"
+ "2=GID"
+ "3=SIZE"
+ "4=ATIME"
+ "5=MTIME"
+ "6=CTIME"
+ "7=ATIME_SET"
+ "8=MTIME_SET"
+
+num lock_type = 1
+ "RDLCK=0"
+ "WRLCK=1"
+ "UNLCK=2"
+
+bitfield lock_flags = 4
+ "0=BLOCK"
+ "1=RECLAIM"
+
+num lock_status = 1
+ "SUCCESS=0"
+ "BLOCKED=1"
+ "ERROR=2"
+ "GRACE=3"
#msg Tlerror = "size[4,val=end-&size] typ[1,val=6] tag[tag] illegal" # analogous to 106/Terror
msg Rlerror = "size[4,val=end-&size] typ[1,val=7] tag[tag] ecode[4]" # analogous to 107/Rerror
-msg Tstatfs = "size[4,val=end-&size] typ[1,val=8] tag[tag] TODO"
-msg Rstatfs = "size[4,val=end-&size] typ[1,val=9] tag[tag] TODO"
-msg Tlopen = "size[4,val=end-&size] typ[1,val=12] tag[tag] TODO" # analogous to 112/Topen
-msg Rlopen = "size[4,val=end-&size] typ[1,val=13] tag[tag] TODO" # analogous to 113/Ropen
-msg Tlcreate = "size[4,val=end-&size] typ[1,val=14] tag[tag] TODO" # analogous to 114/Tcreate
-msg Rlcreate = "size[4,val=end-&size] typ[1,val=15] tag[tag] TODO" # analogous to 115/Rcreate
-msg Tsymlink = "size[4,val=end-&size] typ[1,val=16] tag[tag] TODO"
-msg Rsymlink = "size[4,val=end-&size] typ[1,val=17] tag[tag] TODO"
-msg Tmknod = "size[4,val=end-&size] typ[1,val=18] tag[tag] TODO"
-msg Rmknod = "size[4,val=end-&size] typ[1,val=19] tag[tag] TODO"
-msg Trename = "size[4,val=end-&size] typ[1,val=20] tag[tag] TODO"
-msg Rrename = "size[4,val=end-&size] typ[1,val=21] tag[tag] TODO"
-msg Treadlink = "size[4,val=end-&size] typ[1,val=22] tag[tag] TODO"
-msg Rreadlink = "size[4,val=end-&size] typ[1,val=23] tag[tag] TODO"
-msg Tgetattr = "size[4,val=end-&size] typ[1,val=24] tag[tag] TODO"
-msg Rgetattr = "size[4,val=end-&size] typ[1,val=25] tag[tag] TODO"
-msg Tsetattr = "size[4,val=end-&size] typ[1,val=26] tag[tag] TODO"
-msg Rsetattr = "size[4,val=end-&size] typ[1,val=27] tag[tag] TODO"
+msg Tstatfs = "size[4,val=end-&size] typ[1,val=8] tag[tag] fid[fid]"
+msg Rstatfs = "size[4,val=end-&size] typ[1,val=9] tag[tag] type[4] bsize[4] blocks[8] bfree[8] bavail[8] files[8] ffree[8] fsid[8] namelen[4]"
+msg Tlopen = "size[4,val=end-&size] typ[1,val=12] tag[tag] fid[fid] flags[4]" # analogous to 112/Topen
+msg Rlopen = "size[4,val=end-&size] typ[1,val=13] tag[tag] qid[qid] iounit[4]" # analogous to 113/Ropen
+msg Tlcreate = "size[4,val=end-&size] typ[1,val=14] tag[tag] fid[fid] name[s] flags[4] mode[4] gid[nuid]" # analogous to 114/Tcreate
+msg Rlcreate = "size[4,val=end-&size] typ[1,val=15] tag[tag] qid[qid] iounit[4]" # analogous to 115/Rcreate
+msg Tsymlink = "size[4,val=end-&size] typ[1,val=16] tag[tag] fid[fid] name[s] symtgt[s] gid[nuid]"
+msg Rsymlink = "size[4,val=end-&size] typ[1,val=17] tag[tag] qid[qid]"
+msg Tmknod = "size[4,val=end-&size] typ[1,val=18] tag[tag] dfid[fid] name[s] mode[4] major[4] minor[4] gid[nuid]"
+msg Rmknod = "size[4,val=end-&size] typ[1,val=19] tag[tag] qid[qid]"
+msg Trename = "size[4,val=end-&size] typ[1,val=20] tag[tag] fid[fid] dfid[fid] name[s]"
+msg Rrename = "size[4,val=end-&size] typ[1,val=21] tag[tag]"
+msg Treadlink = "size[4,val=end-&size] typ[1,val=22] tag[tag] fid[fid]"
+msg Rreadlink = "size[4,val=end-&size] typ[1,val=23] tag[tag] target[s]"
+msg Tgetattr = "size[4,val=end-&size] typ[1,val=24] tag[tag] fid[fid] request_mask[getattr]"
+msg Rgetattr = "size[4,val=end-&size] typ[1,val=25] tag[tag] valid[8] qid[qid] mode[4] uid[nuid] gid[nuid] nlink[8]"
+ "rdev[8] filesize[8] blksize[8] blocks[8]"
+ "atime_sec[8] atime_nsec[8] mtime_sec[8] mtime_nsec[8]"
+ "ctime_sec[8] ctime_nsec[8] btime_sec[8] btime_nsec[8]"
+ "gen[8] data_version[8]"
+msg Tsetattr = "size[4,val=end-&size] typ[1,val=26] tag[tag] fid[fid] valid[setattr] mode[4] uid[nuid] gid[nuid] filesize[8] atime_sec[8] atime_nsec[8] mtime_sec[8] mtime_nsec[8]"
+msg Rsetattr = "size[4,val=end-&size] typ[1,val=27] tag[tag]"
#...
-msg Txattrwalk = "size[4,val=end-&size] typ[1,val=30] tag[tag] TODO"
-msg Rxattrwalk = "size[4,val=end-&size] typ[1,val=31] tag[tag] TODO"
-msg Txattrcreate = "size[4,val=end-&size] typ[1,val=32] tag[tag] TODO"
-msg Rxattrcreate = "size[4,val=end-&size] typ[1,val=33] tag[tag] TODO"
+msg Txattrwalk = "size[4,val=end-&size] typ[1,val=30] tag[tag] fid[fid] newfid[fid] name[s]"
+msg Rxattrwalk = "size[4,val=end-&size] typ[1,val=31] tag[tag] attr_size[8]"
+msg Txattrcreate = "size[4,val=end-&size] typ[1,val=32] tag[tag] fid[fid] name[s] attr_size[8] flags[4]"
+msg Rxattrcreate = "size[4,val=end-&size] typ[1,val=33] tag[tag]"
#...
-msg Treaddir = "size[4,val=end-&size] typ[1,val=40] tag[tag] TODO"
-msg Rreaddir = "size[4,val=end-&size] typ[1,val=41] tag[tag] TODO"
+msg Treaddir = "size[4,val=end-&size] typ[1,val=40] tag[tag] fid[fid] offset[8] count[4]"
+msg Rreaddir = "size[4,val=end-&size] typ[1,val=41] tag[tag] count[4] count*(data[1])" # data is "qid[qid] offset[8] type[1] name[s]"
#...
-msg Tfsync = "size[4,val=end-&size] typ[1,val=50] tag[tag] TODO"
-msg Rfsync = "size[4,val=end-&size] typ[1,val=51] tag[tag] TODO"
-msg Tlock = "size[4,val=end-&size] typ[1,val=52] tag[tag] TODO"
-msg Rlock = "size[4,val=end-&size] typ[1,val=53] tag[tag] TODO"
-msg Tgetlock = "size[4,val=end-&size] typ[1,val=54] tag[tag] TODO"
-msg Rgetlock = "size[4,val=end-&size] typ[1,val=55] tag[tag] TODO"
+msg Tfsync = "size[4,val=end-&size] typ[1,val=50] tag[tag] fid[fid] datasync[4]"
+msg Rfsync = "size[4,val=end-&size] typ[1,val=51] tag[tag]"
+msg Tlock = "size[4,val=end-&size] typ[1,val=52] tag[tag] fid[fid] type[lock_type] flags[lock_flags] start[8] length[8] proc_id[4] client_id[s]"
+msg Rlock = "size[4,val=end-&size] typ[1,val=53] tag[tag] status[lock_status]"
+msg Tgetlock = "size[4,val=end-&size] typ[1,val=54] tag[tag] fid[fid] type[1] start[8] length[8] proc_id[4] client_id[s]"
+msg Rgetlock = "size[4,val=end-&size] typ[1,val=55] tag[tag] type[1] start[8] length[8] proc_id[4] client_id[s]"
# ...
-msg Tlink = "size[4,val=end-&size] typ[1,val=70] tag[tag] TODO"
-msg Rlink = "size[4,val=end-&size] typ[1,val=71] tag[tag] TODO"
-msg Tmkdir = "size[4,val=end-&size] typ[1,val=72] tag[tag] TODO"
-msg Tmkdir = "size[4,val=end-&size] typ[1,val=73] tag[tag] TODO"
-msg Trenameat = "size[4,val=end-&size] typ[1,val=74] tag[tag] TODO"
-msg Rrenameat = "size[4,val=end-&size] typ[1,val=75] tag[tag] TODO"
-msg Tunlinkat = "size[4,val=end-&size] typ[1,val=76] tag[tag] TODO"
-msg Runlinkat = "size[4,val=end-&size] typ[1,val=77] tag[tag] TODO"
+msg Tlink = "size[4,val=end-&size] typ[1,val=70] tag[tag] dfid[fid] fid[fid] name[s]"
+msg Rlink = "size[4,val=end-&size] typ[1,val=71] tag[tag]"
+msg Tmkdir = "size[4,val=end-&size] typ[1,val=72] tag[tag] dfid[fid] name[s] mode[4] gid[nuid]"
+msg Tmkdir = "size[4,val=end-&size] typ[1,val=73] tag[tag] qid[qid]"
+msg Trenameat = "size[4,val=end-&size] typ[1,val=74] tag[tag] olddirfid[fid] oldname[s] newdirfid[fid] newname[s]"
+msg Rrenameat = "size[4,val=end-&size] typ[1,val=75] tag[tag]"
+msg Tunlinkat = "size[4,val=end-&size] typ[1,val=76] tag[tag] dirfd[fid] name[s] flags[4]"
+msg Runlinkat = "size[4,val=end-&size] typ[1,val=77] tag[tag]"