57 #include "sysconfig.h" 66 #ifndef GSC_KERNEL_MAX_KERNEL_TIMER_FUNC 67 #define GSC_KERNEL_MAX_KERNEL_TIMER_FUNC 8 104 static volatile int flg_timer_count = 1;
106 static void kernel_timer(
void *sp)
110 if(flg_timer_count != 0) {
131 if(kernel_timer_func != 0) {
144 void init_timer(
char *devname)
154 kernel_timer_func = 0;
159 SYSERR_PRINT(
"Cannot open timer device.\n");
164 SYSERR_PRINT(
"Cannot register timer function.\n");
169 SYSERR_PRINT(
"Cannot start system timer.\n");
173 #ifndef GSC_TARGET_SYSTEM_EMU 174 while(flg_timer_count) {
204 unsigned long long utime;
218 volatile unsigned long long t, nt;
245 volatile unsigned int i, count;
249 DKFPRINTF(0x01,
"timr = %d, count = %d\n", count);
251 for(i=0; i<count; i++) {
263 kernel_timer_func = func;
288 SYSERR_PRINT(
"Cannot register timer func (over GSC_KERNEL_MAX_KERNEL_TIMER_FUNC).\n");
311 SYSERR_PRINT(
"Cannot unregister timer func.\n");
331 #ifdef DEV_ENABLE_RTC unsigned long long get_system_utime(void)
システム時間を取得する
#define IOCMD_TIMER_GETSYSTIME
タイマの値を取得する(usec)
int start_timer(void)
タイマを開始する
static unsigned long func_interval[GSC_KERNEL_MAX_KERNEL_TIMER_FUNC]
タイマ関数実行間隔
struct st_device * open_device(char *name)
デバイスをオープンする
static unsigned long func_timecnt[GSC_KERNEL_MAX_KERNEL_TIMER_FUNC]
タイマ関数タイマ
#define IOCMD_TIMER_SETFUNC
タイマの割り込みハンドラ処理を登録する
#define IOCMD_TIMER_STOP
タイマのカウントを停止する
static int int_count
カーネルタイマを初期化する
#define GSC_KERNEL_TIMER_INTERVAL_MSEC
$gsc カーネルタイマ割り込み間隔(ms)
void wait_time(unsigned int time)
指定時間待つ
static struct st_device * timer_dev
カーネルタイマデバイス
int register_timer_func(timer_func func, unsigned long interval)
周期処理を追加する
unsigned long long kernel_time_count
カーネル時間(ms)
void register_kernel_timer_func(timer_func func)
カーネル周期処理を追加する
int unregister_timer_func(timer_func func)
周期処理を削除する
void wait_utime(unsigned int time)
指定時間待つ
#define IOCMD_TIMER_GETTIME
タイマの値を取得する(msec)
unsigned long long get_kernel_time(void)
カーネル時間を取得する
void(* timer_func)(void *sp, unsigned long long systime)
カーネルタイマ周期処理関数の型
#define IOCMD_TIMER_START
タイマのカウントを開始する
int stop_timer(void)
タイマを停止する
#define GSC_KERNEL_MAX_KERNEL_TIMER_FUNC
$gsc カーネルタイマに登録できる最大定期処理関数数
static timer_func timer_func_list[GSC_KERNEL_MAX_KERNEL_TIMER_FUNC]
タイマ関数リスト
void stop_timer_func(void)
タイマ関数の周期実行を停止する
int ioctl_device(struct st_device *dev, unsigned int com, unsigned int arg, void *param)
デバイスを制御する
void start_timer_func(void)
タイマ関数の周期実行を開始する
static unsigned char flg_exec_func
タイマ関数実行フラグ