gpt4 book ai didi

c - 将结构传递给函数指针 - 值更改

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:28 25 4
gpt4 key购买 nike

我正在开发一个使用结构作为函数参数的内核线程。

我是这样通过的

   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 结尾

最佳答案

关闭这个问题,如果有人遇到同样的问题:

我在线程外释放了结构。由于某种原因,释放是在引用进入函数之前执行的。这导致了奇怪的错误,我通过将 kfree 放在另一个位置来解决它。

关于c - 将结构传递给函数指针 - 值更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21458424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com