0

我在 os161 内核中实现了一个 fork 系统调用。我正在尝试创建一个新进程并为其创建我使用的线程thread_fork。我正在使用该函数md_forkentry将堆和堆栈分配给新线程的陷阱帧并切换到用户模式;但是在编译代码后我收到了这个警告: passing arg 4 of 'thread_fork' from incompatible pointer type

//Function Prototypes
int thread_fork(const char* name,void* data1,unsgined long data2,void (*func) (void*,unsigned long),struct thread **ret)
void md_forkentry(struct trapframe* tf,unsigned long n);

//the code 
struct trapframe* tf;
struct thread* child_thread;
//line I get the error from
int result=thread_fork("Child Process",(void*) tf,0,&md_forkentry,&child_thread);
4

1 回答 1

0

您的原型md_forkentry()与 的第四个参数的类型不匹配thread_fork()

md_forkentry()必须原型为:

void md_forkentry(void *, unsigned long);

(反之亦然,即在thread_fork()必要时修复原型中给出的参数类型)

于 2020-03-13T23:31:12.147 回答