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: