Slight changes to UDI structures and logging
[tpg/acess2.git] / Modules / UDI / main.c
1 /*
2  * Acess2 UDI Layer
3  */
4 #define DEBUG   0
5 #define VERSION ((0<<8)|1)
6 #include <acess.h>
7 #include <modules.h>
8 #include <udi.h>
9
10 // === PROTOTYPES ===
11  int    UDI_Install(char **Arguments);
12  int    UDI_LoadDriver(void *Base);
13
14 // === GLOBALS ===
15 MODULE_DEFINE(0, VERSION, UDI, UDI_Install, NULL, NULL);
16
17 // === CODE ===
18 /**
19  * \fn int UDI_Install(char **Arguments)
20  * \brief Stub intialisation routine
21  */
22 int UDI_Install(char **Arguments)
23 {
24         return 1;
25 }
26
27 /**
28  * \fn int UDI_LoadDriver(void *Base)
29  */
30 int UDI_LoadDriver(void *Base)
31 {
32         udi_init_t      *info;
33         char    *udiprops = NULL;
34          int    udiprops_size;
35          int    i;
36         // int  j;
37         
38         Log("UDI_LoadDriver: (Base=%p)", Base);
39         
40         if( Binary_FindSymbol(Base, "udi_init_info", (Uint*)&info) == 0) {
41                 Binary_Unload(Base);
42                 return 0;
43         }
44         
45         if( Binary_FindSymbol(Base, "_udiprops", (Uint*)&udiprops) == 0 ) {
46                 Warning("[UDI  ] _udiprops is not defined, this is usually bad");
47         }
48         else {
49                 Binary_FindSymbol(Base, "_udiprops_size", (Uint*)&udiprops_size);
50         }
51         
52         Log("primary_init_info = %p = {", info->primary_init_info);
53         {
54                 Log(" .mgmt_ops = %p = {", info->primary_init_info->mgmt_ops);
55                 Log("  .usage_ind_op: %p() - 0x%02x",
56                         info->primary_init_info->mgmt_ops->usage_ind_op,
57                         info->primary_init_info->mgmt_op_flags[0]
58                         );
59                 Log("  .enumerate_req_op: %p() - 0x%02x",
60                         info->primary_init_info->mgmt_ops->enumerate_req_op,
61                         info->primary_init_info->mgmt_op_flags[1]
62                         );
63                 Log("  .devmgmt_req_op: %p() - 0x%02x",
64                         info->primary_init_info->mgmt_ops->devmgmt_req_op,
65                         info->primary_init_info->mgmt_op_flags[2]
66                         );
67                 Log("  .final_cleanup_req_op: %p() - 0x%02x",
68                         info->primary_init_info->mgmt_ops->final_cleanup_req_op,
69                         info->primary_init_info->mgmt_op_flags[3]
70                         );
71                 Log(" }");
72                 Log(" .mgmt_scratch_requirement = 0x%x", info->primary_init_info->mgmt_scratch_requirement);
73                 Log(" .enumeration_attr_list_length = 0x%x", info->primary_init_info->enumeration_attr_list_length);
74                 Log(" .rdata_size = 0x%x", info->primary_init_info->rdata_size);
75                 Log(" .child_data_size = 0x%x", info->primary_init_info->child_data_size);
76                 Log(" .per_parent_paths = 0x%x", info->primary_init_info->per_parent_paths);
77         }
78         Log("}");
79         Log("secondary_init_list = %p", info->secondary_init_list);
80         Log("ops_init_list = %p", info->ops_init_list);
81         
82         for( i = 0; info->ops_init_list[i].ops_idx; i++ )
83         {
84                 Log("info->ops_init_list[%i] = {", i);
85                 Log(" .ops_idx = 0x%x", info->ops_init_list[i].ops_idx);
86                 Log(" .meta_idx = 0x%x", info->ops_init_list[i].meta_idx);
87                 Log(" .meta_ops_num = 0x%x", info->ops_init_list[i].meta_ops_num);
88                 Log(" .chan_context_size = 0x%x", info->ops_init_list[i].chan_context_size);
89                 Log(" .ops_vector = %p", info->ops_init_list[i].ops_vector);
90                 Log(" .op_flags = %p", info->ops_init_list[i].op_flags);
91                 Log("}");
92         }
93         
94         return 0;
95 }

UCC git Repository :: git.ucc.asn.au