gpt4 book ai didi

c++ - 在 stub 中运行函数。传递函数指针

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

我正在创建一个用户级线程库,我想做的是在 stub 中运行一个函数,所以我想将函数指针传递给 stub 函数。

这是我的 stub 函数:

void _ut_function_stub(void (*f)(void), int id)
{
(*f)();
DeleteThread(id);
}

这是用户调用的。我想要做的是获取 _ut_function_stub 的指针以分配给 pc 我已经尝试了各种不同的选项,包括强制转换,但编译器一直说“无效使用 void 表达式” .

int CreateThread (void (*f) (void), int weight)
{
... more code

pc = (address_t)(_ut_function_stub(f, tcb->id));

... more code
}

感谢任何帮助。谢谢!

最佳答案

如果您有兴趣实现自己的用户级线程库,我建议您查看(现已弃用)ucontext执行。具体来说,查看 ucontext.h 中使用的结构的定义。将帮助您查看您实际需要捕获的所有内容,以获取线程状态的有效快照。

您在示例中使用错误的 (address_t) 真正试图捕获的是当前的 continuation .不幸的是,C 不支持一流的延续,所以你将被困在做更底层的事情,比如交换堆栈和转储寄存器(因此我将你指向 ucontext 作为一个引用——如果你真的想把它弄好,这会有点复杂)。

关于c++ - 在 stub 中运行函数。传递函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19479146/

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