FC2ブログ
メモ帳
メモ帳
スポンサーサイト
--年--月--日 (--) --:-- | 編集
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
kthreadの使い方とか
2007年05月09日 (水) 10:56 | 編集
kthread_createは生成だけだったが、kernel_threadと同様に
生成&スタートをするのがkthread_run。

struct task_struct *kthread_run(threadfn, data, namefmt, ...)
使い方はkthread_createと一緒かなたぶん(引数戻り値一緒だし)

スレッド実装に使うのがkthread_should_stopとkthread_stop。
int kthread_should_stop(void)
ストップが呼ばれたら真をかえす。(たぶん

int kthread_stop(struct task_struct *k)
ストップを呼ぶ。
引数にはkthread_createかkthread_runの戻り値を入れてやればいいはず。
実装例)
#include<linux/kthread.h>
struct task_struct *th;

static int test_thread(void * num)
{
  while(!kthread_should_stop()){
    //なんか処理
  }
}
static int __init init_test(void){ //threadを生成する初期化モジュール
  
  //省略

  //thread生成
  th = kthread_run(test_thread, &num, "test_thread");
  if (IS_ERR(th)) {
    //thread生成失敗
    goto ERR_RET;
  }
}
static void __exit cleanup_test(void){
  //cleanup処理
  //thread停止
  kthread_stop(th);
}
module_init(init_test);
module_exit(cleanup_test);

スレッド処理関数内はkthread_should_stopでwhileループかけて
kthread_stopが呼ばれるまでスレッド生存させといて
モジュールのクリーンアップ時にkthread_stopでスレッド処理間巣を終わらせる。
みたいな処理。
コメント
この記事へのコメント
コメントを投稿する
URL :
コメント :
パスワード :
秘密 : 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004 Powered By FC2 allrights reserved. / template: sukechan
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。