为Xtensa simcall函数编写回调函数

时间:2018-11-02 15:10:56

标签: c++ callback

我正在用C ++编写Xtensa虚拟平台的代码。我想使用 simcall_callback 的功能从内部固件代码返回数据。 我的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页)中找到

1 个答案:

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