summaryrefslogtreecommitdiff
path: root/lib9p/core_gen/c.py
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-21 17:30:52 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-04-21 17:30:52 -0600
commitef3adc0d857cc0df7579ee66b7d25172ca8af2e1 (patch)
tree8028357729649fcf8678c69b63342aa13c34e635 /lib9p/core_gen/c.py
parent59e1fc370371c8da876d6c2ce68794bb7f89e525 (diff)
parent1a55efa8be3769d9e31724be31db8f967813133d (diff)
Merge branch 'lukeshu/9p-misc'HEADmain
Diffstat (limited to 'lib9p/core_gen/c.py')
-rw-r--r--lib9p/core_gen/c.py21
1 files changed, 9 insertions, 12 deletions
diff --git a/lib9p/core_gen/c.py b/lib9p/core_gen/c.py
index a300404..b0ff871 100644
--- a/lib9p/core_gen/c.py
+++ b/lib9p/core_gen/c.py
@@ -79,9 +79,9 @@ def gen_c(versions: set[str], typs: list[idl.UserType]) -> str:
if not isinstance(typ, idl.Bitfield):
continue
ret += "\n"
- ret += cutil.ifdef_push(
- 1, c9util.ver_ifdef(typ.in_versions - {"unknown"})
- ) # SPECIAL (initialization)
+ ret += cutil.ifdef_push( # SPECIAL (initialization)
+ 1, c9util.ver_ifdef(typ.in_versions - {"uninitialized"})
+ )
ret += f"static const {c9util.typename(typ)} {typ.typname}_masks[{c9util.ver_enum('NUM')}] = {{\n"
verwidth = max(len(ver) for ver in versions)
for ver in sorted(versions):
@@ -123,18 +123,15 @@ def gen_c(versions: set[str], typs: list[idl.UserType]) -> str:
ret += "\n"
ret += f"const struct {c9util.ident('_ver_tentry')} {c9util.ident('_table_ver')}[{c9util.ver_enum('NUM')}] = {{\n"
rerror = next(typ for typ in typs if typ.typname == "Rerror")
+ rlerror = next(typ for typ in typs if typ.typname == "Rlerror")
+ rread = next(typ for typ in typs if typ.typname == "Rread")
for ver in sorted(versions):
- # XXX: There are good arguments that min_msg_size should be
- # something larger than rerror.min_size().
- # srv.c:respond_error() assumes that min_msg_size is
- # rerror.min_size(); if you do change min_msg_size to
- # something larger, then be sure to update respond_error().
ret += cutil.ifdef_push(1, c9util.ver_ifdef({ver}))
- min_msg_size = rerror.min_size(ver)
+ min_rerror_size = rerror.min_size(ver)
if ver == "9P2000.L": # SPECIAL (9P2000.L)
- rlerror = next(typ for typ in typs if typ.typname == "Rlerror")
- min_msg_size = rlerror.min_size(ver)
- ret += f'\t[{c9util.ver_enum(ver)}] = {{.name="{ver}", .min_msg_size={min_msg_size}}},\n'
+ min_rerror_size = rlerror.min_size(ver)
+ min_rread_size = rread.min_size(ver)
+ ret += f'\t[{c9util.ver_enum(ver)}] = {{.name="{ver}", .min_Rerror_size={min_rerror_size}, .min_Rread_size={min_rread_size}}},\n'
ret += cutil.ifdef_pop(0)
ret += "};\n"