サンプルを頼りに、作り方を...

構成
ヘッダーファイル
/* FIFO の定義 */ #define DATA_FIFO 0 /* データ用のFIFO */
#define CTL_FIFO 1 /* 制御用の FIFO */
/* FIFO のサイズ */
#define DATA_FIFO_SIZE 4000
#define CTL_FIFO_SIZE 100

typedef struct {
int command; /* 渡すコマンドのマクロを入れます */
int period; /* 動作間隔を入れます */
/* ここから下は、渡したいパラメーターを書きます */
/* 名前や個数等は修正して下さい */
int para_1;
int para_2;
} MyMsgType;

/* コマンド用のマクロ */
#define START_TASK 1
#define STOP_TASK 0


モジュール側
/* ヘッダーブロック */
#define MODULE
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/errno.h>

#include <linux/rt_sched.h>
#include <linux/rtf.h>
#include "my_head.h" /* インクルードするヘッダーファイル */

RT_TASK task; /* task 情報が登録される構造体 */

/* 計測する所 */
void get_data( int fifo ) {
int d; while(1){
/* データを取り込むコードを書いて下さい */
/* To be continued... */
d = ...; /* d はデータが入っています。 */
rtf_put( DATA_FIFO, d, sizeof( int ) );
rt_task_wait();
}
}

/* タスク制御の関数 */
int my_handler( unsigned int fifo ) {
MyMsgType msg;
int err;
RTIME now;

while(( err = rtf_get(CTL_FIFO, &msg, sizeof(msg))) == sizeof(msg)){
switch( msg.command ){
case START_TASK:
/* タスクを起動する開始時間として、今の時間をとってきて */
now = rt_get_time();
/* タスクを指定時間間隔で起動します */
rt_task_make_periodic( &task, now, msg.periodic );
break;
case STOP_TASK:
/* 指定したタスクを止めます */
rt_task_suspend( &task );
break;
default:
return -EINVAL;
}
}
if( err != 0 ){
return -EINVAL;
}
return 0;
}

/* モジュールの初期化関数 */
int init_module( void ) {
/* データを受け渡す FIFO を作る */
rtf_create( DATA_FIFO, DATA_FIFO_SIZE );
rtf_creatr( CTL_FIFO, CTL_FIFO_SIZE );
/* タスクの初期化 */
rt_task_init( &task, get_data, 0, 3000, 4);
rtf_create_handler( CTL_FIFO, &my_handler );
return 0;
}

/* 終了時の処理 */
void cleanup_module(void) {
/* FIFO の解放 */
rtf_destroy( DATA_FIFO_DATA );
rtf_destroy( CTL_FIFO_DATA );
/* タスクの削除 */
rt_task_delete( &task );
}

メイン側