Changes

Jump to navigation Jump to search
2,095 bytes added ,  02:21, 22 February 2017
Created page with "Category:Kernel interrupt events class KCacheMaintenanceInterruptEvent extends KBaseInterruptEvent This object handles data cache (L2C ''not'' included) and instr..."
[[Category:Kernel interrupt events]]
class [[KCacheMaintenanceInterruptEvent]] extends [[KBaseInterruptEvent]]

This object handles data cache (L2C ''not'' included) and instruction cache maintainance.

There is only one instance of this object.

Size : 0x4C bytes (N3DS) / 0x34 bytes (O3DS)

{| class="wikitable" border="1"
|-
! Offset
! Type
! Description
|-
| 0x0
| void **
| Pointer to vtable
|-
| 0x4
| u8
| Cache operation
|-
| 0x5
| u8
| Indicates whether to do the operation asynchronically (this is what is used when processes are running for ranges >= 0x200 bytes)
|-
| 0x6
| s8
| Number of cores still doing cache maintenance operations
|-
| 0x7
| u8
| Padding
|-
| 0x8
| [[KThread]] *
| Thread operating on the object
|-
| 0xC
| void *
| Start address (when applicable)
|-
| 0x10
| void *
| End address (when applicable)
|-
| 0x14
| KThreadLinkedListNode*
| Related to KThread+0xA0
|-
| 0x18
| KThreadLinkedList *
| KThread+0xA8 of the current thread
|-
| 0x1C
| KCacheScheduledInterruptEvent[number of cores]
| Used when the field at offset 0x5 is 1, see below
|}

Possible operations (any other value leads to a kernel panic):

{| class="wikitable" border="1"
|-
! Operation
! Description
|-
| 4
| Invalidate data cache range
|-
| 5
| Clean data cache range
|-
| 6
| Clean and invalidate data cache range
|-
| 7
| Invalidate instruction cache range (also flush the entire branch target cache and the prefetch buffer)
|-
| 8
| Invalidate entire data cache
|-
| 9
| Clean entire data cache
|-
| 10
| Clean and invalidate entire data cache
|-
| 11
| Invalidate entire instruction cache (also flush the entire branch target cache and the prefetch buffer)
|}

KCacheMaintenanceScheduledInterruptEvent extends [[KSchedulableInterruptEvent]], size = 0xC bytes:
{| class="wikitable" border="1"
|-
! Offset
! Type
! Description
|-
| 0x0
| void **
| Pointer to vtable
|-
| 0x4
| [[KSchedulableInterruptEvent]] *
| Next interrupt event
|-
| 0x8
| const [[KThread]] *
| Thread woken up by the first virtual function of this object, doing the actual cache maintenance operation. Same for all
|}

Navigation menu