int i;
// int j;
- Log("UDI_LoadDriver: (Base=%p)", Base);
+ Log_Debug("UDI", "UDI_LoadDriver: (Base=%p)", Base);
if( Binary_FindSymbol(Base, "udi_init_info", (Uint*)&info) == 0) {
Binary_Unload(Base);
}
if( Binary_FindSymbol(Base, "_udiprops", (Uint*)&udiprops) == 0 ) {
- Warning("[UDI ] _udiprops is not defined, this is usually bad");
+ Log_Warning("UDI", "_udiprops is not defined, this is usually bad");
}
else {
- Binary_FindSymbol(Base, "_udiprops_size", (Uint*)&udiprops_size);
- Log("udiprops = %p, udiprops_size = 0x%x", udiprops, udiprops_size);
+ Uint udiprops_end = 0;
+ int i, j, nLines;
+ char **udipropsptrs;
+
+ if( Binary_FindSymbol(Base, "_udiprops_end", (Uint*)&udiprops_end) == 0)
+ Log_Warning("UDI", "_udiprops_end is not defined");
+ Log_Debug("UDI", "udiprops_end = %p", udiprops_end);
+ udiprops_size = udiprops_end - (Uint)udiprops;
+ Log_Debug("UDI", "udiprops = %p, udiprops_size = 0x%x", udiprops, udiprops_size);
+
+ Debug_HexDump("UDI_LoadDriver", udiprops, udiprops_size);
+
+ nLines = 1;
+ for( i = 0; i < udiprops_size; i++ )
+ {
+ if( udiprops[i] == '\0' )
+ nLines ++;
+ }
+
+ Log_Debug("UDI", "nLines = %i", nLines);
+
+ udipropsptrs = malloc( sizeof(char*)*nLines );
+ udipropsptrs[0] = udiprops;
+ j = 0;
+ for( i = 0; i < udiprops_size; i++ )
+ {
+ if( udiprops[i] == '\0' ) {
+ //Log_Debug("UDI", "udipropsptrs[%i] = '%s'", j, udipropsptrs[j]);
+ udipropsptrs[j++] = &udiprops[i+1];
+ }
+ }
+ Log_Debug("UDI", "udipropsptrs[%i] = '%s'", j, udipropsptrs[j]);
+ Log_Debug("UDI", "udiprops = \"%s\"", udiprops);
}
Log(" .meta_ops_num = 0x%x", info->ops_init_list[i].meta_ops_num);
Log(" .chan_context_size = 0x%x", info->ops_init_list[i].chan_context_size);
Log(" .ops_vector = %p", info->ops_init_list[i].ops_vector);
- Log(" .op_flags = %p", info->ops_init_list[i].op_flags);
+// Log(" .op_flags = %p", info->ops_init_list[i].op_flags);
Log("}");
}