gpt4 book ai didi

c - fork.c :764: request for member `list' in something not a structure or union

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

你好,我正在做一个关于编译内核的项目。但是,我遇到了一个错误,上面写着

fork.c: In function `do_fork':
fork.c:764: request for member `list' in something not a structure or union

简要说明:我正在使用一个在内核中为每种类型的结构定义的现成链表。(所以我有自己的数据结构)此外,我使用预定义的函数,如添加、遍历、删除节点我的链表,但由于这个错误我无法取得任何进展。在这里你可以看到包含我的数据结构的头文件。

/* project_header.h> */
#ifndef __LINUX_PROJECT_HEADER_H

#define __LINUX_PROJECT_HEADER_H

#include <linux/linkage.h>
#include <linux/vmalloc.h>
#include <linux/list.h>

#endif

typedef struct node{

struct list_head list; /* kernel's list structure */
long int sample_pid;

}NODE;

此头文件位于 include/linux 目录中。

这是我将在我的新内核中使用的系统调用。并且我全局定义了 projectList 以在其他文件中使用它。

#include <linux/sample.h>
#include <linux/project_header.h>

NODE projectList;

asmlinkage void sys_sample(void){

NODE* temp;

list_for_each_entry(temp, &projectList.list, list){

printk(KERN_INFO "TEMP->PID = %ld\n", temp->project_pid);
}

return;
}

我尝试在 kernel/ 目录中的 fork.c 中使用它,在这里你可以看到我添加到 fork.c 中的示例代码。另一方面,我用语句 extern projectList 调用 projectList 来引用在 sample.c

中定义的
      /* do_fork.c */
/* do_fork() function */
#include <linux/project_header.h>
#include <linux/sample.h>

extern projectList; // Call variable projectList

.
.
.

do_fork(parameters..){

struct task_struct* p;
.
.

line 759-->NODE* newNode;

line 760-->newNode = kmalloc(sizeof(*newNode), GFP_KERNEL);

line 761-->newNode->sample_pid = p->pid;

line 762-->INIT_LIST_HEAD(&newNode->list);

/* add the new node to mylist */

line 764--> list_add_tail(&(newNode->list), &(projectList.list));

.
.
.
}

我希望我对你很清楚,如果你能帮助我,我会很高兴,无论如何谢谢

最佳答案

extern projectList; // Call variable projectList

您忘记在这里声明 projectList 的类型,因此如果编译器处于 C89 状态,它会应用“隐式 int”规则。因此,您的 projectListfork.c 中的 int,而不是 structunion 有成员。

关于c - fork.c :764: request for member `list' in something not a structure or union,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14115618/

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