Pointers 结构和结构指针。成员可访问性

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

我试图理解C语言中的结构和结构指针的概念。我试图实现一段代码,却被困在这里

问题任务: 我必须不断轮询结构a中的变量成员x。我想在后台运行一个kthread来控制x的值,但kthread的输入数据是另一个结构B

B包含另一个可用于动态访问A的结构C。但这里出了问题。每当我使用指针从B调用A时,我都会收到一个空指针。我无法访问A的全局副本

让我们看看代码。代码不起作用,它是一个伪案例。我只是想确保我没有犯任何语法或逻辑错误。 如果我的问题中遗漏了任何细节,请告诉我。 这是:

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;
}