#include <kern/exc_resource.h>

kern/exc_resource.h Kernel.framework

EXC_RESOURCE related macros, namespace etc.
46 macros

macroEXC_RESOURCE_DECODE_RESOURCE_TYPE

EXC_RESOURCE type and flavor decoding routines
#define EXC_RESOURCE_DECODE_RESOURCE_TYPE(code) (((code) >> 61) & 0x7ULL)

macroEXC_RESOURCE_DECODE_FLAVOR

#define EXC_RESOURCE_DECODE_FLAVOR(code) (((code) >> 58) & 0x7ULL)

macroRESOURCE_TYPE_CPU

#define RESOURCE_TYPE_CPU 1

macroRESOURCE_TYPE_WAKEUPS

#define RESOURCE_TYPE_WAKEUPS 2

macroRESOURCE_TYPE_MEMORY

#define RESOURCE_TYPE_MEMORY 3

macroRESOURCE_TYPE_IO

#define RESOURCE_TYPE_IO 4

macroRESOURCE_TYPE_THREADS

#define RESOURCE_TYPE_THREADS 5

macroRESOURCE_TYPE_PORTS

#define RESOURCE_TYPE_PORTS 6

macroFLAVOR_CPU_MONITOR

#define FLAVOR_CPU_MONITOR 1

macroFLAVOR_CPU_MONITOR_FATAL

#define FLAVOR_CPU_MONITOR_FATAL 2

macroEXC_RESOURCE_CPUMONITOR_DECODE_INTERVAL

RESOURCE_TYPE_CPU decoding macros
#define EXC_RESOURCE_CPUMONITOR_DECODE_INTERVAL(code) (((code) >> 7) & 0x1FFFFFFULL)

macroEXC_RESOURCE_CPUMONITOR_DECODE_PERCENTAGE

#define EXC_RESOURCE_CPUMONITOR_DECODE_PERCENTAGE(code) ((code) & 0x7FULL)

macroEXC_RESOURCE_CPUMONITOR_DECODE_PERCENTAGE_OBSERVED

#define EXC_RESOURCE_CPUMONITOR_DECODE_PERCENTAGE_OBSERVED(subcode) ((subcode) & 0x7FULL)

macroFLAVOR_WAKEUPS_MONITOR

#define FLAVOR_WAKEUPS_MONITOR 1

macroEXC_RESOURCE_CPUMONITOR_DECODE_WAKEUPS_PERMITTED

#define EXC_RESOURCE_CPUMONITOR_DECODE_WAKEUPS_PERMITTED(code) ((code) & 0xFFFULL)

macroEXC_RESOURCE_CPUMONITOR_DECODE_OBSERVATION_INTERVAL

#define EXC_RESOURCE_CPUMONITOR_DECODE_OBSERVATION_INTERVAL(code) (((code) >> 20) & 0xFFFFFULL)

macroEXC_RESOURCE_CPUMONITOR_DECODE_WAKEUPS_OBSERVED

#define EXC_RESOURCE_CPUMONITOR_DECODE_WAKEUPS_OBSERVED(subcode) ((subcode) & 0xFFFFFULL)

macroFLAVOR_HIGH_WATERMARK

#define FLAVOR_HIGH_WATERMARK 1
Indicates that the exception is due to memory limit warning

macroFLAVOR_DIAG_MEMLIMIT

#define FLAVOR_DIAG_MEMLIMIT 2
Indicates that the exception is due to a preset diagnostics memory consumption threshold

macroFLAVOR_CONCLAVE_LIMIT

#define FLAVOR_CONCLAVE_LIMIT 3
Indicates that the exception is due to the hard conclave memory limit

macroEXC_RESOURCE_HWM_LIMIT_MASK

#define EXC_RESOURCE_HWM_LIMIT_MASK 0xFFFFULL
Bits 0-15

macroEXC_RESOURCE_HWM_ACTIVE_BIT

#define EXC_RESOURCE_HWM_ACTIVE_BIT (0x1ULL << 16)
Bit 16

macroEXC_RESOURCE_HWM_DECODE_LIMIT

#define EXC_RESOURCE_HWM_DECODE_LIMIT(code) ((code) & EXC_RESOURCE_HWM_LIMIT_MASK)

macroEXC_RESOURCE_HWM_IS_ACTIVE

#define EXC_RESOURCE_HWM_IS_ACTIVE(code) (!!((code) & EXC_RESOURCE_HWM_ACTIVE_BIT))

macroFLAVOR_IO_PHYSICAL_WRITES

#define FLAVOR_IO_PHYSICAL_WRITES 1

macroFLAVOR_IO_LOGICAL_WRITES

#define FLAVOR_IO_LOGICAL_WRITES 2

macroEXC_RESOURCE_IO_DECODE_INTERVAL

RESOURCE_TYPE_IO decoding macros
#define EXC_RESOURCE_IO_DECODE_INTERVAL(code) (((code) >> 15) & 0x1FFFFULL)

macroEXC_RESOURCE_IO_DECODE_LIMIT

#define EXC_RESOURCE_IO_DECODE_LIMIT(code) ((code) & 0x7FFFULL)

macroEXC_RESOURCE_IO_OBSERVED

#define EXC_RESOURCE_IO_OBSERVED(subcode) ((subcode) & 0x7FFFULL)

macroEXC_RESOURCE_THREADS_DECODE_THREADS

#define EXC_RESOURCE_THREADS_DECODE_THREADS(code) ((code) & 0x7FFFULL)

macroFLAVOR_THREADS_HIGH_WATERMARK

#define FLAVOR_THREADS_HIGH_WATERMARK 1

macroFLAVOR_PORT_SPACE_FULL

#define FLAVOR_PORT_SPACE_FULL 1

macroEXC_RESOURCE_THREADS_DECODE_PORTS

RESOURCE_TYPE_PORTS exception code & subcode. This is sent by the kernel when the process is leaking ipc ports and has filled its port space code: +-----------------------------------------------+ |[63:61] RESOURCE |[60:58] FLAVOR_ |[57:32] | |_TYPE_PORTS |PORT_SPACE_FULL |Unused | +-----------------------------------------------+ | [31:24] Unused | [23:0] # of ports | | | allocated | +-----------------------------------------------+ subcode: +-----------------------------------------------+ | | Unused | | | | +-----------------------------------------------+
#define EXC_RESOURCE_THREADS_DECODE_PORTS(code) ((code) & 0xFFFFFFULL)

macroEXC_RESOURCE_ENCODE_TYPE

EXC_RESOURCE type and flavor encoding macros
#define EXC_RESOURCE_ENCODE_TYPE(code, type) ((code) |= (((uint64_t)(type) & 0x7ULL) << 61))

macroEXC_RESOURCE_ENCODE_FLAVOR

#define EXC_RESOURCE_ENCODE_FLAVOR(code, flavor) ((code) |= (((uint64_t)(flavor) & 0x7ULL) << 58))

macroEXC_RESOURCE_CPUMONITOR_ENCODE_INTERVAL

RESOURCE_TYPE_CPU::FLAVOR_CPU_MONITOR specific encoding macros
#define EXC_RESOURCE_CPUMONITOR_ENCODE_INTERVAL(code, interval) ((code) |= (((uint64_t)(interval) & 0x1FFFFFFULL) << 7))

macroEXC_RESOURCE_CPUMONITOR_ENCODE_PERCENTAGE

#define EXC_RESOURCE_CPUMONITOR_ENCODE_PERCENTAGE(code, percentage) ((code) |= (((uint64_t)(percentage) & 0x7FULL)))

macroEXC_RESOURCE_CPUMONITOR_ENCODE_WAKEUPS_PERMITTED

#define EXC_RESOURCE_CPUMONITOR_ENCODE_WAKEUPS_PERMITTED(code, num) ((code) |= ((uint64_t)(num) & 0xFFFFFULL))

macroEXC_RESOURCE_CPUMONITOR_ENCODE_OBSERVATION_INTERVAL

#define EXC_RESOURCE_CPUMONITOR_ENCODE_OBSERVATION_INTERVAL(code, num) ((code) |= (((uint64_t)(num) & 0xFFFULL) << 20))

macroEXC_RESOURCE_CPUMONITOR_ENCODE_WAKEUPS_OBSERVED

#define EXC_RESOURCE_CPUMONITOR_ENCODE_WAKEUPS_OBSERVED(subcode, num) ((subcode) |= ((uint64_t)(num) & 0xFFFFFULL))

macroEXC_RESOURCE_HWM_ENCODE_LIMIT

#define EXC_RESOURCE_HWM_ENCODE_LIMIT(code, num) ((code) |= ((uint64_t)(num) & EXC_RESOURCE_HWM_LIMIT_MASK))

macroEXC_RESOURCE_IO_ENCODE_INTERVAL

#define EXC_RESOURCE_IO_ENCODE_INTERVAL(code, interval) ((code) |= (((uint64_t)(interval) & 0x1FFFFULL) << 15))

macroEXC_RESOURCE_IO_ENCODE_LIMIT

#define EXC_RESOURCE_IO_ENCODE_LIMIT(code, limit) ((code) |= (((uint64_t)(limit) & 0x7FFFULL)))

macroEXC_RESOURCE_IO_ENCODE_OBSERVED

#define EXC_RESOURCE_IO_ENCODE_OBSERVED(subcode, num) ((subcode) |= (((uint64_t)(num) & 0x7FFFULL)))

macroEXC_RESOURCE_THREADS_ENCODE_THREADS

RESOURCE_TYPE_THREADS specific encoding macros
#define EXC_RESOURCE_THREADS_ENCODE_THREADS(code, threads) ((code) |= (((uint64_t)(threads) & 0x7FFFULL)))

macroEXC_RESOURCE_PORTS_ENCODE_PORTS

#define EXC_RESOURCE_PORTS_ENCODE_PORTS(code, num) ((code) |= ((uint64_t)(num) & 0xFFFFFFULL))