Implementation: system time services. More...
#include <config.h>
#include <sys/time.h>
#include <sys/h8.h>
#include <sys/irq.h>
#include <sys/dmotor.h>
#include <sys/dsound.h>
#include <sys/battery.h>
#include <sys/critsec.h>
#include <sys/timeout.h>
Go to the source code of this file.
Functions | |
void | clock_handler (void) |
clock handler triggered on the WDT overflow (every msec) on the NMI More... | |
void | subsystem_handler (void) |
subsystem handler for every 2nd msec More... | |
void | task_switch_handler (void) |
task switch handler called every msec More... | |
void | systime_init (void) |
initialize system timer More... | |
void | systime_shutdown (void) |
shutdown system timer More... | |
void | systime_set_switcher (void *switcher) |
set task switcher vector More... | |
void | systime_set_timeslice (unsigned char slice) |
set multitasking timeslice in ms More... | |
time_t | get_system_up_time (void) |
retrieve the current system time More... | |
__asm__ ("\n\ .text\n\ .align 1\n\ .global _get_system_up_time\n\ _get_system_up_time:\n\ push r2\n\ try_again:\n\ mov.w @_sys_time+2, r1\n\ mov.w @_sys_time, r0\n\ mov.w @_sys_time+2, r2\n\ cmp r2, r1\n\ bne try_again\n\ pop r2\n\ rts\n\ ") | |
Variables | |
volatile time_t | sys_time |
current system time in ms More... | |
volatile unsigned char | tm_timeslice |
task time slice More... | |
volatile unsigned char | tm_current_slice |
current time remaining More... | |
void * | tm_switcher_vector |
pointer to task switcher More... | |
Implementation: system time services.
Definition in file systime.c.
__asm__ | ( | "\n\.text\n\.align 1\n\.global _get_system_up_time\n\_get_system_up_time:\n\ push r2\n\ try_again:\n\ mov.w @_sys_time+ | 2, |
r1\n\ mov.w @ | _sys_time, | ||
r0\n\ mov.w @_sys_time+ | 2, | ||
r2\n\ cmp | r2, | ||
r1\n\ bne try_again\n\ pop r2\n\ rts\n\" | |||
) |
void clock_handler | ( | void | ) |
clock handler triggered on the WDT overflow (every msec) on the NMI
this is the system clock
Referenced by systime_init().
time_t get_system_up_time | ( | void | ) |
retrieve the current system time
void subsystem_handler | ( | void | ) |
subsystem handler for every 2nd msec
this is the pulse of the system (subsystems). sound, motor and lcd driver calls are initiated here. task_switch_handler is called from here as well.
Referenced by systime_init().
void systime_init | ( | void | ) |
initialize system timer
task switcher initialized to empty handler motors turned off
Definition at line 270 of file systime.c.
References clock_handler(), dm_shutdown(), nmi_vector, ocia_vector, ocib_vector, rom_dummy_handler(), subsystem_handler(), sys_time, systime_shutdown(), T_CR, T_CSR, T_IER, T_OCR, T_OCRA, T_OCRB, task_switch_handler(), TCR_CLOCK_32, TCSR_RESET_ON_A, TIER_ENABLE_OCA, TIER_ENABLE_OCB, tm_current_slice, TM_DEFAULT_SLICE, tm_switcher_vector, tm_timeslice, TOCR_OCRA, TOCR_OCRB, WDT_CNT_MSEC_64, WDT_CNT_PASSWORD, WDT_CSR, WDT_CSR_CLOCK_64, WDT_CSR_ENABLE, WDT_CSR_MODE_WATCHDOG, WDT_CSR_PASSWORD, and WDT_CSR_WATCHDOG_NMI.
void systime_set_switcher | ( | void * | switcher | ) |
set task switcher vector
switcher | the switcher |
Definition at line 326 of file systime.c.
References tm_switcher_vector.
void systime_set_timeslice | ( | unsigned char | slice | ) |
set multitasking timeslice in ms
slice | the timeslice. must be at least 5ms. |
Definition at line 333 of file systime.c.
References tm_current_slice, and tm_timeslice.
void systime_shutdown | ( | void | ) |
shutdown system timer
will also stop task switching and motors.
Definition at line 317 of file systime.c.
References T_IER, TIER_ENABLE_OCA, TIER_ENABLE_OCB, WDT_CSR, and WDT_CSR_ENABLE.
Referenced by systime_init().
void task_switch_handler | ( | void | ) |
volatile time_t sys_time |
current system time in ms
Definition at line 63 of file systime.c.
Referenced by systime_init().
volatile unsigned char tm_current_slice |
current time remaining
Definition at line 73 of file systime.c.
Referenced by systime_init(), and systime_set_timeslice().
void* tm_switcher_vector |
pointer to task switcher
Definition at line 75 of file systime.c.
Referenced by systime_init(), and systime_set_switcher().
volatile unsigned char tm_timeslice |
task time slice
Definition at line 72 of file systime.c.
Referenced by systime_init(), and systime_set_timeslice().
brickOS is released under the
Mozilla Public License.
Original code copyright 1998-2005 by the authors. |