diff options
Diffstat (limited to 'lib9p')
-rw-r--r-- | lib9p/9p.c | 6 | ||||
-rw-r--r-- | lib9p/9p.generated.c | 132 | ||||
-rwxr-xr-x | lib9p/idl.gen | 13 | ||||
-rw-r--r-- | lib9p/include/lib9p/9p.generated.h | 76 | ||||
-rw-r--r-- | lib9p/include/lib9p/9p.h | 12 | ||||
-rw-r--r-- | lib9p/srv.c | 14 |
6 files changed, 136 insertions, 117 deletions
@@ -17,7 +17,7 @@ void lib9p_ctx_clear_error(struct lib9p_ctx *ctx) { assert(ctx); -#ifdef CONFIG_9P_ENABLE_9P2000_u +#if CONFIG_9P_ENABLE_9P2000_u ctx->err_num = 0; #endif ctx->err_msg[0] = '\0'; @@ -34,7 +34,7 @@ int lib9p_error(struct lib9p_ctx *ctx, uint32_t linux_errno, char const *msg) { strncpy(ctx->err_msg, msg, sizeof(ctx->err_msg)); ctx->err_msg[sizeof(ctx->err_msg)-1] = '\0'; -#ifdef CONFIG_9P_ENABLE_9P2000_u +#if CONFIG_9P_ENABLE_9P2000_u ctx->err_num = linux_errno; #else (void)(linux_errno); @@ -55,7 +55,7 @@ int lib9p_errorf(struct lib9p_ctx *ctx, uint32_t linux_errno, char const *fmt, . if ((size_t)(n+1) < sizeof(ctx->err_msg)) memset(&ctx->err_msg[n+1], 0, sizeof(ctx->err_msg)-(n+1)); -#ifdef CONFIG_9P_ENABLE_9P2000_u +#if CONFIG_9P_ENABLE_9P2000_u ctx->err_num = linux_errno; #else (void)(linux_errno); diff --git a/lib9p/9p.generated.c b/lib9p/9p.generated.c index 1a00f10..536063a 100644 --- a/lib9p/9p.generated.c +++ b/lib9p/9p.generated.c @@ -15,15 +15,15 @@ static const char *version_strs[LIB9P_VER_NUM] = { [LIB9P_VER_unknown] = "unknown", -#if defined(CONFIG_9P_ENABLE_9P2000) +#if CONFIG_9P_ENABLE_9P2000 [LIB9P_VER_9P2000] = "9P2000", -#endif /* defined(CONFIG_9P_ENABLE_9P2000) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 */ +#if CONFIG_9P_ENABLE_9P2000_e [LIB9P_VER_9P2000_e] = "9P2000.e", -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#endif /* CONFIG_9P_ENABLE_9P2000_e */ +#if CONFIG_9P_ENABLE_9P2000_u [LIB9P_VER_9P2000_u] = "9P2000.u", -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; const char *lib9p_version_str(enum lib9p_version ver) { @@ -67,7 +67,7 @@ static ALWAYS_INLINE bool _validate_list(struct _validate_ctx *ctx, #define validate_4(ctx) _validate_size_net(ctx, 4) #define validate_8(ctx) _validate_size_net(ctx, 8) -#if defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u static ALWAYS_INLINE bool validate_tag(struct _validate_ctx *ctx) { return validate_2(ctx); } @@ -97,15 +97,15 @@ static ALWAYS_INLINE bool validate_s(struct _validate_ctx *ctx) { } static const lib9p_dm_t dm_masks[LIB9P_VER_NUM] = { -#if defined(CONFIG_9P_ENABLE_9P2000) +#if CONFIG_9P_ENABLE_9P2000 [LIB9P_VER_9P2000] = 0b11101100000000000000000111111111, -#endif /* defined(CONFIG_9P_ENABLE_9P2000) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 */ +#if CONFIG_9P_ENABLE_9P2000_e [LIB9P_VER_9P2000_e] = 0b11101100000000000000000111111111, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#endif /* CONFIG_9P_ENABLE_9P2000_e */ +#if CONFIG_9P_ENABLE_9P2000_u [LIB9P_VER_9P2000_u] = 0b11101100101111000000000111111111, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; static ALWAYS_INLINE bool validate_dm(struct _validate_ctx *ctx) { if (validate_4(ctx)) @@ -118,15 +118,15 @@ static ALWAYS_INLINE bool validate_dm(struct _validate_ctx *ctx) { } static const lib9p_qt_t qt_masks[LIB9P_VER_NUM] = { -#if defined(CONFIG_9P_ENABLE_9P2000) +#if CONFIG_9P_ENABLE_9P2000 [LIB9P_VER_9P2000] = 0b11101100, -#endif /* defined(CONFIG_9P_ENABLE_9P2000) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 */ +#if CONFIG_9P_ENABLE_9P2000_e [LIB9P_VER_9P2000_e] = 0b11101100, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#endif /* CONFIG_9P_ENABLE_9P2000_e */ +#if CONFIG_9P_ENABLE_9P2000_u [LIB9P_VER_9P2000_u] = 0b11101110, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; static ALWAYS_INLINE bool validate_qt(struct _validate_ctx *ctx) { if (validate_1(ctx)) @@ -162,27 +162,27 @@ static ALWAYS_INLINE bool validate_stat(struct _validate_ctx *ctx) { || validate_s(ctx) || validate_s(ctx) || validate_s(ctx) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && validate_s(ctx) ) || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && validate_4(ctx) ) || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && validate_4(ctx) ) || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && validate_4(ctx) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ uint32_t exp = ctx->net_offset - _kern_type_offset; (((uint32_t)stat_size) != exp) && lib9p_errorf(ctx->ctx, LINUX_EBADMSG, "stat_size value is wrong (actual:%"PRIu32" != correct:%"PRIu32")", (uint32_t)stat_size, exp); }) ; } static const lib9p_o_t o_masks[LIB9P_VER_NUM] = { -#if defined(CONFIG_9P_ENABLE_9P2000) +#if CONFIG_9P_ENABLE_9P2000 [LIB9P_VER_9P2000] = 0b01010011, -#endif /* defined(CONFIG_9P_ENABLE_9P2000) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 */ +#if CONFIG_9P_ENABLE_9P2000_e [LIB9P_VER_9P2000_e] = 0b01010011, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#endif /* CONFIG_9P_ENABLE_9P2000_e */ +#if CONFIG_9P_ENABLE_9P2000_u [LIB9P_VER_9P2000_u] = 0b01010011, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; static ALWAYS_INLINE bool validate_o(struct _validate_ctx *ctx) { if (validate_1(ctx)) @@ -239,9 +239,9 @@ static FLATTEN bool validate_Tauth(struct _validate_ctx *ctx) { || validate_fid(ctx) || validate_s(ctx) || validate_s(ctx) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && validate_4(ctx) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ uint32_t exp = ctx->net_offset - _size_offset; (((uint32_t)size) != exp) && lib9p_errorf(ctx->ctx, LINUX_EBADMSG, "size value is wrong (actual:%"PRIu32" != correct:%"PRIu32")", (uint32_t)size, exp); }) || ({ uint32_t exp = 102; (((uint32_t)typ) != exp) && @@ -277,9 +277,9 @@ static FLATTEN bool validate_Tattach(struct _validate_ctx *ctx) { || validate_fid(ctx) || validate_s(ctx) || validate_s(ctx) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && validate_4(ctx) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ uint32_t exp = ctx->net_offset - _size_offset; (((uint32_t)size) != exp) && lib9p_errorf(ctx->ctx, LINUX_EBADMSG, "size value is wrong (actual:%"PRIu32" != correct:%"PRIu32")", (uint32_t)size, exp); }) || ({ uint32_t exp = 104; (((uint32_t)typ) != exp) && @@ -312,9 +312,9 @@ static FLATTEN bool validate_Rerror(struct _validate_ctx *ctx) { || (validate_1(ctx) || ({ typ = decode_u8le(&ctx->net_bytes[ctx->net_offset-1]); false; })) || validate_tag(ctx) || validate_s(ctx) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && validate_4(ctx) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ uint32_t exp = ctx->net_offset - _size_offset; (((uint32_t)size) != exp) && lib9p_errorf(ctx->ctx, LINUX_EBADMSG, "size value is wrong (actual:%"PRIu32" != correct:%"PRIu32")", (uint32_t)size, exp); }) || ({ uint32_t exp = 107; (((uint32_t)typ) != exp) && @@ -669,8 +669,8 @@ static FLATTEN bool validate_Rwstat(struct _validate_ctx *ctx) { ; } -#endif /* defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */ +#if CONFIG_9P_ENABLE_9P2000_e static FLATTEN bool validate_Tsession(struct _validate_ctx *ctx) { uint32_t size; uint8_t typ; @@ -770,7 +770,7 @@ static FLATTEN bool validate_Rswrite(struct _validate_ctx *ctx) { lib9p_errorf(ctx->ctx, LINUX_EBADMSG, "typ value is wrong (actual:%"PRIu32" != correct:%"PRIu32")", (uint32_t)typ, exp); }) ; } -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ +#endif /* CONFIG_9P_ENABLE_9P2000_e */ /* unmarshal_* ****************************************************************/ @@ -794,7 +794,7 @@ static ALWAYS_INLINE void unmarshal_8(struct _unmarshal_ctx *ctx, uint64_t *out) ctx->net_offset += 8; } -#if defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u static ALWAYS_INLINE void unmarshal_tag(struct _unmarshal_ctx *ctx, lib9p_tag_t *out) { unmarshal_2(ctx, (uint16_t *)out); } @@ -852,12 +852,12 @@ static ALWAYS_INLINE void unmarshal_stat(struct _unmarshal_ctx *ctx, struct lib9 unmarshal_s(ctx, &out->file_owner_uid); unmarshal_s(ctx, &out->file_owner_gid); unmarshal_s(ctx, &out->file_last_modified_uid); -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u if ( (ctx->ctx->version==LIB9P_VER_9P2000_u) ) unmarshal_s(ctx, &out->file_extension); if ( (ctx->ctx->version==LIB9P_VER_9P2000_u) ) unmarshal_4(ctx, &out->file_owner_n_uid); if ( (ctx->ctx->version==LIB9P_VER_9P2000_u) ) unmarshal_4(ctx, &out->file_owner_n_gid); if ( (ctx->ctx->version==LIB9P_VER_9P2000_u) ) unmarshal_4(ctx, &out->file_last_modified_n_uid); -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ } static ALWAYS_INLINE void unmarshal_o(struct _unmarshal_ctx *ctx, lib9p_o_t *out) { @@ -890,9 +890,9 @@ static FLATTEN void unmarshal_Tauth(struct _unmarshal_ctx *ctx, struct lib9p_msg unmarshal_fid(ctx, &out->afid); unmarshal_s(ctx, &out->uname); unmarshal_s(ctx, &out->aname); -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u if ( (ctx->ctx->version==LIB9P_VER_9P2000_u) ) unmarshal_4(ctx, &out->n_uname); -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ } static FLATTEN void unmarshal_Rauth(struct _unmarshal_ctx *ctx, struct lib9p_msg_Rauth *out) { @@ -912,9 +912,9 @@ static FLATTEN void unmarshal_Tattach(struct _unmarshal_ctx *ctx, struct lib9p_m unmarshal_fid(ctx, &out->afid); unmarshal_s(ctx, &out->uname); unmarshal_s(ctx, &out->aname); -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u if ( (ctx->ctx->version==LIB9P_VER_9P2000_u) ) unmarshal_4(ctx, &out->n_uname); -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ } static FLATTEN void unmarshal_Rattach(struct _unmarshal_ctx *ctx, struct lib9p_msg_Rattach *out) { @@ -931,9 +931,9 @@ static FLATTEN void unmarshal_Rerror(struct _unmarshal_ctx *ctx, struct lib9p_ms ctx->net_offset += 1; unmarshal_tag(ctx, &out->tag); unmarshal_s(ctx, &out->ename); -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u if ( (ctx->ctx->version==LIB9P_VER_9P2000_u) ) unmarshal_4(ctx, &out->errno); -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ } static FLATTEN void unmarshal_Tflush(struct _unmarshal_ctx *ctx, struct lib9p_msg_Tflush *out) { @@ -1115,8 +1115,8 @@ static FLATTEN void unmarshal_Rwstat(struct _unmarshal_ctx *ctx, struct lib9p_ms unmarshal_tag(ctx, &out->tag); } -#endif /* defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */ +#if CONFIG_9P_ENABLE_9P2000_e static FLATTEN void unmarshal_Tsession(struct _unmarshal_ctx *ctx, struct lib9p_msg_Tsession *out) { memset(out, 0, sizeof(*out)); ctx->net_offset += 4; @@ -1174,7 +1174,7 @@ static FLATTEN void unmarshal_Rswrite(struct _unmarshal_ctx *ctx, struct lib9p_m unmarshal_tag(ctx, &out->tag); unmarshal_4(ctx, &out->count); } -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ +#endif /* CONFIG_9P_ENABLE_9P2000_e */ /* marshal_* ******************************************************************/ @@ -1218,7 +1218,7 @@ static ALWAYS_INLINE bool marshal_8(struct _marshal_ctx *ctx, uint64_t *val) { return false; } -#if defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u static ALWAYS_INLINE bool marshal_tag(struct _marshal_ctx *ctx, lib9p_tag_t *val) { return marshal_2(ctx, (uint16_t *)val); } @@ -1281,12 +1281,12 @@ static ALWAYS_INLINE bool marshal_stat(struct _marshal_ctx *ctx, struct lib9p_st || marshal_s(ctx, &val->file_owner_uid) || marshal_s(ctx, &val->file_owner_gid) || marshal_s(ctx, &val->file_last_modified_uid) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && marshal_s(ctx, &val->file_extension) ) || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && marshal_4(ctx, &val->file_owner_n_uid) ) || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && marshal_4(ctx, &val->file_owner_n_gid) ) || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && marshal_4(ctx, &val->file_last_modified_n_uid) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ encode_u16le(ctx->net_offset - _kern_type_offset, &ctx->net_bytes[_stat_size_offset]); false; }) ; } @@ -1334,9 +1334,9 @@ static FLATTEN bool marshal_Tauth(struct _marshal_ctx *ctx, struct lib9p_msg_Tau || marshal_fid(ctx, &val->afid) || marshal_s(ctx, &val->uname) || marshal_s(ctx, &val->aname) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && marshal_4(ctx, &val->n_uname) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ encode_u32le(ctx->net_offset - _size_offset, &ctx->net_bytes[_size_offset]); false; }) || ({ encode_u8le(102, &ctx->net_bytes[_typ_offset]); false; }) ; @@ -1366,9 +1366,9 @@ static FLATTEN bool marshal_Tattach(struct _marshal_ctx *ctx, struct lib9p_msg_T || marshal_fid(ctx, &val->afid) || marshal_s(ctx, &val->uname) || marshal_s(ctx, &val->aname) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && marshal_4(ctx, &val->n_uname) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ encode_u32le(ctx->net_offset - _size_offset, &ctx->net_bytes[_size_offset]); false; }) || ({ encode_u8le(104, &ctx->net_bytes[_typ_offset]); false; }) ; @@ -1395,9 +1395,9 @@ static FLATTEN bool marshal_Rerror(struct _marshal_ctx *ctx, struct lib9p_msg_Re || ({ _typ_offset = ctx->net_offset; ({ ctx->net_offset += 1; false; }); }) || marshal_tag(ctx, &val->tag) || marshal_s(ctx, &val->ename) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u || ( (ctx->ctx->version==LIB9P_VER_9P2000_u) && marshal_4(ctx, &val->errno) ) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ || ({ encode_u32le(ctx->net_offset - _size_offset, &ctx->net_bytes[_size_offset]); false; }) || ({ encode_u8le(107, &ctx->net_bytes[_typ_offset]); false; }) ; @@ -1688,8 +1688,8 @@ static FLATTEN bool marshal_Rwstat(struct _marshal_ctx *ctx, struct lib9p_msg_Rw ; } -#endif /* defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */ +#if CONFIG_9P_ENABLE_9P2000_e static FLATTEN bool marshal_Tsession(struct _marshal_ctx *ctx, struct lib9p_msg_Tsession *val) { uint32_t _size_offset; uint32_t _typ_offset; @@ -1777,7 +1777,7 @@ static FLATTEN bool marshal_Rswrite(struct _marshal_ctx *ctx, struct lib9p_msg_R || ({ encode_u8le(155, &ctx->net_bytes[_typ_offset]); false; }) ; } -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ +#endif /* CONFIG_9P_ENABLE_9P2000_e */ /* tables / exports ***********************************************************/ @@ -2051,7 +2051,7 @@ struct _table_version _lib9p_versions[LIB9P_VER_NUM] = { _NONMSG(0xFE), _NONMSG(0xFF), }}, -#if defined(CONFIG_9P_ENABLE_9P2000) +#if CONFIG_9P_ENABLE_9P2000 [LIB9P_VER_9P2000] = { .msgs = { _NONMSG(0x00), _NONMSG(0x01), @@ -2310,8 +2310,8 @@ struct _table_version _lib9p_versions[LIB9P_VER_NUM] = { _NONMSG(0xFE), _NONMSG(0xFF), }}, -#endif /* defined(CONFIG_9P_ENABLE_9P2000) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 */ +#if CONFIG_9P_ENABLE_9P2000_e [LIB9P_VER_9P2000_e] = { .msgs = { _NONMSG(0x00), _NONMSG(0x01), @@ -2570,8 +2570,8 @@ struct _table_version _lib9p_versions[LIB9P_VER_NUM] = { _NONMSG(0xFE), _NONMSG(0xFF), }}, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#endif /* CONFIG_9P_ENABLE_9P2000_e */ +#if CONFIG_9P_ENABLE_9P2000_u [LIB9P_VER_9P2000_u] = { .msgs = { _NONMSG(0x00), _NONMSG(0x01), @@ -2830,7 +2830,7 @@ struct _table_version _lib9p_versions[LIB9P_VER_NUM] = { _NONMSG(0xFE), _NONMSG(0xFF), }}, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; FLATTEN bool _lib9p_validate_stat(struct _validate_ctx *ctx) { diff --git a/lib9p/idl.gen b/lib9p/idl.gen index 3be1d7e..e423196 100755 --- a/lib9p/idl.gen +++ b/lib9p/idl.gen @@ -463,7 +463,7 @@ def c_ver_enum(ver: str) -> str: def c_ver_ifdef(versions: set[str]) -> str: return " || ".join( - f"defined(CONFIG_9P_ENABLE_{v.replace('.', '_')})" for v in sorted(versions) + f"CONFIG_9P_ENABLE_{v.replace('.', '_')}" for v in sorted(versions) ) @@ -545,6 +545,17 @@ def gen_h(versions: set[str], typs: list[Type]) -> str: """ ret += f""" +/* config *********************************************************************/ + +#include "config.h" +""" + for ver in sorted(versions): + ret += "\n" + ret += f"#ifndef {c_ver_ifdef({ver})}\n" + ret += f"\t#error config.h must define {c_ver_ifdef({ver})}\n" + ret += "#endif\n" + + ret += f""" /* versions *******************************************************************/ enum {idprefix}version {{ diff --git a/lib9p/include/lib9p/9p.generated.h b/lib9p/include/lib9p/9p.generated.h index feca8c9..25aacfe 100644 --- a/lib9p/include/lib9p/9p.generated.h +++ b/lib9p/include/lib9p/9p.generated.h @@ -6,19 +6,35 @@ #include <stdint.h> /* for uint{n}_t types */ +/* config *********************************************************************/ + +#include "config.h" + +#ifndef CONFIG_9P_ENABLE_9P2000 + #error config.h must define CONFIG_9P_ENABLE_9P2000 +#endif + +#ifndef CONFIG_9P_ENABLE_9P2000_e + #error config.h must define CONFIG_9P_ENABLE_9P2000_e +#endif + +#ifndef CONFIG_9P_ENABLE_9P2000_u + #error config.h must define CONFIG_9P_ENABLE_9P2000_u +#endif + /* versions *******************************************************************/ enum lib9p_version { LIB9P_VER_unknown = 0, /* "unknown" */ -#if defined(CONFIG_9P_ENABLE_9P2000) +#if CONFIG_9P_ENABLE_9P2000 LIB9P_VER_9P2000, /* "9P2000" */ -#endif /* defined(CONFIG_9P_ENABLE_9P2000) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 */ +#if CONFIG_9P_ENABLE_9P2000_e LIB9P_VER_9P2000_e, /* "9P2000.e" */ -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#endif /* CONFIG_9P_ENABLE_9P2000_e */ +#if CONFIG_9P_ENABLE_9P2000_u LIB9P_VER_9P2000_u, /* "9P2000.u" */ -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ LIB9P_VER_NUM, }; @@ -26,7 +42,7 @@ const char *lib9p_version_str(enum lib9p_version); /* non-message types **********************************************************/ -#if defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u typedef uint16_t lib9p_tag_t; typedef uint32_t lib9p_fid_t; @@ -51,16 +67,16 @@ typedef uint32_t lib9p_dm_t; #define LIB9P_DM_TMP ((lib9p_dm_t)(1<<26)) /* unused ((lib9p_dm_t)(1<<25)) */ /* unused ((lib9p_dm_t)(1<<24)) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u # define LIB9P_DM_DEVICE ((lib9p_dm_t)(1<<23)) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ /* unused ((lib9p_dm_t)(1<<22)) */ -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u # define LIB9P_DM_NAMEDPIPE ((lib9p_dm_t)(1<<21)) # define LIB9P_DM_SOCKET ((lib9p_dm_t)(1<<20)) # define LIB9P_DM_SETUID ((lib9p_dm_t)(1<<19)) # define LIB9P_DM_SETGID ((lib9p_dm_t)(1<<18)) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ /* unused ((lib9p_dm_t)(1<<17)) */ /* unused ((lib9p_dm_t)(1<<16)) */ /* unused ((lib9p_dm_t)(1<<15)) */ @@ -90,9 +106,9 @@ typedef uint8_t lib9p_qt_t; #define _LIB9P_QT_PLAN9_MOUNT ((lib9p_qt_t)(1<<4)) #define LIB9P_QT_AUTH ((lib9p_qt_t)(1<<3)) #define LIB9P_QT_TMP ((lib9p_qt_t)(1<<2)) -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u # define LIB9P_QT_SYMLINK ((lib9p_qt_t)(1<<1)) -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ /* unused ((lib9p_qt_t)(1<<0)) */ #define LIB9P_QT_FILE ((lib9p_qt_t)(0)) @@ -115,12 +131,12 @@ struct lib9p_stat { struct lib9p_s file_owner_uid; struct lib9p_s file_owner_gid; struct lib9p_s file_last_modified_uid; -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u struct lib9p_s file_extension; uint32_t file_owner_n_uid; uint32_t file_owner_n_gid; uint32_t file_last_modified_n_uid; -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; typedef uint8_t lib9p_o_t; @@ -140,12 +156,12 @@ typedef uint8_t lib9p_o_t; #define LIB9P_O_EXEC ((lib9p_o_t)(3)) #define LIB9P_O_MODE_MASK ((lib9p_o_t)(0b00000011)) #define LIB9P_O_FLAG_MASK ((lib9p_o_t)(0b11111100)) -#endif /* defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */ /* messages *******************************************************************/ enum lib9p_msg_type { /* uint8_t */ -#if defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u LIB9P_TYP_Tversion = 100, LIB9P_TYP_Rversion = 101, LIB9P_TYP_Tauth = 102, @@ -173,18 +189,18 @@ enum lib9p_msg_type { /* uint8_t */ LIB9P_TYP_Rstat = 125, LIB9P_TYP_Twstat = 126, LIB9P_TYP_Rwstat = 127, -#endif /* defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */ +#if CONFIG_9P_ENABLE_9P2000_e LIB9P_TYP_Tsession = 150, LIB9P_TYP_Rsession = 151, LIB9P_TYP_Tsread = 152, LIB9P_TYP_Rsread = 153, LIB9P_TYP_Tswrite = 154, LIB9P_TYP_Rswrite = 155, -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ +#endif /* CONFIG_9P_ENABLE_9P2000_e */ }; -#if defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u struct lib9p_msg_Tversion { lib9p_tag_t tag; uint32_t max_msg_size; @@ -202,9 +218,9 @@ struct lib9p_msg_Tauth { lib9p_fid_t afid; struct lib9p_s uname; struct lib9p_s aname; -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u uint32_t n_uname; -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; struct lib9p_msg_Rauth { @@ -218,9 +234,9 @@ struct lib9p_msg_Tattach { lib9p_fid_t afid; struct lib9p_s uname; struct lib9p_s aname; -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u uint32_t n_uname; -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; struct lib9p_msg_Rattach { @@ -231,9 +247,9 @@ struct lib9p_msg_Rattach { struct lib9p_msg_Rerror { lib9p_tag_t tag; struct lib9p_s ename; -#if defined(CONFIG_9P_ENABLE_9P2000_u) +#if CONFIG_9P_ENABLE_9P2000_u uint32_t errno; -#endif /* defined(CONFIG_9P_ENABLE_9P2000_u) */ +#endif /* CONFIG_9P_ENABLE_9P2000_u */ }; struct lib9p_msg_Tflush { @@ -347,8 +363,8 @@ struct lib9p_msg_Rwstat { lib9p_tag_t tag; }; -#endif /* defined(CONFIG_9P_ENABLE_9P2000) || defined(CONFIG_9P_ENABLE_9P2000_e) || defined(CONFIG_9P_ENABLE_9P2000_u) */ -#if defined(CONFIG_9P_ENABLE_9P2000_e) +#endif /* CONFIG_9P_ENABLE_9P2000 || CONFIG_9P_ENABLE_9P2000_e || CONFIG_9P_ENABLE_9P2000_u */ +#if CONFIG_9P_ENABLE_9P2000_e struct lib9p_msg_Tsession { lib9p_tag_t tag; uint64_t key; @@ -382,4 +398,4 @@ struct lib9p_msg_Rswrite { lib9p_tag_t tag; uint32_t count; }; -#endif /* defined(CONFIG_9P_ENABLE_9P2000_e) */ +#endif /* CONFIG_9P_ENABLE_9P2000_e */ diff --git a/lib9p/include/lib9p/9p.h b/lib9p/include/lib9p/9p.h index 9d22354..fb1f97d 100644 --- a/lib9p/include/lib9p/9p.h +++ b/lib9p/include/lib9p/9p.h @@ -13,21 +13,13 @@ #include <libmisc/assert.h> #include <lib9p/linux-errno.h> - -/* configuration **************************************************************/ - -#include "config.h" +#include <lib9p/9p.generated.h> #ifndef CONFIG_9P_MAX_ERR_SIZE #error config.h must define CONFIG_9P_MAX_ERR_SIZE #endif -#ifndef CONFIG_9P_ENABLE_9P2000 - #define CONFIG_9P_ENABLE_9P2000 -#endif - -/* protocol definitions *******************************************************/ -#include <lib9p/9p.generated.h> /* *after* config.h */ +/******************************************************************************/ #define LIB9P_NOTAG ((uint16_t)~0U) #define LIB9P_NOFID ((uint32_t)~0U) diff --git a/lib9p/srv.c b/lib9p/srv.c index 608d470..5bec0d6 100644 --- a/lib9p/srv.c +++ b/lib9p/srv.c @@ -134,7 +134,7 @@ static uint32_t rerror_overhead_for_version(enum lib9p_version version, } static void respond_error(struct _lib9p_srv_req *req) { -#ifdef CONFIG_9P_ENABLE_9P2000_u +#if CONFIG_9P_ENABLE_9P2000_u assert(req->ctx.basectx.err_num); #endif assert(req->ctx.basectx.err_msg[0]); @@ -147,7 +147,7 @@ static void respond_error(struct _lib9p_srv_req *req) { CONFIG_9P_MAX_ERR_SIZE), .utf8 = req->ctx.basectx.err_msg, }, -#ifdef CONFIG_9P_ENABLE_9P2000_u +#if CONFIG_9P_ENABLE_9P2000_u .errno = req->ctx.basectx.err_num, #endif }; @@ -334,7 +334,7 @@ _HANDLER_PROTO(clunk); _HANDLER_PROTO(remove); _HANDLER_PROTO(stat); _HANDLER_PROTO(wstat); -#ifdef CONFIG_9P_ENABLE_9P2000_e +#if CONFIG_9P_ENABLE_9P2000_e _HANDLER_PROTO(session); _HANDLER_PROTO(sread); _HANDLER_PROTO(swrite); @@ -356,7 +356,7 @@ static tmessage_handler tmessage_handlers[0x100] = { [LIB9P_TYP_Tremove] = (tmessage_handler)handle_Tremove, [LIB9P_TYP_Tstat] = (tmessage_handler)handle_Tstat, [LIB9P_TYP_Twstat] = (tmessage_handler)handle_Twstat, -#ifdef CONFIG_9P_ENABLE_9P2000_e +#if CONFIG_9P_ENABLE_9P2000_e [LIB9P_TYP_Tsession] = (tmessage_handler)handle_Tsession, [LIB9P_TYP_Tsread] = (tmessage_handler)handle_Tsread, [LIB9P_TYP_Tswrite] = (tmessage_handler)handle_Tswrite, @@ -450,11 +450,11 @@ static void handle_Tversion(struct _lib9p_srv_req *ctx, '0' <= req->version.utf8[5] && req->version.utf8[5] <= '9' && (req->version.utf8[6] == '\0' || req->version.utf8[6] == '.')) { version = LIB9P_VER_9P2000; -#ifdef CONFIG_9P_ENABLE_9P2000_u +#if CONFIG_9P_ENABLE_9P2000_u if (strcmp(&req->version.utf8[6], ".u") == 0) version = LIB9P_VER_9P2000_u; #endif -#ifdef CONFIG_9P_ENABLE_9P2000_e +#if CONFIG_9P_ENABLE_9P2000_e if (strcmp(&req->version.utf8[6], ".e") == 0) version = LIB9P_VER_9P2000_e; #endif @@ -943,7 +943,7 @@ static void handle_Twstat(struct _lib9p_srv_req *ctx, LINUX_EOPNOTSUPP, "wstat not (yet?) implemented"); } -#ifdef CONFIG_9P_ENABLE_9P2000_e +#if CONFIG_9P_ENABLE_9P2000_e static void handle_Tsession(struct _lib9p_srv_req *ctx, struct lib9p_msg_Tsession *req, struct lib9p_msg_Rsession *resp) { |