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

View File

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