フォーラム: 開発者 (スレッド #37733)

isig.timでのタイマハンドラ呼出しについて (2016-05-20 01:04 by komet #78071)

ohmshaのITRONプログラミング入門で勉強中の者です。
h8/3664でのsampleプログラムでの質問です。

システムクロック生成のためisig_tim.cというファイルがありますが、
そのなかで、タイマハンドラ呼出しというコードがあります。

isig_tim.cの66行目で
/* タイマハンドラ呼び出し */
tim_ptr->timhdr(tim_ptr, tic);
という記述があります。

knl_tim.hというファイルの
/* タイマオブジェクト構造体 */
typedef struct t_kernel_tim
{
struct t_kernel_tim *next;
struct t_kernel_tim *prev;
FP timhdr;
} T_KERNEL_TIM;
で関数ポインタになっているような
記述は見つけたのですが、
その先が見つかりません。

timhdrとは
どこかに
タイマハンドラとして
記述があるのでしょうか?
すみませんがご教授お願いいたします。

Re: isig.timでのタイマハンドラ呼出しについて (2016-05-20 09:23 by hamayan #78072)

お世話になっております。

66行目辺りのループ文では、時間管理機能のサービスコールで登録されたハンドラを
呼び出しています。
周期ハンドラやアラームハンドラなどです。

以上、よろしくお願いいたします。



[メッセージ #78071 への返信]
> ohmshaのITRONプログラミング入門で勉強中の者です。
> h8/3664でのsampleプログラムでの質問です。
>
> システムクロック生成のためisig_tim.cというファイルがありますが、
> そのなかで、タイマハンドラ呼出しというコードがあります。
>
> isig_tim.cの66行目で
> /* タイマハンドラ呼び出し */
> tim_ptr->timhdr(tim_ptr, tic);
> という記述があります。
>
> knl_tim.hというファイルの
> /* タイマオブジェクト構造体 */
> typedef struct t_kernel_tim
> {
> struct t_kernel_tim *next;
> struct t_kernel_tim *prev;
> FP timhdr;
> } T_KERNEL_TIM;
> で関数ポインタになっているような
> 記述は見つけたのですが、
> その先が見つかりません。
>
> timhdrとは
> どこかに
> タイマハンドラとして
> 記述があるのでしょうか?
> すみませんがご教授お願いいたします。
#78071 への返信

Re: isig.timでのタイマハンドラ呼出しについて (2016-05-22 16:01 by ryuz #78079)

お世話になります。Ryuzです。

タイマを使うオブジェクトの timhdr への登録は

alm\ini_alm.c 28行目
ini_cyc.c 28行目
kcre_cyc.c 43行目

などにあります。

ITRON機能のなかで時間を扱うものはいくつかありますが、HOSでは内部的に1つのキューに統合しており、各種静的API/動的APIでの生成オブジェクトの状態に応じて登録が行われます。

よろしくお願いいたします。
#78071 への返信