Timerの実装はほぼ以下のつのファイルよりなる。より低レベルなものから、 KL1のインターフェースを実現したものの順に概説する。
低水準のタイマとの最大の差は、低水準タイマは SIGALRMが発生した直後に処理を行うのに対して、高水準なものは、 直後のリダクションの切れ目に処理をおこなうことにある。よって、少なくとも KL1の実行に関わるような事柄はこの高水準タイマで設定される必要がある。
高水準のタイマ要求リストには、要求時刻と、ハンドラ、およびデータを1つ 渡すことができるようになっている。
指定された時刻、処理をタイマ要求リストに登録し、その後、 process_timer_interrupt() を呼びだす。
タイマ要求リストには、具体化すべき変数と、それに「NILを具体化する」 という関数(process_timed_instantiation())が登録される。
指定された時刻、処理をタイマ要求リストに登録し、その後、 process_timer_interrupt() を呼びだす。
タイマ要求リストには、具体化すべき関数ポインタ(をアトムタグにしたもの)、 と、その「関数を実行する」関数(process_simple_timer_handler())が登録される。 アトムタグが付加されているのは、後述のgc_timer_dataで単純にコピーされることを 狙ってのことである。
この関数では、高水準タイマ要求リストを嘗め、 すでに過去のものになっている要求について、その指定されているハンドラ (つまり、process_timed_instantiation()/process_simple_timer_handler())を 実行する。 実行した後には klic_timer_interrupt_handler() を例外処理関数として call_at_specified_time により低レベルタイマに登録する。
このklic_timer_interrupt_hander() は、一般的な例外処理と同様、単に 「例外があった」ことを記録し、klic_signal_handler() 内で process_timer_interrupt()も実行される。
ページ、第3章参照)。