为 Xtensa simcall 函数编写回调函数

Writing callback function for Xtensa simcall function

我正在用 C++ 为 Xtensa 虚拟平台编写代码。我想使用 simcall_callback 的功能从内部固件代码中获取 return 数据。 我的 C++ 有点生疏了。

  1. 如何为回调的以下 typedef 构建回调函数:
typedef int(∗ simcall_callback)(xtsc_core &core, void ∗callback_arg, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
  1. 用于设置该回调的函数为:
simcall_callback set_simcall_callback (simcall_callback callback, void ∗callback_arg, void ∗∗ previous_arg = NULL)

如何正确调用set_simcall_callback,第二个和第三个参数应该是什么?

有关 Xtensa 回调函数的文档可在以下位置找到 link(第 282、309 页)

如果你需要声明函数,你可以这样做:

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