1
我正在使用一個結構作爲函數參數的內核線程。將結構傳遞給函數指針 - 值改變
我通過像這樣
int thread_function(void* data)
{
struct killStruct* obj = (struct killStruct*) data;
//msleep((unsigned int) time);
printk(KERN_INFO"From the inner Thread: PID: %d, Time:%ld\n",obj->pid,obj->millisecondsToKill);
//kill prozess by ID
return 0;
}
static void prozess_kill(struct killStruct *obj)
{
printk(KERN_INFO "Outside of thread PID: %d, Time:%ld",obj->pid,obj->millisecondsToKill);
task = kthread_run(&thread_function,(void*)obj ,"str");
}
一些奇怪的原因PID值是不同的外螺紋的比線程內。
事實上它記錄:
[12160.460200] Outside of thread PID: 1, Time:1000
[12160.460400] From the inner Thread: PID: 622736, Time:1000
這到底是怎麼回事?
注意:我檢查了其他pid值。它最終總是爲622736
在C中,不需要將指針指向'void *'。任何指針都可以隱式轉換爲void *'。 –
你如何調用'prozess_kill'? 'killStruct'對象的生命週期是什麼? –
也許被其他進程修改。嘗試malloc一些內存並複製數據並將其傳遞到「thread_function」以查看差異。 –