GNU/Linux >> Linux の 問題 >  >> Linux

Linux カーネル モジュールで定期的なタイマー コールバックをセットアップする方法

Linux カーネルの高解像度タイマー hrtimer オプションです。 http://lwn.net/Articles/167897/

ここで私がすること:

#include <linux/interrupt.h>
#include <linux/hrtimer.h>
#include <linux/sched.h>

static struct hrtimer htimer;
static ktime_t kt_periode;

static void timer_init(void)
{
    kt_periode = ktime_set(0, 104167); //seconds,nanoseconds
    hrtimer_init (& htimer, CLOCK_REALTIME, HRTIMER_MODE_REL);
    htimer.function = timer_function;
    hrtimer_start(& htimer, kt_periode, HRTIMER_MODE_REL);
}

static void timer_cleanup(void)
{
    hrtimer_cancel(& htimer);
}

static enum hrtimer_restart timer_function(struct hrtimer * timer)
{
    // @Do your work here. 

    hrtimer_forward_now(timer, kt_periode);

    return HRTIMER_RESTART;
}

Linux
  1. Linuxデスクトップでカーネルをアップグレードする方法

  2. Linux LKM ローダブル カーネル モジュールを作成、コンパイル、ロードする方法

  3. Linux カーネル タイマーの変更

  1. Linux –どのモジュールがカーネルを汚染しているかを判断する方法は?

  2. Linux カーネルモジュールのコーディング方法は?

  3. ブート時に組み込み Linux カーネルモジュールに値を渡す方法は?

  1. Linux – Linuxの汚染されたカーネル?

  2. Linux –カーネルモジュールを適切にリロードする方法は?

  3. 簡単な例で独自の Linux カーネル モジュールを作成する方法