我正在用C ++编写Xtensa虚拟平台的代码。我想使用 simcall_callback 的功能从内部固件代码返回数据。 我的C ++有点生锈。
typedef int(∗ simcall_callback)(xtsc_core &core, void ∗callback_arg, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
simcall_callback set_simcall_callback (simcall_callback callback, void ∗callback_arg, void ∗∗ previous_arg = NULL)
我应该如何正确调用 set_simcall_callback ,第二和第三个参数应该是什么?
有关Xtensa回调函数的文档可以在下面的link(第282、309页)中找到
答案 0 :(得分:0)
如果需要声明函数,可以这样:
simcall_callback simcall_callback_func;
然后您需要定义回调函数主体:
int simcall_callback_func (xtsc_core &core, void *callback_arg, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
{
// Do what you need
return 0;
}
然后您可以调用set_simcall_callback,其中第一个参数是我们声明的函数。所有参数均在介绍的第310页中进行了说明。
int main()
{
// If you need previouse function then hold returned value
simcall_callback prev_func = set_simcall_callback (simcall_callback_func, NULL);
return 0;
}