Pointers 结构和结构指针。成员可访问性
我试图理解C语言中的结构和结构指针的概念。我试图实现一段代码,却被困在这里 问题任务: 我必须不断轮询结构a中的变量成员x。我想在后台运行一个kthread来控制x的值,但kthread的输入数据是另一个结构B B包含另一个可用于动态访问A的结构C。但这里出了问题。每当我使用指针从B调用A时,我都会收到一个空指针。我无法访问A的全局副本 让我们看看代码。代码不起作用,它是一个伪案例。我只是想确保我没有犯任何语法或逻辑错误。 如果我的问题中遗漏了任何细节,请告诉我。 这是:Pointers 结构和结构指针。成员可访问性,pointers,linux-kernel,global-variables,structure,Pointers,Linux Kernel,Global Variables,Structure,我试图理解C语言中的结构和结构指针的概念。我试图实现一段代码,却被困在这里 问题任务: 我必须不断轮询结构a中的变量成员x。我想在后台运行一个kthread来控制x的值,但kthread的输入数据是另一个结构B B包含另一个可用于动态访问A的结构C。但这里出了问题。每当我使用指针从B调用A时,我都会收到一个空指针。我无法访问A的全局副本 让我们看看代码。代码不起作用,它是一个伪案例。我只是想确保我没有犯任何语法或逻辑错误。 如果我的问题中遗漏了任何细节,请告诉我。 这是: In <File
In <File.h>
struct A {
int var;
struct pqr;
};
struct C {
struct platform_device *pdev;
..
};
struct B {
struct C *c;
struct notifier_block abc;
..
};
int control_function(void *data);
int polling_function(struct A *a1);
In
int控制_函数(无效*数据)
{
结构B*B=(结构B*)数据;
结构A*A;
结构C*c1;
c1=b->c;//这是对的吗?因为输出中的这个显示仍然没有填充,并且我不能在不访问结构c的全局副本的情况下更新结构A
a=容器(dev\u get\u platdata(&c1->pdev->dev,struct a,pqr);
a->var=1;
返回0;
}
int polling_函数(结构A*a1)
{
int ret;
ret=a1->var;
返回ret;
}
1.平台数据中有什么?struct pqr*
?2.c1=b->c;
可以,尽管您的代码没有显示填充位置。1.平台数据中有什么?struct pqr*
?2.c1=b->c;
可以,尽管您的代码没有显示填充位置。
In <File1.c>
int main ()
{
int rc;
struct B *b = malloc(sizeof(struct B));
b->notifier_block.notifier_call = some_random_funtion;
rc = fb_register_client (&b->abc);
kthread_run(control_function, b, "ctrl_fnc");
return rc;
}
\\Meanwhile all the structures are getting populated elsewhere dynamically
In <File2.c>
int control_function(void *data)
{
struct B *b = (struct B *)data;
struct A *a;
struct C *c1;
c1 = b->c; //is this right? because this in the output shows still unpopulated and I cant update struct A without accessing the global copy of struct C
a = container_of(dev_get_platdata(&c1->pdev->dev, struct A, pqr);
a->var = 1;
return 0;
}
int polling_function(struct A *a1)
{
int ret;
ret = a1->var;
return ret;
}