use super::SceUid;
use crate::eabi::i6;
use core::ffi::c_void;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DebugProfilerRegs {
pub enable: u32,
pub systemck: u32,
pub cpuck: u32,
pub internal: u32,
pub memory: u32,
pub copz: u32,
pub vfpu: u32,
pub sleep: u32,
pub bus_access: u32,
pub uncached_load: u32,
pub uncached_store: u32,
pub cached_load: u32,
pub cached_store: u32,
pub i_miss: u32,
pub d_miss: u32,
pub d_writeback: u32,
pub cop0_inst: u32,
pub fpu_inst: u32,
pub vfpu_inst: u32,
pub local_bus: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelSysClock {
pub low: u32,
pub hi: u32,
}
pub type SceKernelThreadEntry = unsafe extern "C" fn(args: usize, argp: *mut c_void) -> i32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelThreadOptParam {
pub size: usize,
pub stack_mpid: SceUid,
}
bitflags::bitflags! {
#[repr(transparent)]
pub struct ThreadAttributes: u32 {
const VFPU = 0x00004000;
const USER = 0x80000000;
const USBWLAN = 0xa0000000;
const VSH = 0xc0000000;
const SCRATCH_SRAM = 0x00008000;
const NO_FILLSTACK = 0x00100000;
const CLEAR_STACK = 0x00200000;
}
}
bitflags::bitflags! {
#[repr(transparent)]
pub struct EventFlagAttributes: u32 {
const WAIT_MULTIPLE = 0x200;
}
}
bitflags::bitflags! {
#[repr(transparent)]
pub struct EventFlagWaitTypes: u32 {
const AND = 0;
const OR = 1;
const CLEAR = 0x20;
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelThreadInfo {
pub size: usize,
pub name: [u8; 32],
pub attr: u32,
pub status: i32,
pub entry: SceKernelThreadEntry,
pub stack: *mut c_void,
pub stack_size: i32,
pub gp_reg: *mut c_void,
pub init_priority: i32,
pub current_priority: i32,
pub wait_type: i32,
pub wait_id: SceUid,
pub wakeup_count: i32,
pub exit_status: i32,
pub run_clocks: SceKernelSysClock,
pub intr_preempt_count: u32,
pub thread_preempt_count: u32,
pub release_count: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelThreadRunStatus {
pub size: usize,
pub status: i32,
pub current_priority: i32,
pub wait_type: i32,
pub wait_id: i32,
pub wakeup_count: i32,
pub run_clocks: SceKernelSysClock,
pub intr_preempt_count: u32,
pub thread_preempt_count: u32,
pub release_count: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelSemaOptParam {
pub size: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelSemaInfo {
pub size: usize,
pub name: [u8; 32],
pub attr: u32,
pub init_count: i32,
pub current_count: i32,
pub max_count: i32,
pub num_wait_threads: i32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelEventFlagInfo {
pub size: usize,
pub name: [u8; 32],
pub attr: u32,
pub init_pattern: u32,
pub current_pattern: u32,
pub num_wait_threads: i32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelEventFlagOptParam {
pub size: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelMbxOptParam {
pub size: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelMbxInfo {
pub size: usize,
pub name: [u8; 32usize],
pub attr: u32,
pub num_wait_threads: i32,
pub num_messages: i32,
pub first_message: *mut c_void,
}
pub type SceKernelVTimerHandler = unsafe extern "C" fn(
uid: SceUid,
arg1: *mut SceKernelSysClock,
arg2: *mut SceKernelSysClock,
arg3: *mut c_void,
) -> u32;
pub type SceKernelVTimerHandlerWide =
unsafe extern "C" fn(uid: SceUid, arg1: i64, arg2: i64, arg3: *mut c_void) -> u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelVTimerInfo {
pub size: usize,
pub name: [u8; 32],
pub active: i32,
pub base: SceKernelSysClock,
pub current: SceKernelSysClock,
pub schedule: SceKernelSysClock,
pub handler: SceKernelVTimerHandler,
pub common: *mut c_void,
}
pub type SceKernelThreadEventHandler =
unsafe extern "C" fn(mask: i32, thid: SceUid, common: *mut c_void) -> i32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelThreadEventHandlerInfo {
pub size: usize,
pub name: [u8; 32],
pub thread_id: SceUid,
pub mask: i32,
pub handler: SceKernelThreadEventHandler,
pub common: *mut c_void,
}
pub type SceKernelAlarmHandler = unsafe extern "C" fn(common: *mut c_void) -> u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelAlarmInfo {
pub size: usize,
pub schedule: SceKernelSysClock,
pub handler: SceKernelAlarmHandler,
pub common: *mut c_void,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone)]
pub enum SceKernelIdListType {
Thread = 1,
Semaphore = 2,
EventFlag = 3,
Mbox = 4,
Vpl = 5,
Fpl = 6,
Mpipe = 7,
Callback = 8,
ThreadEventHandler = 9,
Alarm = 10,
VTimer = 11,
SleepThread = 64,
DelayThread = 65,
SuspendThread = 66,
DormantThread = 67,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelSystemStatus {
pub size: usize,
pub status: u32,
pub idle_clocks: SceKernelSysClock,
pub comes_out_of_idle_count: u32,
pub thread_switch_count: u32,
pub vfpu_switch_count: u32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelMppInfo {
pub size: usize,
pub name: [u8; 32],
pub attr: u32,
pub buf_size: i32,
pub free_size: i32,
pub num_send_wait_threads: i32,
pub num_receive_wait_threads: i32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelVplOptParam {
pub size: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelVplInfo {
pub size: usize,
pub name: [u8; 32],
pub attr: u32,
pub pool_size: i32,
pub free_size: i32,
pub num_wait_threads: i32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelFplOptParam {
pub size: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelFplInfo {
pub size: usize,
pub name: [u8; 32usize],
pub attr: u32,
pub block_size: i32,
pub num_blocks: i32,
pub free_blocks: i32,
pub num_wait_threads: i32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelVTimerOptParam {
pub size: usize,
}
pub type SceKernelCallbackFunction =
unsafe extern "C" fn(arg1: i32, arg2: i32, arg: *mut c_void) -> i32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelCallbackInfo {
pub size: usize,
pub name: [u8; 32usize],
pub thread_id: SceUid,
pub callback: SceKernelCallbackFunction,
pub common: *mut c_void,
pub notify_count: i32,
pub notify_arg: i32,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct SceKernelLwMutexWork {
pub lock_count: i32,
pub lock_thread: SceUid,
pub attr: i32,
pub num_wait_threads: i32,
pub uid: SceUid,
pub pad: [i32; 3],
}
psp_extern! {
#![name = "ThreadManForUser"]
#![flags = 0x4001]
#![version = (0x00, 0x00)]
#[psp(0x57CF62DD)]
pub fn sceKernelGetThreadmanIdType(uid: SceUid) -> SceKernelIdListType;
#[psp(0x446D8DE6, i6)]
pub fn sceKernelCreateThread(
name: *const u8,
entry: SceKernelThreadEntry,
init_priority: i32,
stack_size: i32,
attr: ThreadAttributes,
option: *mut SceKernelThreadOptParam,
) -> SceUid;
#[psp(0x9FA03CD3)]
pub fn sceKernelDeleteThread(thid: SceUid) -> i32;
#[psp(0xF475845D)]
pub fn sceKernelStartThread(
id: SceUid,
arg_len: usize,
arg_p: *mut c_void,
) -> i32;
#[psp(0xAA73C935)]
pub fn sceKernelExitThread(status: i32) -> i32;
#[psp(0x809CE29B)]
pub fn sceKernelExitDeleteThread(status: i32) -> i32;
#[psp(0x616403BA)]
pub fn sceKernelTerminateThread(thid: SceUid) -> i32;
#[psp(0x383F7BCC)]
pub fn sceKernelTerminateDeleteThread(thid: SceUid) -> i32;
#[psp(0x3AD58B8C)]
pub fn sceKernelSuspendDispatchThread() -> i32;
#[psp(0x27E22EC2)]
pub fn sceKernelResumeDispatchThread(state: i32) -> i32;
#[psp(0x9ACE131E)]
pub fn sceKernelSleepThread() -> i32;
#[psp(0x82826F70)]
pub fn sceKernelSleepThreadCB() -> i32;
#[psp(0xD59EAD2F)]
pub fn sceKernelWakeupThread(thid: SceUid) -> i32;
#[psp(0xFCCFAD26)]
pub fn sceKernelCancelWakeupThread(thid: SceUid) -> i32;
#[psp(0x9944F31F)]
pub fn sceKernelSuspendThread(thid: SceUid) -> i32;
#[psp(0x75156E8F)]
pub fn sceKernelResumeThread(thid: SceUid) -> i32;
#[psp(0x278C0DF5)]
pub fn sceKernelWaitThreadEnd(thid: SceUid, timeout: *mut u32) -> i32;
#[psp(0x840E8133)]
pub fn sceKernelWaitThreadEndCB(thid: SceUid, timeout: *mut u32) -> i32;
#[psp(0xCEADEB47)]
pub fn sceKernelDelayThread(delay: u32) -> i32;
#[psp(0x68DA9E36)]
pub fn sceKernelDelayThreadCB(delay: u32) -> i32;
#[psp(0xBD123D9E)]
pub fn sceKernelDelaySysClockThread(delay: *mut SceKernelSysClock) -> i32;
#[psp(0x1181E963)]
pub fn sceKernelDelaySysClockThreadCB(delay: *mut SceKernelSysClock) -> i32;
#[psp(0xEA748E31)]
pub fn sceKernelChangeCurrentThreadAttr(
unknown: i32,
attr: ThreadAttributes,
) -> i32;
#[psp(0x71BC9871)]
pub fn sceKernelChangeThreadPriority(
thid: SceUid,
priority: i32,
) -> i32;
#[psp(0x912354A7)]
pub fn sceKernelRotateThreadReadyQueue(
priority: i32,
) -> i32;
#[psp(0x2C34E053)]
pub fn sceKernelReleaseWaitThread(thid: SceUid) -> i32;
#[psp(0x293B45B8)]
pub fn sceKernelGetThreadId() -> i32;
#[psp(0x94AA61EE)]
pub fn sceKernelGetThreadCurrentPriority() -> i32;
#[psp(0x3B183E26)]
pub fn sceKernelGetThreadExitStatus(thid: SceUid) -> i32;
#[psp(0xD13BDE95)]
pub fn sceKernelCheckThreadStack() -> i32;
#[psp(0x52089CA1)]
pub fn sceKernelGetThreadStackFreeSize(thid: SceUid) -> i32;
#[psp(0x17C1684E)]
pub fn sceKernelReferThreadStatus(
thid: SceUid,
info: *mut SceKernelThreadInfo,
) -> i32;
#[psp(0xFFC36A14)]
pub fn sceKernelReferThreadRunStatus(
thid: SceUid,
status: *mut SceKernelThreadRunStatus,
) -> i32;
#[psp(0xD6DA4BA1)]
pub fn sceKernelCreateSema(
name: *const u8,
attr: u32,
init_val: i32,
max_val: i32,
option: *mut SceKernelSemaOptParam,
) -> SceUid;
#[psp(0x28B6489C)]
pub fn sceKernelDeleteSema(sema_id: SceUid) -> i32;
#[psp(0x3F53E640)]
pub fn sceKernelSignalSema(
sema_id: SceUid,
signal: i32,
) -> i32;
#[psp(0x4E3A1105)]
pub fn sceKernelWaitSema(
sema_id: SceUid,
signal: i32,
timeout: *mut u32,
) -> i32;
#[psp(0x6D212BAC)]
pub fn sceKernelWaitSemaCB(
sema_id: SceUid,
signal: i32,
timeout: *mut u32,
) -> i32;
#[psp(0x58B1F937)]
pub fn sceKernelPollSema(
sema_id: SceUid,
signal: i32,
) -> i32;
#[psp(0xBC6FEBC5)]
pub fn sceKernelReferSemaStatus(
sema_id: SceUid,
info: *mut SceKernelSemaInfo,
) -> i32;
#[psp(0x19CFF145)]
pub fn sceKernelCreateLwMutex(
mutex: *mut SceKernelLwMutexWork,
name: *const u8,
attr: u32,
initial_count: i32,
options: *mut u32,
) -> i32;
#[psp(0x60107536)]
pub fn sceKernelDeleteLwMutex(mutex: *mut SceKernelLwMutexWork) -> i32;
#[psp(0xDC692EE3)]
pub fn sceKernelTryLockLwMutex(
mutex: *mut SceKernelLwMutexWork,
count: i32,
) -> i32;
#[psp(0xBEA46419)]
pub fn sceKernelLockLwMutex(
mutex: *mut SceKernelLwMutexWork,
count: i32,
timeout: *mut u32,
) -> i32;
#[psp(0x1FC64E09)]
pub fn sceKernelLockMutexCB(mutex: *mut SceKernelLwMutexWork, count: i32) -> i32;
#[psp(0x15B6446B)]
pub fn sceKernelUnlockLwMutex(
mutex: *mut SceKernelLwMutexWork,
count: i32,
) -> i32;
#[psp(0xC1734599)]
pub fn sceKernelReferLwMutexStatus(work_area: *mut SceKernelLwMutexWork, addr: *mut u32) -> i32;
#[psp(0x55C20A00)]
pub fn sceKernelCreateEventFlag(
name: *const u8,
attr: EventFlagAttributes,
bits: i32,
opt: *mut SceKernelEventFlagOptParam,
) -> SceUid;
#[psp(0x1FB15A32)]
pub fn sceKernelSetEventFlag(ev_id: SceUid, bits: u32) -> i32;
#[psp(0x812346E4)]
pub fn sceKernelClearEventFlag(ev_id: SceUid, bits: u32) -> i32;
#[psp(0x30FD48F0)]
pub fn sceKernelPollEventFlag(
ev_id: SceUid,
bits: u32,
wait: EventFlagWaitTypes,
out_bits: *mut u32,
) -> i32;
#[psp(0x402FCF22)]
pub fn sceKernelWaitEventFlag(
ev_id: SceUid,
bits: u32,
wait: EventFlagWaitTypes,
out_bits: *mut u32,
timeout: *mut u32,
) -> i32;
#[psp(0x328C546A)]
pub fn sceKernelWaitEventFlagCB(
ev_id: SceUid,
bits: u32,
wait: EventFlagWaitTypes,
out_bits: *mut u32,
timeout: *mut u32,
) -> i32;
#[psp(0xEF9E4C70)]
pub fn sceKernelDeleteEventFlag(ev_id: SceUid) -> i32;
#[psp(0xA66B0120)]
pub fn sceKernelReferEventFlagStatus(
event: SceUid,
status: *mut SceKernelEventFlagInfo,
) -> i32;
#[psp(0x8125221D)]
pub fn sceKernelCreateMbx(
name: *const u8,
attr: u32,
option: *mut SceKernelMbxOptParam,
) -> SceUid;
#[psp(0x86255ADA)]
pub fn sceKernelDeleteMbx(mbx_id: SceUid) -> i32;
#[psp(0xE9B3061E)]
pub fn sceKernelSendMbx(
mbx_id: SceUid,
message: *mut c_void,
) -> i32;
#[psp(0x18260574)]
pub fn sceKernelReceiveMbx(
mbx_id: SceUid,
message: *mut *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0xF3986382)]
pub fn sceKernelReceiveMbxCB(
mbx_id: SceUid,
message: *mut *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0x0D81716A)]
pub fn sceKernelPollMbx(
mbx_id: SceUid,
pmessage: *mut *mut c_void,
) -> i32;
#[psp(0x87D4DD36)]
pub fn sceKernelCancelReceiveMbx(
mbx_id: SceUid,
num: *mut i32,
) -> i32;
#[psp(0xA8E8C846)]
pub fn sceKernelReferMbxStatus(
mbx_id: SceUid,
info: *mut SceKernelMbxInfo,
) -> i32;
#[psp(0x6652B8CA)]
pub fn sceKernelSetAlarm(
clock: u32,
handler: SceKernelAlarmHandler,
common: *mut c_void,
) -> SceUid;
#[psp(0xB2C25152)]
pub fn sceKernelSetSysClockAlarm(
clock: *mut SceKernelSysClock,
handler: *mut SceKernelAlarmHandler,
common: *mut c_void,
) -> SceUid;
#[psp(0x7E65B999)]
pub fn sceKernelCancelAlarm(alarm_id: SceUid) -> i32;
#[psp(0xDAA3F564)]
pub fn sceKernelReferAlarmStatus(
alarm_id: SceUid,
info: *mut SceKernelAlarmInfo,
) -> i32;
#[psp(0xE81CAF8F)]
pub fn sceKernelCreateCallback(
name: *const u8,
func: SceKernelCallbackFunction,
arg: *mut c_void,
) -> SceUid;
#[psp(0x730ED8BC)]
pub fn sceKernelReferCallbackStatus(
cb: SceUid,
status: *mut SceKernelCallbackInfo,
) -> i32;
#[psp(0xEDBA5844)]
pub fn sceKernelDeleteCallback(cb: SceUid) -> i32;
#[psp(0xC11BA8C4)]
pub fn sceKernelNotifyCallback(
cb: SceUid,
arg2: i32,
) -> i32;
#[psp(0xBA4051D6)]
pub fn sceKernelCancelCallback(cb: SceUid) -> i32;
#[psp(0x2A3D44FF)]
pub fn sceKernelGetCallbackCount(cb: SceUid) -> i32;
#[psp(0x349D6D6C)]
pub fn sceKernelCheckCallback() -> i32;
#[psp(0x94416130)]
pub fn sceKernelGetThreadmanIdList(
type_: SceKernelIdListType,
read_buf: *mut SceUid,
read_buf_size: i32,
id_count: *mut i32,
) -> i32;
#[psp(0x627E6F3A)]
pub fn sceKernelReferSystemStatus(status: *mut SceKernelSystemStatus) -> i32;
#[psp(0x7C0DC2A0)]
pub fn sceKernelCreateMsgPipe(
name: *const u8,
part: i32,
attr: i32,
unk1: *mut c_void,
opt: *mut c_void,
) -> SceUid;
#[psp(0xF0B7DA1C)]
pub fn sceKernelDeleteMsgPipe(uid: SceUid) -> i32;
#[psp(0x876DBFAD)]
pub fn sceKernelSendMsgPipe(
uid: SceUid,
message: *mut c_void,
size: u32,
unk1: i32,
unk2: *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0x7C41F2C2)]
pub fn sceKernelSendMsgPipeCB(
uid: SceUid,
message: *mut c_void,
size: u32,
unk1: i32,
unk2: *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0x884C9F90)]
pub fn sceKernelTrySendMsgPipe(
uid: SceUid,
message: *mut c_void,
size: u32,
unk1: i32,
unk2: *mut c_void,
) -> i32;
#[psp(0x74829B76)]
pub fn sceKernelReceiveMsgPipe(
uid: SceUid,
message: *mut c_void,
size: u32,
unk1: i32,
unk2: *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0xFBFA697D)]
pub fn sceKernelReceiveMsgPipeCB(
uid: SceUid,
message: *mut c_void,
size: u32,
unk1: i32,
unk2: *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0xDF52098F)]
pub fn sceKernelTryReceiveMsgPipe(
uid: SceUid,
message: *mut c_void,
size: u32,
unk1: i32,
unk2: *mut c_void,
) -> i32;
#[psp(0x349B864D)]
pub fn sceKernelCancelMsgPipe(
uid: SceUid,
send: *mut i32,
recv: *mut i32,
) -> i32;
#[psp(0x33BE4024)]
pub fn sceKernelReferMsgPipeStatus(
uid: SceUid,
info: *mut SceKernelMppInfo,
) -> i32;
#[psp(0x56C039B5)]
pub fn sceKernelCreateVpl(
name: *const u8,
part: i32,
attr: i32,
size: u32,
opt: *mut SceKernelVplOptParam,
) -> SceUid;
#[psp(0x89B3D48C)]
pub fn sceKernelDeleteVpl(uid: SceUid) -> i32;
#[psp(0xBED27435)]
pub fn sceKernelAllocateVpl(
uid: SceUid,
size: u32,
data: *mut *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0xEC0A693F)]
pub fn sceKernelAllocateVplCB(
uid: SceUid,
size: u32,
data: *mut *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0xAF36D708)]
pub fn sceKernelTryAllocateVpl(
uid: SceUid,
size: u32,
data: *mut *mut c_void,
) -> i32;
#[psp(0xB736E9FF)]
pub fn sceKernelFreeVpl(
uid: SceUid,
data: *mut c_void,
) -> i32;
#[psp(0x1D371B8A)]
pub fn sceKernelCancelVpl(
uid: SceUid,
num: *mut i32,
) -> i32;
#[psp(0x39810265)]
pub fn sceKernelReferVplStatus(
uid: SceUid,
info: *mut SceKernelVplInfo,
) -> i32;
#[psp(0xC07BB470)]
pub fn sceKernelCreateFpl(
name: *const u8,
part: i32,
attr: i32,
size: u32,
blocks: u32,
opt: *mut SceKernelFplOptParam,
) -> i32;
#[psp(0xED1410E0)]
pub fn sceKernelDeleteFpl(uid: SceUid) -> i32;
#[psp(0xD979E9BF)]
pub fn sceKernelAllocateFpl(
uid: SceUid,
data: *mut *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0xE7282CB6)]
pub fn sceKernelAllocateFplCB(
uid: SceUid,
data: *mut *mut c_void,
timeout: *mut u32,
) -> i32;
#[psp(0x623AE665)]
pub fn sceKernelTryAllocateFpl(
uid: SceUid,
data: *mut *mut c_void,
) -> i32;
#[psp(0xF6414A71)]
pub fn sceKernelFreeFpl(
uid: SceUid,
data: *mut c_void,
) -> i32;
#[psp(0xA8AA591F)]
pub fn sceKernelCancelFpl(
uid: SceUid,
pnum: *mut i32,
) -> i32;
#[psp(0xD8199E4C)]
pub fn sceKernelReferFplStatus(
uid: SceUid,
info: *mut SceKernelFplInfo,
) -> i32;
#[psp(0x110DEC9A)]
pub fn sceKernelUSec2SysClock(
usec: u32,
clock: *mut SceKernelSysClock,
) -> i32;
#[psp(0xC8CD158C)]
pub fn sceKernelUSec2SysClockWide(usec: u32) -> i64;
#[psp(0xBA6B92E2)]
pub fn sceKernelSysClock2USec(
clock: *mut SceKernelSysClock,
low: *mut u32,
high: *mut u32,
) -> i32;
#[psp(0xE1619D7C)]
pub fn sceKernelSysClock2USecWide(
clock: i64,
low: *mut u32,
high: *mut u32,
) -> i32;
#[psp(0xDB738F35)]
pub fn sceKernelGetSystemTime(time: *mut SceKernelSysClock) -> i32;
#[psp(0x82BC5777)]
pub fn sceKernelGetSystemTimeWide() -> i64;
#[psp(0x369ED59D)]
pub fn sceKernelGetSystemTimeLow() -> u32;
#[psp(0x20FFF560)]
pub fn sceKernelCreateVTimer(
name: *const u8,
opt: *mut SceKernelVTimerOptParam,
) -> SceUid;
#[psp(0x328F9E52)]
pub fn sceKernelDeleteVTimer(uid: SceUid) -> i32;
#[psp(0xB3A59970)]
pub fn sceKernelGetVTimerBase(
uid: SceUid,
base: *mut SceKernelSysClock,
) -> i32;
#[psp(0xB7C18B77)]
pub fn sceKernelGetVTimerBaseWide(uid: SceUid) -> i64;
#[psp(0x034A921F)]
pub fn sceKernelGetVTimerTime(
uid: SceUid,
time: *mut SceKernelSysClock,
) -> i32;
#[psp(0xC0B3FFD2)]
pub fn sceKernelGetVTimerTimeWide(uid: SceUid) -> i64;
#[psp(0x542AD630)]
pub fn sceKernelSetVTimerTime(
uid: SceUid,
time: *mut SceKernelSysClock,
) -> i32;
#[psp(0xFB6425C3)]
pub fn sceKernelSetVTimerTimeWide(uid: SceUid, time: i64) -> i64;
#[psp(0xC68D9437)]
pub fn sceKernelStartVTimer(uid: SceUid) -> i32;
#[psp(0xD0AEEE87)]
pub fn sceKernelStopVTimer(uid: SceUid) -> i32;
#[psp(0xD8B299AE)]
pub fn sceKernelSetVTimerHandler(
uid: SceUid,
time: *mut SceKernelSysClock,
handler: SceKernelVTimerHandler,
common: *mut c_void,
) -> i32;
#[psp(0x53B00E9A)]
pub fn sceKernelSetVTimerHandlerWide(
uid: SceUid,
time: i64,
handler: SceKernelVTimerHandlerWide,
common: *mut c_void,
) -> i32;
#[psp(0xD2D615EF)]
pub fn sceKernelCancelVTimerHandler(uid: SceUid) -> i32;
#[psp(0x5F32BEAA)]
pub fn sceKernelReferVTimerStatus(
uid: SceUid,
info: *mut SceKernelVTimerInfo,
) -> i32;
#[psp(0x0C106E53)]
pub fn sceKernelRegisterThreadEventHandler(
name: *const u8,
thread_id: SceUid,
mask: i32,
handler: SceKernelThreadEventHandler,
common: *mut c_void,
) -> SceUid;
#[psp(0x72F3C145)]
pub fn sceKernelReleaseThreadEventHandler(uid: SceUid) -> i32;
#[psp(0x369EEB6B)]
pub fn sceKernelReferThreadEventHandlerStatus(
uid: SceUid,
info: *mut SceKernelThreadEventHandlerInfo,
) -> i32;
#[psp(0x64D4540E)]
pub fn sceKernelReferThreadProfiler() -> *mut DebugProfilerRegs;
#[psp(0x8218B4DD)]
pub fn sceKernelReferGlobalProfiler() -> *mut DebugProfilerRegs;
}