SVC: Difference between revisions

Line 858: Line 858:
|-
|-
| u32
| u32
| Unknown
| Flags. Bit0 means that svcContinueDebugEvent needs to be called for this event (except for EXIT PROCESS events, for which you need to call svcContinueDebugEvent even if this bit is clear)
|-
|-
| u8[4]
| u8[4]
| Unknown
| Remnants of the corresponding flags in [[KEventInfo]], always 0 here
|-
|-
| u32[6]
| u32[6]
Line 871: Line 871:
!  Id
!  Id
|-
|-
| PROCESS
| ATTACH PROCESS
| 0
| 0
|-
|-
| CREATE THREAD
| ATTACH THREAD
| 1
| 1
|-
|-
Line 911: Line 911:
|}
|}


=== PROCESS event ===
When calling svcDebugActiveProcess, an ATTACH PROCESS debug event is signaled, then ATTACH THREAD for each of its opened threads, then finally ATTACH BREAK.
 
ATTACH THREAD events are also emitted when a thread is created from an attached process.
 
=== ATTACH PROCESS event ===


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 927: Line 931:
|-
|-
| u32
| u32
| 0 = newly created process, 1 = attached process
| "Other" flag. Always 0 in available kernel versions
|}
|}


=== CREATE THREAD event ===
=== ATTACH THREAD event ===


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 998: Line 1,002:
| Type-specific data, see below
| Type-specific data, see below
|}
|}
The register storage layout for CPU exceptions is as follows (referring to user-mode registers): r0-r12, sp, <event-signaling exception handler>, lr_svc, lr, pc (misadjusted for Thumb instructions), cpsr. (????)


Exception types:
Exception types: