📄 resourcelock.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4345
TTL F:\wm520\PLATFORM\intel_dbpxa27x\Public\CSP\ARM\INTEL\PXA27X\XLLP\SOURCE\.\resourcelock.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
00000 AREA |.bss|, NOINIT
|service_initialized| % 0x4
EXPORT |RM_Dump_LockDB|
EXPORT |??_C@_0EO@COENNFII@RM_Dump_LockDB?3?5Lock?$FL?$CF03d?$FN?3?5rid?$DN@| [ DATA ] ; `string'
EXPORT |??_C@_0DG@LCGEAOEE@RM_Dump_LockDB?3?5Total?5entries?$DN?$CFd@| [ DATA ] ; `string'
IMPORT |xllp_LogMessage|
00004 AREA |.bss|, NOINIT
|LockDB| % 0x45c
; File f:\wm520\platform\intel_dbpxa27x\public\csp\arm\intel\pxa27x\xllp\source\resourcelock.c
00000 AREA |.text| { |RM_Dump_LockDB| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$RM_Dump_LockDB|, PDATA, SELECTION=5, ASSOC=|.text| { |RM_Dump_LockDB| } ; comdat associative
|$T1474| DCD |$L1473|
DCD 0x40002202
00000 AREA |.rdata| { |??_C@_0DG@LCGEAOEE@RM_Dump_LockDB?3?5Total?5entries?$DN?$CFd@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DG@LCGEAOEE@RM_Dump_LockDB?3?5Total?5entries?$DN?$CFd@| DCB "RM_D"
DCB "ump_LockDB: Total entries=%d (%d uninitialized)", 0xd, 0xa
DCB 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0EO@COENNFII@RM_Dump_LockDB?3?5Lock?$FL?$CF03d?$FN?3?5rid?$DN@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EO@COENNFII@RM_Dump_LockDB?3?5Lock?$FL?$CF03d?$FN?3?5rid?$DN@| DCB "R"
DCB "M_Dump_LockDB: Lock[%03d]: rid=%03u, lock=x%08x, owner=x"
DCB "%08x, own_count=%u", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |RM_Dump_LockDB| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |RM_Dump_LockDB| PROC
; 58 : {
00000 |$L1473|
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd008 sub sp, sp, #8
00008 |$M1471|
; 59 : int i;
; 60 : int uninit_count = 0;
00008 e59f5074 ldr r5, [pc, #0x74]
0000c e3a06000 mov r6, #0
; 61 : for (i = 0; i < DIMENSION(LockDB); i++)
00010 e3a04000 mov r4, #0
00014 |$L1264|
; 62 : {
; 63 : if ((LockDB[i].lock != 0) || (LockDB[i].owner != 0))
00014 e5953000 ldr r3, [r5]
00018 e3530000 cmp r3, #0
0001c 05953004 ldreq r3, [r5, #4]
00020 03530000 cmpeq r3, #0
; 64 : LOGMSG(("RM_Dump_LockDB: Lock[%03d]: rid=%03u, lock=x%08x, owner=x%08x, own_count=%u\r\n",
; 65 : i, Index2RID(i), LockDB[i].lock, LockDB[i].owner, LockDB[i].owner_count));
; 66 : else
; 67 : uninit_count++;
00024 02866001 addeq r6, r6, #1
00028 0a000008 beq |$L1265|
0002c e595e008 ldr lr, [r5, #8]
00030 e5950004 ldr r0, [r5, #4]
00034 e5953000 ldr r3, [r5]
00038 e2842001 add r2, r4, #1
0003c e58d0000 str r0, [sp]
00040 e59f0038 ldr r0, [pc, #0x38]
00044 e1a01004 mov r1, r4
00048 e58de004 str lr, [sp, #4]
0004c eb000000 bl xllp_LogMessage
00050 |$L1265|
00050 e2844001 add r4, r4, #1
00054 e354005d cmp r4, #0x5D
00058 e285500c add r5, r5, #0xC
0005c 3affffec bcc |$L1264|
; 68 : }
; 69 : LOGMSG(("RM_Dump_LockDB: Total entries=%d (%d uninitialized)\r\n", i, uninit_count));
00060 e59f0014 ldr r0, [pc, #0x14]
00064 e1a02006 mov r2, r6
00068 e1a01004 mov r1, r4
0006c eb000000 bl xllp_LogMessage
; 70 : } // RM_Dump_LockDB
00070 e28dd008 add sp, sp, #8
00074 e8bd4070 ldmia sp!, {r4 - r6, lr}
00078 e12fff1e bx lr
0007c |$L1476|
0007c 00000000 DCD |??_C@_0DG@LCGEAOEE@RM_Dump_LockDB?3?5Total?5entries?$DN?$CFd@|
00080 00000000 DCD |??_C@_0EO@COENNFII@RM_Dump_LockDB?3?5Lock?$FL?$CF03d?$FN?3?5rid?$DN@|
00084 00000000 DCD |LockDB|
00088 |$M1472|
ENDP ; |RM_Dump_LockDB|
EXPORT |RM_InitService|
00000 AREA |.text| { |RM_InitService| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$RM_InitService|, PDATA, SELECTION=5, ASSOC=|.text| { |RM_InitService| } ; comdat associative
|$T1484| DCD |$L1483|
DCD 0x40000600
; Function compile flags: /Ogsy
00000 AREA |.text| { |RM_InitService| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |RM_InitService| PROC
; 73 : {
00000 |$L1483|
00000 |$M1481|
; 74 : if (service_initialized)
; 75 : {
; 76 : // No module global init needed - each lock is initialized the first time it is locked
; 77 : }
; 78 : #if ENABLE_DEBUG_MESSAGES
; 79 : RM_Dump_LockDB();
; 80 : #endif
; 81 : service_initialized = 1;
00000 e59f300c ldr r3, [pc, #0xC]
00004 e3a02001 mov r2, #1
; 82 : return(RM_STATUS_SUCCESS);
00008 e3a00000 mov r0, #0
0000c e5832000 str r2, [r3]
; 83 : } // RM_InitService
00010 e12fff1e bx lr
00014 |$L1486|
00014 00000000 DCD |service_initialized|
00018 |$M1482|
ENDP ; |RM_InitService|
EXPORT |RM_DeInitService|
EXPORT |??_C@_0DB@NKHAILA@RM_DeInitService?3?5DeInit?5while?5n@| [ DATA ] ; `string'
EXPORT |??_C@_0EE@JGMKFMGG@RM_DeInitService?3?5Unable?5to?5acqu@| [ DATA ] ; `string'
IMPORT |OSDS_DestroyLock|
IMPORT |OSDS_AcquireLock|
00000 AREA |.text| { |RM_DeInitService| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$RM_DeInitService|, PDATA, SELECTION=5, ASSOC=|.text| { |RM_DeInitService| } ; comdat associative
|$T1499| DCD |$L1498|
DCD 0x40002a01
00000 AREA |.rdata| { |??_C@_0EE@JGMKFMGG@RM_DeInitService?3?5Unable?5to?5acqu@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EE@JGMKFMGG@RM_DeInitService?3?5Unable?5to?5acqu@| DCB "RM_DeInit"
DCB "Service: Unable to acquire lock %u (x%08x) (error=x%08x)"
DCB 0xd, 0xa, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_0DB@NKHAILA@RM_DeInitService?3?5DeInit?5while?5n@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DB@NKHAILA@RM_DeInitService?3?5DeInit?5while?5n@| DCB "RM_DeInitS"
DCB "ervice: DeInit while not initialized", 0xd, 0xa, 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |RM_DeInitService| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |RM_DeInitService| PROC
; 86 : {
00000 |$L1498|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 |$M1496|
; 87 : LOCK_STRUCT_T *plock;
; 88 : int i;
; 89 : OSDS_STATUS_T ret;
; 90 :
; 91 : if (!service_initialized)
00004 e59f5098 ldr r5, [pc, #0x98]
00008 e595345c ldr r3, [r5, #0x45C]
0000c e3530000 cmp r3, #0
; 92 : {
; 93 : LOGMSG(("RM_DeInitService: DeInit while not initialized\r\n"));
00010 059f0088 ldreq r0, [pc, #0x88]
00014 0b000000 bleq xllp_LogMessage
; 94 : }
; 95 : else
; 96 : DBGMSG(("RM_DeInitService:\r\n"));
; 97 : // Close any locks that have been initialized and aren't currently locked (at least in this process context)
; 98 : for (i = 0; i < DIMENSION(LockDB); i++)
00018 e3a06000 mov r6, #0
0001c e1a04005 mov r4, r5
00020 e3a07000 mov r7, #0
00024 |$L1286|
; 99 : {
; 100 : plock = &(LockDB[i]);
; 101 : if (plock->lock == (RM_LOCK_HANDLE_T)0)
00024 e5943000 ldr r3, [r4]
00028 e3530000 cmp r3, #0
0002c 0a000011 beq |$L1287|
; 102 : continue;
; 103 : // Note that it's possible other threads in the same process own one or more locks.
; 104 : // Service deinit being called in this situation is probably a programming error, but just log it and continue.
; 105 : ret = OSDS_AcquireLock(plock->lock, 0);
00030 e5940000 ldr r0, [r4]
00034 e3a01000 mov r1, #0
00038 eb000000 bl OSDS_AcquireLock
0003c e3500000 cmp r0, #0
; 106 : if (ret == OSDS_STATUS_SUCCESS)
00040 1a000007 bne |$L1291|
; 107 : {
; 108 : OSDS_LOCK_HANDLE_T hLock = plock->lock;
00044 e5940000 ldr r0, [r4]
; 109 : plock->lock = (RM_LOCK_HANDLE_T)0;
; 110 : plock->owner = plock->owner_count = 0;
00048 e1a03004 mov r3, r4
0004c e5847000 str r7, [r4]
00050 e5a37008 str r7, [r3, #8]!
00054 e2433004 sub r3, r3, #4
00058 e5837000 str r7, [r3]
; 111 : OSDS_DestroyLock(hLock);
0005c eb000000 bl OSDS_DestroyLock
; 112 : DBGMSG(("RM_DeInitService: Lock %u (x%08x) released and destroyed\r\n",
; 113 : Index2RID(i), hLock));
; 114 : }
; 115 : else
00060 ea000004 b |$L1287|
00064 |$L1291|
; 116 : LOGMSG(("RM_DeInitService: Unable to acquire lock %u (x%08x) (error=x%08x)\r\n",
; 117 : Index2RID(i), plock->lock, ret));
00064 e5942000 ldr r2, [r4]
00068 e1a03000 mov r3, r0
0006c e59f0028 ldr r0, [pc, #0x28]
00070 e2861001 add r1, r6, #1
00074 eb000000 bl xllp_LogMessage
00078 |$L1287|
00078 e2866001 add r6, r6, #1
0007c e356005d cmp r6, #0x5D
00080 e284400c add r4, r4, #0xC
00084 3affffe6 bcc |$L1286|
; 118 : }
; 119 : service_initialized = 0;
00088 e3a03000 mov r3, #0
0008c e585345c str r3, [r5, #0x45C]
; 120 : return(RM_STATUS_SUCCESS);
00090 e3a00000 mov r0, #0
; 121 : } // RM_DeInitService
00094 e8bd40f0 ldmia sp!, {r4 - r7, lr}
00098 e12fff1e bx lr
0009c |$L1501|
0009c 00000000 DCD |??_C@_0EE@JGMKFMGG@RM_DeInitService?3?5Unable?5to?5acqu@|
000a0 00000000 DCD |??_C@_0DB@NKHAILA@RM_DeInitService?3?5DeInit?5while?5n@|
000a4 00000000 DCD |LockDB|
000a8 |$M1497|
ENDP ; |RM_DeInitService|
EXPORT |??_C@_0EE@PJIOGGHH@RM_InitLock?$EAx?$CF08x?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5@| [ DATA ] ; `string'
EXPORT |??_C@_0BB@PPIDDGPM@RM_RESOURCE_?$CF03u?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_0CK@GIPCOGHJ@RM_InitLock?3?5OSDS_CreateLock?$CI?$CFs?$CJ@| [ DATA ] ; `string'
EXPORT |??_C@_0CP@HOAONHLI@RM_InitLock?3?5?$CFs?1x?$CF08x?5OSDS_Acqui@| [ DATA ] ; `string'
EXPORT |??_C@_0DP@LLGLAGE@RM_InitLock?3?5?$CFd?1?$CFs?1x?$CF08x?5Collisi@| [ DATA ] ; `string'
EXPORT |??_C@_0DB@MHBAOEPO@RM_InitLock?3?5?$CFd?1?$CFs?5Already?5initi@| [ DATA ] ; `string'
IMPORT |xllp_snprintf|
IMPORT |OSDS_GetCurrentThreadID|
IMPORT |OSDS_CreateLock|
IMPORT |__security_cookie|
IMPORT |__security_check_cookie|
00000 AREA |.text| { |RM_InitLock| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$RM_InitLock|, PDATA, SELECTION=5, ASSOC=|.text| { |RM_InitLock| } ; comdat associative
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -