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: |