destroy shared memory. update docs

git-svn-id: svn://kolibrios.org@945 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Sergey Semyonov (Serge)
2008-12-06 20:24:43 +00:00
parent 31f5bf31ed
commit 34c30dea68
3 changed files with 94 additions and 26 deletions

View File

@@ -1149,25 +1149,32 @@ destroy_smap:
pushfd pushfd
cli cli
push ebx push esi
mov ebx, eax push edi
mov eax, [eax+SMAP.base] mov edi, eax
test eax, eax mov esi, [eax+SMAP.parent]
jz @F test esi, esi
jz .done
stdcall user_free, eax lock dec [esi+SMEM.refcount]
@@: jnz .done
mov eax, [ebx+SMAP.parent]
test eax, eax
jz @F
lock dec [eax+SMEM.refcount] mov ecx, [esi+SMEM.bk]
@@: mov edx, [esi+SMEM.fd]
mov eax, ebx
mov [ecx+SMEM.fd], edx
mov [edx+SMEM.bk], ecx
stdcall kernel_free, [esi+SMEM.base]
mov eax, esi
call free
.done:
mov eax, edi
call destroy_kernel_object call destroy_kernel_object
pop ebx pop edi
pop esi
popfd popfd
ret ret
@@ -1395,6 +1402,8 @@ proc shmem_close stdcall, name:dword
push esi push esi
push edi push edi
pushfd
cli
mov esi, [current_slot] mov esi, [current_slot]
add esi, APP_OBJ_OFFSET add esi, APP_OBJ_OFFSET
@@ -1419,8 +1428,11 @@ proc shmem_close stdcall, name:dword
test eax, eax test eax, eax
jne .next jne .next
stdcall user_free, [esi+SMAP.base]
call [esi+APPOBJ.destroy] call [esi+APPOBJ.destroy]
@@: @@:
popfd
pop edi pop edi
pop esi pop esi
.fail: .fail:

View File

@@ -1024,10 +1024,8 @@ f68call:
dd f68.22 dd f68.22
dd f68.23 dd f68.23
align 4 align 4
f68: f68:
cmp eax,4 cmp eax,4
jle sys_sheduler jle sys_sheduler
@@ -1038,13 +1036,11 @@ f68:
ja .fail ja .fail
jmp dword [f68call+eax*4-11*4] jmp dword [f68call+eax*4-11*4]
.11: .11:
call init_heap call init_heap
mov [esp+36], eax mov [esp+36], eax
ret ret
.12: .12:
stdcall user_alloc, ebx stdcall user_alloc, ebx
mov [esp+36], eax mov [esp+36], eax
ret ret

View File

@@ -3814,6 +3814,66 @@ Architecture Software Developer's Manual, Volume 3, Appendix B);
* <20><><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * <20><><EFBFBD><EFBFBD><EFBFBD><E0A6A8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<><E0A0A7><20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><EFBFBD><EFBFBD>. <><E0A0A7><20><><EFBFBD><EFBFBD><E0A0AD><EFBFBD><EFBFBD><EFBFBD>.
===========================================================================
====== <20><EFBFBD><E3ADAA><EFBFBD> 68, <20><><EFBFBD><EFBFBD><EFBFBD><E3ADAA><EFBFBD> 22 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. =====
===========================================================================
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* eax = 68 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
* ebx = 22 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
* ecx = <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><E1A8AC> 32 ᨬ<><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
* edx = ࠧ<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> SHM_CREATE <20> SHM_OPEN_ALWAYS
* esi = 䫠<><E4ABA0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD>
SHM_OPEN = 0x00
SHM_OPEN_ALWAYS = 0x04
SHM_CREATE = 0x08
SHM_READ = 0x00
SHM_WRITE = 0x01
SHM_CREATE - ᮧ<><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>
<><E2A0AA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E8A8A1> E_ACCESS
SHM_OPEN_ALWAYS - <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><><E1AEA7><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
SHM_OPEN - <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20>
<20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><E2A0AA> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E3ADAA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
<20><EFBFBD><E8A8A1> E_NOTFOUND.
SHM_READ - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ⮫쪮 <20><> <20><EFBFBD><E2A5AD>.
SHM_WRITE - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><EFBFBD><E2A5AD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>:
* eax = 㪠<><E3AAA0><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><20><EFBFBD><E8A8A1>
* edx = <20><20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><><E1AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SHM_CREATE <20><><EFBFBD> SHM_OPEN_ALWAYS
<20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><20><EFBFBD><E1AFA5> <20><><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E8A8A1>.
<20><20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EBA2A0><EFBFBD><EFBFBD> SHM_OPEN <20><><EFBFBD> SHM_OPEN_ALWAYS
<><E0A0A7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><EFBFBD><E8A8A1>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E8A8A1>:
* E_NOTFOUND = 5
* E_ACCESS = 10
* E_NOMEM = 30
* E_PARAM = 33
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
* <20>᫨ ᮧ<><E1AEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><><E4ABA0> <20><><EFBFBD><EFBFBD><20><><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
<20><><EFBFBD><EFBFBD><E1A8AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> <20><><EFBFBD><EFBFBD><20><><EFBFBD> <20><><EFBFBD><E2A0AB><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᮢ.
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E1A5A3> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
===========================================================================
====== <20><EFBFBD><E3ADAA><EFBFBD> 68, <20><><EFBFBD><EFBFBD><EFBFBD><E3ADAA><EFBFBD> 22 - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. =====
===========================================================================
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* eax = 68 - <20><><EFBFBD><EFBFBD><EFBFBD> <20>㭪樨
* ebx = 23 - <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>㭪樨
* ecx = <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><E1A8AC> 32 ᨬ<><E1A8AC><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><20><><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E7A5AD>:
* <20><> <20><><EFBFBD><E0A5A4><EFBFBD><EFBFBD><EFBFBD>
====================================================================== ======================================================================
======================== <20><EFBFBD><E3ADAA><EFBFBD> 69 - <20><EFBFBD><E2ABA0><EFBFBD>. ======================= ======================== <20><EFBFBD><E3ADAA><EFBFBD> 69 - <20><EFBFBD><E2ABA0><EFBFBD>. =======================
====================================================================== ======================================================================