メモ帳
メモ帳
スポンサーサイト
--年--月--日 (--) --:-- | 編集
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
kernel_thread→kthread_createへ変更
2007年05月09日 (水) 10:37 | 編集
kernel_threadは今後使えなくなるとか。
というわけで、新しくドライバを書くときはkthread_createを使えとか。

int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
引数1はスレッドとして動く関数を指定。
引数2は引数1の関数にスレッド生成時に渡す引数。
引数3はスレッドの属性フラグ
 CLONE_FS
 CLONE_FILES
 ・・・etc 詳細未調査

struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[], ...)
引数1はスレッドとして動く関数を指定。
引数2は引数1の関数にスレッド生成時に渡す引数。
引数3はpsコマンドで表示される名前

kernel_threadは生成した後、スレッドをスタートさせるが、kthread_createは生成するだけ。
走らせたかったらwake_up_processを呼び出す。
kernel_thread例)
static int *test_thread(void *num)
{
  //thread処理
}

static int __init init_test(void){ //threadを生成する初期化モジュール
  //省略

  //thread生成&スタート
  if ((kernel_thread((void *)test_thread, (void *)num, CLONE_FS | CLONE_FILES ) < 0)) {
    //thread生成失敗
    goto ERR_RET;
  }
  //省略
}

kthread_create例)
#include

static int test_thread(void * num)
{
  //thread処理
}

static int __init init_test(void){ //threadを生成する初期化モジュール
  struct task_struct *th;
  //省略

  //thread生成
  th = kthread_create(test_thread, &num, "test_thread");
  if (IS_ERR(th)) {
    //thread生成失敗
    goto ERR_RET;
  }
  //threadスタート
  wake_up_process(th);

  //省略
}
コメント
この記事へのコメント
介護福祉の情報掲示板
介護福祉の情報掲示板. 介護福祉に関して日頃感じていることや疑問、情報提供などお気軽にカキコキして下さい。 http://www2.rocketbbs.com/200/akanekai.html
2008/08/06(水) 09:38:58 | URL | 石井 清 #-[編集]
承認待ちコメント
このコメントは管理者の承認待ちです
2008/12/31(水) 07:01:20 | | #[編集]
コメントを投稿する
URL :
コメント :
パスワード :
秘密 : 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004 Powered By FC2 allrights reserved. / template: sukechan
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。