X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FInterfaces%2FUDI%2Finclude%2Fudi_internal.h;h=62d37afc6b82e7d1b34e5f86189034c9a500dcad;hb=f99f0ec855b82620c45b4c539ef7d3832680db0d;hp=e07b8d41e186cefd5a1666a89accf78c11888f1b;hpb=26904c8992e45a3dbbafae273bef81e90d7d9692;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Interfaces/UDI/include/udi_internal.h b/KernelLand/Modules/Interfaces/UDI/include/udi_internal.h index e07b8d41..62d37afc 100644 --- a/KernelLand/Modules/Interfaces/UDI/include/udi_internal.h +++ b/KernelLand/Modules/Interfaces/UDI/include/udi_internal.h @@ -9,6 +9,7 @@ #define _UDI_INTERNAL_H_ #include +#include #define NEW(type,extra) (type*)calloc(sizeof(type)extra,1) #define NEW_wA(type,fld,cnt) NEW(type,+(sizeof(((type*)NULL)->fld[0])*cnt)) @@ -70,9 +71,11 @@ struct sUDI_PropRegion struct sUDI_MetaLang { const char *Name; + const void *MeiInfo; int nCbTypes; struct { udi_size_t Size; + udi_size_t ChainOfs; udi_layout_t *Layout; } CbTypes[]; }; @@ -107,7 +110,7 @@ struct sUDI_DriverModule tUDI_DriverModule *Next; void *Base; - udi_init_t *InitInfo; + const udi_init_t *InitInfo; // Counts of arrays in InitInfo int nCBInit; @@ -174,7 +177,7 @@ extern tUDI_MetaLang cMetaLang_Management; // --- Index to pointer translation --- extern udi_ops_init_t *UDI_int_GetOps(tUDI_DriverInstance *Inst, udi_index_t index); -extern tUDI_MetaLang *UDI_int_GetMetaLang(tUDI_DriverInstance *Inst, udi_index_t meta_idx); +extern tUDI_MetaLang *UDI_int_GetMetaLang(tUDI_DriverModule *Inst, udi_index_t meta_idx); // --- Channels --- extern udi_channel_t UDI_CreateChannel_Blank(tUDI_MetaLang *metalang); @@ -208,9 +211,17 @@ extern void UDI_int_MakeDeferredCbS(udi_cb_t *cb, udi_op_t *handler, udi_status_ // --- CBs --- extern void *udi_cb_alloc_internal(tUDI_DriverInstance *Inst, udi_ubit8_t bind_cb_idx, udi_channel_t channel); extern udi_cb_t *udi_cb_alloc_internal_v(tUDI_MetaLang *Meta, udi_index_t MetaCBNum, size_t inline_size, size_t scratch_size, udi_channel_t channel); +extern tUDI_MetaLang *UDI_int_GetCbType(udi_cb_t *gcb, udi_index_t *meta_cb_num); // --- Attribute Management --- extern udi_instance_attr_type_t udi_instance_attr_get_internal(udi_cb_t *gcb, const char *attr_name, udi_ubit32_t child_ID, void *attr_value, udi_size_t attr_length, udi_size_t *actual_length); +// --- Layout --- +extern size_t _udi_marshal_step(void *buf, size_t cur_ofs, udi_layout_t **layoutp, va_list *values); +extern size_t _udi_marshal_values(void *buf, udi_layout_t *layout, va_list values); + +// --- Buffers --- +extern udi_buf_t *_udi_buf_allocate(const void *data, udi_size_t length, udi_buf_path_t path_handle); + #endif