Subversion Repositories Kolibri OS

Rev

Rev 4429 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4429 Rev 4433
Line 1093... Line 1093...
1093
 
1093
 
1094
; scan for required DLL in list of already loaded for this process,
1094
; scan for required DLL in list of already loaded for this process,
1095
; ignore timestamp
1095
; ignore timestamp
Line 1096... Line 1096...
1096
        cli
1096
        cli
1097
 
-
 
1098
        mov     esi, [CURRENT_TASK]
1097
 
1099
        shl     esi, 8
1098
        mov     esi, [current_process]
1100
        lea     edi, [fullname]
1099
        lea     edi, [fullname]
1101
        mov     ebx, [esi+SLOT_BASE+APPDATA.dlls_list_ptr]
1100
        mov     ebx, [esi+PROC.dlls_list_ptr]
1102
        test    ebx, ebx
1101
        test    ebx, ebx
1103
        jz      .not_in_process
1102
        jz      .not_in_process
1104
        mov     esi, [ebx+HDLL.fd]
1103
        mov     esi, [ebx+HDLL.fd]
Line 1456... Line 1455...
1456
; DLL is per-process object, so APPDATA.dlls_list_ptr must be
1455
; DLL is per-process object, so APPDATA.dlls_list_ptr must be
1457
; kept in sync for all threads of one process.
1456
; kept in sync for all threads of one process.
1458
; out: eax = APPDATA.dlls_list_ptr if all is OK,
1457
; out: eax = APPDATA.dlls_list_ptr if all is OK,
1459
; NULL if memory allocation failed
1458
; NULL if memory allocation failed
1460
init_dlls_in_thread:
1459
init_dlls_in_thread:
1461
        mov     ebx, [current_slot]
1460
        mov     ebx, [current_process]
1462
        mov     eax, [ebx+APPDATA.dlls_list_ptr]
1461
        mov     eax, [ebx+PROC.dlls_list_ptr]
1463
        test    eax, eax
1462
        test    eax, eax
1464
        jnz     .ret
1463
        jnz     .ret
1465
        push    [ebx+APPDATA.process]
-
 
-
 
1464
 
1466
        mov     eax, 8
1465
        mov     eax, 8
1467
        call    malloc
1466
        call    malloc                               ; FIXME
1468
        pop     edx
-
 
1469
        test    eax, eax
1467
        test    eax, eax
1470
        jz      .ret
1468
        jz      .ret
-
 
1469
 
1471
        mov     [eax], eax
1470
        mov     [eax], eax
1472
        mov     [eax+4], eax
1471
        mov     [eax+4], eax
1473
        mov     ecx, [TASK_COUNT]
-
 
1474
        mov     ebx, SLOT_BASE+256
-
 
1475
.set:
1472
 
1476
        cmp     [ebx+APPDATA.process], edx
1473
        mov     ebx, [current_process]
1477
        jnz     @f
-
 
1478
        mov     [ebx+APPDATA.dlls_list_ptr], eax
1474
        mov     [ebx+PROC.dlls_list_ptr], eax
1479
@@:
-
 
1480
        add     ebx, 256
-
 
1481
        dec     ecx
-
 
1482
        jnz     .set
-
 
1483
.ret:
1475
.ret:
1484
        ret
1476
        ret
Line 1485... Line 1477...
1485
 
1477
 
1486
; in: eax = number of references to delete, esi -> DLLDESCR struc
1478
; in: eax = number of references to delete, esi -> DLLDESCR struc