SVC: Difference between revisions

No edit summary
Line 232: Line 232:
! State0 || State1 || Action
! State0 || State1 || Action
|-
|-
| 0 || 0 || Clear bit35 in [[#MemoryAttribute]].
| 0 || 0 || Clear bit3 in [[#MemoryAttribute]].
|-
|-
| 8 || 0 || Clear bit35 in [[#MemoryAttribute]].
| 8 || 0 || Clear bit3 in [[#MemoryAttribute]].
|-
|-
| 8 || 8 || Set bit35 in [[#MemoryAttribute]].
| 8 || 8 || Set bit3 in [[#MemoryAttribute]].
|}
|}


Line 246: Line 246:
Code can get the range of this region from [[#svcGetInfo]].
Code can get the range of this region from [[#svcGetInfo]].


The source region gets reprotected to ---, and sets bit32 is set in [[#MemoryAttribute]].
The source region gets reprotected to ---, and sets bit0 is set in [[#MemoryAttribute]].


== svcCreateThread ==
== svcCreateThread ==
Line 258: Line 258:


== svcCreateTransferMemory ==
== svcCreateTransferMemory ==
This one reprotects the src block with perms you give it. It also sets bit32 into [[#MemoryAttribute]].
This one reprotects the src block with perms you give it. It also sets bit0 into [[#MemoryAttribute]].


Executable bit perm not allowed.
Executable bit perm not allowed.


Closing all handles automatically causes the bit32 in [[#MemoryAttribute]] to clear, and the permission to reset.
Closing all handles automatically causes the bit0 in [[#MemoryAttribute]] to clear, and the permission to reset.


== svcWaitSynchronization ==
== svcWaitSynchronization ==
Line 382: Line 382:


== svcMapTransferMemory ==
== svcMapTransferMemory ==
The newly mapped pages will have [[#MemoryAttribute]] type 0xE.
The newly mapped pages will have [[#MemoryState]] type 0xE.


You must pass same size and permissions as given in svcCreateMemoryMirror, otherwise error.
You must pass same size and permissions as given in svcCreateMemoryMirror, otherwise error.