X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=KernelLand%2FModules%2FInterfaces%2FUDI%2Fudi_lib%2Fcore%2Flayout.c;h=45f601b33900b046104959911e1159b903794907;hb=3bbdda25a43af7c2c97719ff7ebd9fd2187ae272;hp=2df3178ec19f312b16d15cdf0d44b1e879515573;hpb=9140f92db8e4d25a75d12b14faaf7d557f7ec994;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Interfaces/UDI/udi_lib/core/layout.c b/KernelLand/Modules/Interfaces/UDI/udi_lib/core/layout.c index 2df3178e..45f601b3 100644 --- a/KernelLand/Modules/Interfaces/UDI/udi_lib/core/layout.c +++ b/KernelLand/Modules/Interfaces/UDI/udi_lib/core/layout.c @@ -24,10 +24,10 @@ ofs += sizeof(type); \ }while(0) -size_t _udi_marshal_step(void *buf, size_t cur_ofs, udi_layout_t **layoutp, va_list *values) +size_t _udi_marshal_step(void *buf, size_t cur_ofs, const udi_layout_t **layoutp, va_list *values) { size_t ofs = cur_ofs; - udi_layout_t *layout = *layoutp; + const udi_layout_t *layout = *layoutp; switch(*layout++) { case UDI_DL_UBIT8_T: _PUT(udi_ubit8_t, UDI_VA_UBIT8_T); break; @@ -51,16 +51,32 @@ size_t _udi_marshal_step(void *buf, size_t cur_ofs, udi_layout_t **layoutp, va_l case UDI_DL_CB: _PUT(udi_cb_t*,UDI_VA_POINTER); break; + case UDI_DL_INLINE_UNTYPED: + _PUT(void*,UDI_VA_POINTER); + break; + case UDI_DL_INLINE_DRIVER_TYPED: + _PUT(void*,UDI_VA_POINTER); + break; + case UDI_DL_MOVABLE_UNTYPED: + _PUT(void*,UDI_VA_POINTER); + break; + + case UDI_DL_INLINE_TYPED: + case UDI_DL_MOVABLE_TYPED: + _PUT(void*,UDI_VA_POINTER); + while(*layout++ != UDI_DL_END) + ; + break; default: - Log_Error("UDI", "_udi_marshal_values - Unknown layout code %i", layout[-1]); + Log_Error("UDI", "_udi_marshal_step - Unknown layout code %i", layout[-1]); return 0; } *layoutp = layout; return ofs; } -size_t _udi_marshal_values(void *buf, udi_layout_t *layout, va_list values) +size_t _udi_marshal_values(void *buf, const udi_layout_t *layout, va_list values) { size_t ofs = 0; while( *layout != UDI_DL_END )