1 #include "MsTypes.h"
2 #include "utopia_module.h"
3 #include "utopia_dapi.h"
4 #include "MsOS.h"
5 #include "utopia_private.h"
6 #include "utopia.h"
7
8 #if !defined(MSOS_TYPE_LINUX_KERNEL)
9 #include <stdio.h>
10 #endif
11
_UtopiaModule_Ioctl(void ** pInstant,MS_U32 u32Cmd,MS_U32 * pu32Args)12 MS_U32 _UtopiaModule_Ioctl(void** pInstant, MS_U32 u32Cmd, MS_U32* pu32Args)
13 {
14 switch(u32Cmd)
15 {
16 case CHANGE_DEBUG_LEVEL_BY_MODULE:
17 case HOOK_MODULE_IOCTL_BY_MODULE:
18 case HOOK_MODULE_CMD_BY_MODULE:
19 case DUMP_MODULE_HW_REGISTER:
20 case DUMP_MODULE_STRUCTURE:
21 case DUMP_INSTANT_STRUCTURE:
22 case DUMP2MEMORY_MODULE_HW_REGISTER:
23 case DUMP2MEMORY_MODULE_STRUCTURE:
24 case DUMP2MEMORY_INSTANT_STRUCTURE:
25 case SHOW_RESOURCE_STATUS_BY_MODULE:
26 ;
27 }
28 return 0;
29 }
30
31 extern char moduleNames[][40];
32 #define UTOPIA_SEM_START 0x4427U /* joe's phone number */
UTOPIARegisterToUtopia(FUtopiaOpen ModuleType)33 MS_U32 UTOPIARegisterToUtopia(FUtopiaOpen ModuleType)
34 {
35 MS_U32 u32ShmId, u32BufSize;
36 MS_VIRT vaShm;
37
38 //MsOS_Init(); // contain MsOS_SHM_Init()
39 //MsOS_SHM_Init();
40
41 // return 0 for first initiaization, 1 for repeated initialization
42 MS_U32 bInitialized = MsOS_SHM_GetId((MS_U8*)"sem_key_start", sizeof(MS_U32), &u32ShmId, &vaShm, &u32BufSize, MSOS_SHM_QUERY);
43
44 void* pUtopiaModule = NULL;
45 UtopiaModuleCreate(MODULE_UTOPIA, 0, &pUtopiaModule);
46 UtopiaModuleRegister(pUtopiaModule);
47 //TOPIA_RESOURCE* psResource = (UTOPIA_RESOURCE*)UtopiaResourceCreate("SemStartKey", sizeof(int));
48
49 if (!bInitialized)
50 {
51 if(FALSE == MsOS_SHM_GetId((MS_U8*)"sem_key_start", sizeof(MS_U32), &u32ShmId, &vaShm, &u32BufSize, MSOS_SHM_CREATE))
52 {
53 printu("[utopia shm error] something wrong in MsOS_SHM_GetId\n");
54 printu("is SHM_SIZE reached?\n");
55 printu("is MAX_SHM_CLIENT_NUM reached?\n");
56 return UTOPIA_STATUS_FAIL;
57 }
58 *(MS_U32*)vaShm = UTOPIA_SEM_START;
59 }
60 return 0;
61 }
62