sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
timer.c File Reference
#include <kernel.h>
#include <timer.h>
#include <string.h>
#include <mipscopaccess.h>

Go to the source code of this file.

Classes

struct  counter_struct_
struct  timer_ee_global_struct_

Macros

#define TIMER_MODE_START   0x00000001
#define TIMER_MODE_HANDLER   0x00000002
#define PTR_TO_TIMER_ID(ptr_)
#define TIMER_ID_TO_PTR(id_)
#define TIMER_ID_IS_VALID(id_)
#define COUNTER_COUNT   128
#define CLOCKS_GAP   0x200

Typedefs

typedef struct timer_ee_global_struct_ timer_ee_global_struct

Functions

struct counter_struct_ __attribute__ ((aligned(64)))
void ForTimer_InitAlarm (void)
void SetT2 (volatile void *ptr, u32 val)
void SetT2_COUNT (u32 val)
void SetT2_MODE (u32 val)
void SetT2_COMP (u32 val)
void InsertAlarm_ForTimer (counter_struct_t *timer_link)
counter_struct_t * UnlinkAlarm_ForTimer (counter_struct_t *timer_unlink)
s32 TimerHandler_callback (s32 cause, void *arg, void *addr)
void __attribute__ ((weak))
s32 GetTimerPreScaleFactor (void)
void SetNextComp (u64 time_now)
u64 iGetTimerSystemTime (void)
void _ps2sdk_init_timer_impl (void)
void _ps2sdk_deinit_timer_impl (void)
u64 GetTimerSystemTime (void)
s32 iAllocTimerCounter (void)
s32 AllocTimerCounter (void)
s32 iFreeTimerCounter (s32 id)
s32 FreeTimerCounter (s32 id)
s32 iGetTimerUsedUnusedCounters (u32 *used_counters, u32 *unused_counters)
s32 GetTimerUsedUnusedCounters (u32 *used_counters, u32 *unused_counters)
s32 iStartTimerCounter (s32 id)
s32 StartTimerCounter (s32 id)
s32 iStopTimerCounter (s32 id)
s32 StopTimerCounter (s32 id)
u64 SetTimerCount (s32 id, u64 timer_count)
u64 iGetTimerBaseTime (s32 id)
u64 GetTimerBaseTime (s32 id)
u64 iGetTimerCount (s32 id)
u64 GetTimerCount (s32 id)
s32 iSetTimerHandler (s32 id, u64 scheduled_time, timer_alarm_handler_t callback_handler, void *arg)
s32 SetTimerHandler (s32 id, u64 scheduled_time, timer_alarm_handler_t callback_handler, void *arg)
void TimerBusClock2USec (u64 clocks, u32 *seconds_result, u32 *microseconds_result)
u64 TimerUSec2BusClock (u32 seconds, u32 microseconds)
float TimerBusClock2Freq (s64 clocks)
u64 TimerFreq2BusClock (float timer_frequency)
u32 cpu_ticks (void)

Variables

struct counter_struct_ * timer_next
struct counter_struct_ * timer_previous
vu32 timer_key
u32 timer_mode
u64 timer_base_time
u64 timer_base_count
u64 timer_schedule
timer_alarm_handler_t callback_handler
void * gp_value
void * callback_handler_arg
u32 padding [3]
timer_ee_global_struct g_Timer

Detailed Description

Some routines to do some timer work

Definition in file timer.c.

Macro Definition Documentation

◆ CLOCKS_GAP

#define CLOCKS_GAP   0x200

Definition at line 258 of file timer.c.

◆ COUNTER_COUNT

#define COUNTER_COUNT   128

Definition at line 65 of file timer.c.

◆ PTR_TO_TIMER_ID

#define PTR_TO_TIMER_ID ( ptr_)
Value:
((s32)((((uiptr)(ptr_)) << 4) | ((ptr_)->timer_key)))

Definition at line 50 of file timer.c.

◆ TIMER_ID_IS_VALID

#define TIMER_ID_IS_VALID ( id_)
Value:
((TIMER_ID_TO_PTR(id_) != NULL) && ((siptr)(id_) >= 0) && (((uiptr)(id_) & 0x3FF) == ((TIMER_ID_TO_PTR(id_))->timer_key)))

Definition at line 52 of file timer.c.

◆ TIMER_ID_TO_PTR

#define TIMER_ID_TO_PTR ( id_)
Value:
((counter_struct_t *)((((uiptr)(id_)) >> 10) << 6))

Definition at line 51 of file timer.c.

◆ TIMER_MODE_HANDLER

#define TIMER_MODE_HANDLER   0x00000002

Definition at line 22 of file timer.c.

◆ TIMER_MODE_START

#define TIMER_MODE_START   0x00000001

Definition at line 21 of file timer.c.

Function Documentation

◆ __attribute__()

void __attribute__ ( (weak) )

Init the timer

Start the interruption handler for getting the system time This function should be called at beginning of your program

Finish the timer

Stops the interruption handler for getting the system time This function should be called when ending your program

Definition at line 70 of file timer.c.

◆ _ps2sdk_deinit_timer_impl()

void _ps2sdk_deinit_timer_impl ( void )

Definition at line 472 of file timer.c.

◆ _ps2sdk_init_timer_impl()

void _ps2sdk_init_timer_impl ( void )

Definition at line 466 of file timer.c.

◆ AllocTimerCounter()

s32 AllocTimerCounter ( void )

Definition at line 520 of file timer.c.

◆ cpu_ticks()

u32 cpu_ticks ( void )

Definition at line 869 of file timer.c.

◆ FreeTimerCounter()

s32 FreeTimerCounter ( s32 id)

Definition at line 559 of file timer.c.

◆ GetTimerBaseTime()

u64 GetTimerBaseTime ( s32 id)

Definition at line 742 of file timer.c.

◆ GetTimerCount()

u64 GetTimerCount ( s32 id)

Definition at line 774 of file timer.c.

◆ GetTimerPreScaleFactor()

s32 GetTimerPreScaleFactor ( void )

Definition at line 188 of file timer.c.

◆ GetTimerSystemTime()

u64 GetTimerSystemTime ( void )

Get current System Time

This function gets the current system time Can be called from an interrupt handler Can be called from a thread Multithread safe

Returns
current system time in BUSCLK units, 0 in case the InitTimer wasn't called at init.

Definition at line 487 of file timer.c.

◆ GetTimerUsedUnusedCounters()

s32 GetTimerUsedUnusedCounters ( u32 * used_counters,
u32 * unused_counters )

Definition at line 590 of file timer.c.

◆ iAllocTimerCounter()

s32 iAllocTimerCounter ( void )

Definition at line 501 of file timer.c.

◆ iFreeTimerCounter()

s32 iFreeTimerCounter ( s32 id)

Definition at line 534 of file timer.c.

◆ iGetTimerBaseTime()

u64 iGetTimerBaseTime ( s32 id)

Definition at line 726 of file timer.c.

◆ iGetTimerCount()

u64 iGetTimerCount ( s32 id)

Definition at line 756 of file timer.c.

◆ iGetTimerSystemTime()

u64 iGetTimerSystemTime ( void )

Get current System Time

This function gets the current system time Can be called from an interrupt handler Cannot be called from a thread

Returns
current system time in BUSCLK units, 0 in case the InitTimer wasn't called at init.

Definition at line 448 of file timer.c.

◆ iGetTimerUsedUnusedCounters()

s32 iGetTimerUsedUnusedCounters ( u32 * used_counters,
u32 * unused_counters )

Definition at line 573 of file timer.c.

◆ InsertAlarm_ForTimer()

void InsertAlarm_ForTimer ( counter_struct_t * timer_link)
extern

Definition at line 304 of file timer.c.

◆ iSetTimerHandler()

s32 iSetTimerHandler ( s32 id,
u64 scheduled_time,
timer_alarm_handler_t callback_handler,
void * arg )

Definition at line 788 of file timer.c.

◆ iStartTimerCounter()

s32 iStartTimerCounter ( s32 id)

Definition at line 604 of file timer.c.

◆ iStopTimerCounter()

s32 iStopTimerCounter ( s32 id)

Definition at line 647 of file timer.c.

◆ SetNextComp()

void SetNextComp ( u64 time_now)

Definition at line 259 of file timer.c.

◆ SetT2()

void SetT2 ( volatile void * ptr,
u32 val )
extern

Definition at line 90 of file timer.c.

◆ SetT2_COMP()

void SetT2_COMP ( u32 val)
extern

Definition at line 107 of file timer.c.

◆ SetT2_COUNT()

void SetT2_COUNT ( u32 val)
extern

Definition at line 97 of file timer.c.

◆ SetT2_MODE()

void SetT2_MODE ( u32 val)
extern

Definition at line 102 of file timer.c.

◆ SetTimerCount()

u64 SetTimerCount ( s32 id,
u64 timer_count )

Definition at line 690 of file timer.c.

◆ SetTimerHandler()

s32 SetTimerHandler ( s32 id,
u64 scheduled_time,
timer_alarm_handler_t callback_handler,
void * arg )

Definition at line 825 of file timer.c.

◆ StartTimerCounter()

s32 StartTimerCounter ( s32 id)

Definition at line 633 of file timer.c.

◆ StopTimerCounter()

s32 StopTimerCounter ( s32 id)

Definition at line 676 of file timer.c.

◆ TimerBusClock2Freq()

float TimerBusClock2Freq ( s64 clocks)

Definition at line 859 of file timer.c.

◆ TimerBusClock2USec()

void TimerBusClock2USec ( u64 clocks,
u32 * seconds_result,
u32 * microseconds_result )

Definition at line 839 of file timer.c.

◆ TimerFreq2BusClock()

u64 TimerFreq2BusClock ( float timer_frequency)

Definition at line 864 of file timer.c.

◆ TimerHandler_callback()

s32 TimerHandler_callback ( s32 cause,
void * arg,
void * addr )
extern

Definition at line 379 of file timer.c.

◆ TimerUSec2BusClock()

u64 TimerUSec2BusClock ( u32 seconds,
u32 microseconds )

Definition at line 854 of file timer.c.

◆ UnlinkAlarm_ForTimer()

counter_struct_t * UnlinkAlarm_ForTimer ( counter_struct_t * timer_unlink)
extern

Definition at line 339 of file timer.c.

Variable Documentation

◆ callback_handler

timer_alarm_handler_t callback_handler

Definition at line 7 of file timer.c.

◆ callback_handler_arg

void* callback_handler_arg

Definition at line 9 of file timer.c.

◆ g_Timer

timer_ee_global_struct g_Timer

Definition at line 67 of file timer.c.

◆ gp_value

void* gp_value

Definition at line 8 of file timer.c.

◆ padding

u32 padding[3]

Definition at line 10 of file timer.c.

◆ timer_base_count

u64 timer_base_count

Definition at line 5 of file timer.c.

◆ timer_base_time

u64 timer_base_time

Definition at line 4 of file timer.c.

◆ timer_key

vu32 timer_key

Definition at line 2 of file timer.c.

◆ timer_mode

u32 timer_mode

Definition at line 3 of file timer.c.

◆ timer_next

struct counter_struct_* timer_next

Definition at line 0 of file timer.c.

◆ timer_previous

struct counter_struct_* timer_previous

Definition at line 1 of file timer.c.

◆ timer_schedule

u64 timer_schedule

Definition at line 6 of file timer.c.