⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 resourcelock.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 4 页
字号:
|$T1518| DCD	|$L1517|
	DCD	0x40006b02

  00000			 AREA	 |.rdata| { |??_C@_0DB@MHBAOEPO@RM_InitLock?3?5?$CFd?1?$CFs?5Already?5initi@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DB@MHBAOEPO@RM_InitLock?3?5?$CFd?1?$CFs?5Already?5initi@| DCB "RM"
	DCB	"_InitLock: %d/%s Already initialized (x%08x)", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0DP@LLGLAGE@RM_InitLock?3?5?$CFd?1?$CFs?1x?$CF08x?5Collisi@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DP@LLGLAGE@RM_InitLock?3?5?$CFd?1?$CFs?1x?$CF08x?5Collisi@| DCB "R"
	DCB	"M_InitLock: %d/%s/x%08x Collision during Init (hLock=x%0"
	DCB	"8x)", 0xd, 0xa, 0x0			; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CP@HOAONHLI@RM_InitLock?3?5?$CFs?1x?$CF08x?5OSDS_Acqui@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CP@HOAONHLI@RM_InitLock?3?5?$CFs?1x?$CF08x?5OSDS_Acqui@| DCB "RM_"
	DCB	"InitLock: %s/x%08x OSDS_AcquireLock ERROR", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0CK@GIPCOGHJ@RM_InitLock?3?5OSDS_CreateLock?$CI?$CFs?$CJ@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0CK@GIPCOGHJ@RM_InitLock?3?5OSDS_CreateLock?$CI?$CFs?$CJ@| DCB "RM"
	DCB	"_InitLock: OSDS_CreateLock(%s) failed", 0xd, 0xa, 0x0 ; `string'

  00000			 AREA	 |.rdata| { |??_C@_0EE@PJIOGGHH@RM_InitLock?$EAx?$CF08x?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EE@PJIOGGHH@RM_InitLock?$EAx?$CF08x?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5@| DCB "R"
	DCB	"M_InitLock@x%08x(%u,x%08x,%u): lock=x%08x, owner=x%08x, "
	DCB	"count=%u", 0xd, 0xa, 0x0		; `string'

  00000			 AREA	 |.rdata| { |??_C@_0BB@PPIDDGPM@RM_RESOURCE_?$CF03u?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0BB@PPIDDGPM@RM_RESOURCE_?$CF03u?$AA@| DCB "RM_RESOURCE_%03u", 0x0 ; `string'
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |RM_InitLock| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |RM_InitLock| PROC

; 124  :     {

  00000		 |$L1517|
  00000	e92d43f0	 stmdb       sp!, {r4 - r9, lr}
  00004	e24dd034	 sub         sp, sp, #0x34
  00008		 |$M1515|
  00008	e1a09002	 mov         r9, r2
  0000c	e1a07001	 mov         r7, r1
  00010	e1a08000	 mov         r8, r0
  00014	e59f318c	 ldr         r3, [pc, #0x18C]
  00018	e5933000	 ldr         r3, [r3]
  0001c	e58d3030	 str         r3, [sp, #0x30]

; 125  :         LOCK_STRUCT_T *plock;
; 126  :         unsigned char name[32];
; 127  : 
; 128  :     plock = &(LockDB[RID2Index(ResourceID)]);

  00020	e59fe17c	 ldr         lr, [pc, #0x17C]
  00024	e0883088	 add         r3, r8, r8, lsl #1

; 129  :     LOGMSG(("RM_InitLock@x%08x(%u,x%08x,%u): lock=x%08x, owner=x%08x, count=%u\r\n", 
; 130  :                RM_InitLock, ResourceID, threadid, timeout_in_ms, plock->lock, plock->owner, plock->owner_count));

  00028	e59f1170	 ldr         r1, [pc, #0x170]
  0002c	e08e3103	 add         r3, lr, r3, lsl #2
  00030	e243600c	 sub         r6, r3, #0xC
  00034	e5965008	 ldr         r5, [r6, #8]
  00038	e5964004	 ldr         r4, [r6, #4]
  0003c	e596e000	 ldr         lr, [r6]
  00040	e59f0154	 ldr         r0, [pc, #0x154]
  00044	e1a03007	 mov         r3, r7
  00048	e1a02008	 mov         r2, r8
  0004c	e58de004	 str         lr, [sp, #4]
  00050	e58d500c	 str         r5, [sp, #0xC]
  00054	e58d4008	 str         r4, [sp, #8]
  00058	e58d9000	 str         r9, [sp]
  0005c	eb000000	 bl          xllp_LogMessage

; 131  :     xllp_snprintf(name, sizeof(name)-1, "RM_RESOURCE_%03u", ResourceID);

  00060	e59f2130	 ldr         r2, [pc, #0x130]
  00064	e1a03008	 mov         r3, r8
  00068	e3a0101f	 mov         r1, #0x1F
  0006c	e28d0010	 add         r0, sp, #0x10
  00070	eb000000	 bl          xllp_snprintf

; 132  :     if (plock->lock == (RM_LOCK_HANDLE_T)0)

  00074	e5963000	 ldr         r3, [r6]
  00078	e3530000	 cmp         r3, #0
  0007c	1a000035	 bne         |$L1314|

; 133  :         {
; 134  :             OSDS_LOCK_HANDLE_T hLock;
; 135  :             int ret;
; 136  : 		hLock = OSDS_CreateLock(name);

  00080	e28d0010	 add         r0, sp, #0x10
  00084	eb000000	 bl          OSDS_CreateLock
  00088	e1b04000	 movs        r4, r0

; 137  :         if (hLock == (RM_LOCK_HANDLE_T)0)

  0008c	1a000006	 bne         |$L1318|

; 138  :             {
; 139  :             LOGMSG(("RM_InitLock: OSDS_CreateLock(%s) failed\r\n", name));

  00090	e59f00fc	 ldr         r0, [pc, #0xFC]
  00094	e28d1010	 add         r1, sp, #0x10
  00098	eb000000	 bl          xllp_LogMessage

; 140  :             return(RM_STATUS_ERROR);

  0009c	e59d0030	 ldr         r0, [sp, #0x30]
  000a0		 |$L1323|

; 154  :             else
; 155  :                 return(RM_STATUS_ERROR);

  000a0	eb000000	 bl          __security_check_cookie
  000a4	e3a00004	 mov         r0, #4
  000a8	ea000033	 b           |$L1306|
  000ac		 |$L1318|

; 141  :             }
; 142  :         else
; 143  :             DBGMSG(("RM_InitLock: OSDS_CreateLock(%s) success (x%08x)\r\n", name, hLock));
; 144  :             // Acquire the lock to prevent conflict during lock initialization.
; 145  :         ret = OSDS_AcquireLock(hLock, timeout_in_ms);

  000ac	e1a01009	 mov         r1, r9
  000b0	e1a00004	 mov         r0, r4
  000b4	eb000000	 bl          OSDS_AcquireLock
  000b8	e1b05000	 movs        r5, r0

; 146  :         if (ret != OSDS_STATUS_SUCCESS)

  000bc	0a00000d	 beq         |$L1321|

; 147  :             {
; 148  :             LOGMSG(("RM_InitLock: %s/x%08x OSDS_AcquireLock ERROR\r\n", name, hLock, ret));

  000c0	e59f00c8	 ldr         r0, [pc, #0xC8]
  000c4	e1a03005	 mov         r3, r5
  000c8	e1a02004	 mov         r2, r4
  000cc	e28d1010	 add         r1, sp, #0x10
  000d0	eb000000	 bl          xllp_LogMessage

; 149  :                 // We wont put the handle in LockDB, so destroy the lock to avoid resource leak.
; 150  :             OSDS_DestroyLock(hLock);

  000d4	e1a00004	 mov         r0, r4
  000d8	eb000000	 bl          OSDS_DestroyLock

; 151  :             RM_Dump_LockDB();

  000dc	eb000000	 bl          RM_Dump_LockDB

; 152  :             if (ret == OSDS_STATUS_TIMEOUT)

  000e0	e3550001	 cmp         r5, #1

; 153  :                 return(RM_STATUS_TIMEOUT);

  000e4	e59d0030	 ldr         r0, [sp, #0x30]
  000e8	1affffec	 bne         |$L1323|
  000ec	eb000000	 bl          __security_check_cookie
  000f0	e3a00001	 mov         r0, #1
  000f4	ea000020	 b           |$L1306|
  000f8		 |$L1321|

; 156  :             }
; 157  :         else
; 158  :             DBGMSG(("RM_InitLock: %s/x%08x Created and Locked\r\n", name, hLock));
; 159  :             
; 160  :             // At this point the lock exists and we've acquired it.
; 161  :             // However, check again that we haven't collided with another thread
; 162  :         if (plock->lock != (RM_LOCK_HANDLE_T)0)

  000f8	e5963000	 ldr         r3, [r6]
  000fc	e3530000	 cmp         r3, #0
  00100	0a00000b	 beq         |$L1327|

; 163  :             {
; 164  :             LOGMSG(("RM_InitLock: %d/%s/x%08x Collision during Init (hLock=x%08x)\r\n", ResourceID, name, plock->lock, hLock));

  00104	e5963000	 ldr         r3, [r6]
  00108	e59f007c	 ldr         r0, [pc, #0x7C]
  0010c	e28d2010	 add         r2, sp, #0x10
  00110	e1a01008	 mov         r1, r8
  00114	e58d4000	 str         r4, [sp]
  00118	eb000000	 bl          xllp_LogMessage

; 165  :             if (hLock != plock->lock)

  0011c	e5963000	 ldr         r3, [r6]
  00120	e1540003	 cmp         r4, r3
  00124	0a000010	 beq         |$L1331|

; 166  :                 OSDS_DestroyLock(hLock);

  00128	e1a00004	 mov         r0, r4
  0012c	eb000000	 bl          OSDS_DestroyLock

; 167  :                 // Return success because the lock has now been initialized.
; 168  :                 // The caller can determine if the lock is owned by checking the owner field.
; 169  :             RM_Dump_LockDB();
; 170  :             return(RM_STATUS_SUCCESS);

  00130	ea00000d	 b           |$L1331|
  00134		 |$L1327|

; 171  :             }
; 172  :         if (threadid == 0)

  00134	e3570000	 cmp         r7, #0
  00138	1a000001	 bne         |$L1330|

; 173  :             threadid = OSDS_GetCurrentThreadID();

  0013c	eb000000	 bl          OSDS_GetCurrentThreadID
  00140	e1a07000	 mov         r7, r0
  00144		 |$L1330|

; 174  :         plock->owner = threadid;
; 175  :         plock->owner_count = 1;

  00144	e3a03001	 mov         r3, #1
  00148	e5867004	 str         r7, [r6, #4]
  0014c	e5863008	 str         r3, [r6, #8]

; 176  :         plock->lock = hLock;

  00150	e5864000	 str         r4, [r6]

; 177  :         DBGMSG(("RM_InitLock: Lock %d/%s/x%08x initialized and locked (owner=x%08x, count=%d)\r\n", 
; 178  :                    ResourceID, name, plock->lock, plock->owner, plock->owner_count));
; 179  :         }
; 180  :     else

  00154	ea000004	 b           |$L1331|
  00158		 |$L1314|

; 181  :         LOGMSG(("RM_InitLock: %d/%s Already initialized (x%08x)\r\n", ResourceID, name, plock->lock));

  00158	e5963000	 ldr         r3, [r6]
  0015c	e59f0024	 ldr         r0, [pc, #0x24]
  00160	e28d2010	 add         r2, sp, #0x10
  00164	e1a01008	 mov         r1, r8
  00168	eb000000	 bl          xllp_LogMessage
  0016c		 |$L1331|

; 182  : 
; 183  :     RM_Dump_LockDB();

  0016c	eb000000	 bl          RM_Dump_LockDB

; 184  :     return(RM_STATUS_SUCCESS);

  00170	e59d0030	 ldr         r0, [sp, #0x30]
  00174	eb000000	 bl          __security_check_cookie
  00178	e3a00000	 mov         r0, #0
  0017c		 |$L1306|

; 185  :     } // RM_InitLock

  0017c	e28dd034	 add         sp, sp, #0x34
  00180	e8bd43f0	 ldmia       sp!, {r4 - r9, lr}
  00184	e12fff1e	 bx          lr
  00188		 |$L1520|
  00188	00000000	 DCD         |??_C@_0DB@MHBAOEPO@RM_InitLock?3?5?$CFd?1?$CFs?5Already?5initi@|
  0018c	00000000	 DCD         |??_C@_0DP@LLGLAGE@RM_InitLock?3?5?$CFd?1?$CFs?1x?$CF08x?5Collisi@|
  00190	00000000	 DCD         |??_C@_0CP@HOAONHLI@RM_InitLock?3?5?$CFs?1x?$CF08x?5OSDS_Acqui@|
  00194	00000000	 DCD         |??_C@_0CK@GIPCOGHJ@RM_InitLock?3?5OSDS_CreateLock?$CI?$CFs?$CJ@|
  00198	00000000	 DCD         |??_C@_0BB@PPIDDGPM@RM_RESOURCE_?$CF03u?$AA@|
  0019c	00000000	 DCD         |??_C@_0EE@PJIOGGHH@RM_InitLock?$EAx?$CF08x?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5@|
  001a0	00000000	 DCD         |RM_InitLock|
  001a4	00000000	 DCD         |LockDB|
  001a8	00000000	 DCD         |__security_cookie|
  001ac		 |$M1516|

			 ENDP  ; |RM_InitLock|

	EXPORT	|RM_AcquireLock|
	EXPORT	|??_C@_0DC@PKHJPFLI@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5Res@| [ DATA ] ; `string'
	EXPORT	|??_C@_0DK@JIPOKLCL@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5Una@| [ DATA ] ; `string'
	EXPORT	|??_C@_0DF@CCLAEEHA@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?5owne@| [ DATA ] ; `string'
	EXPORT	|??_C@_0DH@BCEOFBJ@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5TIM@| [ DATA ] ; `string'
	EXPORT	|??_C@_0DL@LEBBLINE@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5ERR@| [ DATA ] ; `string'
	EXPORT	|??_C@_0EL@JPPLNKFL@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?5retu@| [ DATA ] ; `string'

  00000			 AREA	 |.text| { |RM_AcquireLock| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$RM_AcquireLock|, PDATA, SELECTION=5, ASSOC=|.text| { |RM_AcquireLock| } ; comdat associative
|$T1543| DCD	|$L1542|
	DCD	0x40006f02

  00000			 AREA	 |.rdata| { |??_C@_0DC@PKHJPFLI@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5Res@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DC@PKHJPFLI@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5Res@| DCB "R"
	DCB	"M_AcquireLock(%u,x%08x,%u): ResourceID invalid", 0xd, 0xa
	DCB	0x0					; `string'

  00000			 AREA	 |.rdata| { |??_C@_0EL@JPPLNKFL@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?5retu@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0EL@JPPLNKFL@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?5retu@| DCB "R"
	DCB	"M_AcquireLock(%u,x%08x,%u) returning x%08x (FAIL) owner="
	DCB	"x%08x, count=%u", 0xd, 0xa, 0x0	; `string'

  00000			 AREA	 |.rdata| { |??_C@_0DL@LEBBLINE@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5ERR@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DL@LEBBLINE@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5ERR@| DCB "R"
	DCB	"M_AcquireLock(%u,x%08x,%u): ERROR x%08x acquiring x%08x", 0xd
	DCB	0xa, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_0DH@BCEOFBJ@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5TIM@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_0DH@BCEOFBJ@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?3?5TIM@| DCB "R"
	DCB	"M_AcquireLock(%u,x%08x,%u): TIMEOUT acquiring x%08x", 0xd
	DCB	0xa, 0x0				; `string'

  00000			 AREA	 |.rdata| { |??_C@_0DF@CCLAEEHA@RM_AcquireLock?$CI?$CFu?0x?$CF08x?0?$CFu?$CJ?5owne@| }, DATA, READONLY, SELECTION=2 ; comdat any

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -