Re: [問題] 請問 kernel thread ..
※ 引述《prototype (江山如此多嬌)》之銘言:
: ※ 引述《nfsnfs (Busy)》之銘言:
: : 請問可以去哪裡找 kernel thread 怎麼寫呀 orz
: : 我找不到太多資料 :Q
: : 我想要自己新增一個 kernel thread 來處理我在其他 system call 新增的訊息
: : http://www.linux-mag.com/id/2195/
: : http://www.linuxquestions.org/linux/articles/Technical/Linux_Kernel_Thread
: : 目前小弟找到的是這兩個網頁感覺比較有參考價值..
: : 先感謝大家了 :)
: 寫一個 kernel module,然後 insert 到核心裡就可以了,
: 可以做成 driver 的形式,基本上是很簡單的。
我嘗試寫了一個很簡單的 kernel thread,
可是總是會在 read_lock 的時候跳出錯誤訊息,
然後 kernel thread 有跑,但是跑一陣子就會整台電腦 freeze 了 @_@"
以下附上錯誤訊息和 source code,希望哪位可以指正我做錯的地方,感恩 :)
error message:
BUG: rwlock bad magic on CPU#0, test_thread/2784, c078c59c
[<c04d9eaf>] _raw_read_lock+0x16/0x25
[<c05b7b90>] test_thread+0x0/0x7c
[<c05b7bed>] test_thread+0x5d/0x7c
[<c05b7b90>] test_thread+0x0/0x7c
[<c0404927>] kernel_thread_helper+0x7/0x10
=======================
source code:
rwlock_t myevent_lock;
int test_thread (void *unused)
{
int num;
current->test_thread.enable = 1;
daemonize ("test_thread");
allow_signal (SIGKILL);
for (;;) {
set_current_state (TASK_INTERRUPTIBLE);
schedule_timeout(30);
if (signal_pending (current)) break;
num = current->test_thread.num;
read_lock (&myevent_lock);
if (num > 0) {
read_unlock (&myevent_lock);
printk("Debug: num = %d\n", num);
}
else {
read_unlock (&myevent_lock);
}
}
set_current_state (TASK_RUNNING);
return 0;
}
--
http://nfsnfs.pixnet.net 灰熊。紅襪。阿森納。
http://nfstry.blogspot.com 海邊。天空
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.126.2.182
※ 編輯: nfsnfs 來自: 122.126.2.182 (01/06 20:45)
推
01/06 21:38, , 1F
01/06 21:38, 1F
→
01/07 00:12, , 2F
01/07 00:12, 2F
→
01/07 22:27, , 3F
01/07 22:27, 3F
討論串 (同標題文章)
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章
24
70