forked from KolibriOS/kolibrios
destroy shared memory. update docs
git-svn-id: svn://kolibrios.org@945 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
@@ -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:
|
||||
|
@@ -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
|
||||
|
@@ -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>. =======================
|
||||
======================================================================
|
||||
|
Reference in New Issue
Block a user