你好、冠军、
我的客户正在查看 MMWAVE_SDK_01_00_00_05中的毫米波演示。 我对代码中的 mmWave_sprawn 函数有疑问。 此函数在以下代码中注册到 rlDevicePowerOn。
/*初始化 OSI 队列接口*/ RlApp_ClientCtx.osib.queue.rlOsiSpawn = mmwave_spawn (&M);
- 在该函数内部、它将输入函数点和参数保存在 gMMWave_MCB.ptrSpawnFxnFreeList 中、然后向其他任务发布一个信号量。 我的油炸玉米饼是什么时候
调用 mmwave_spawn、函数点及其使用的参数是什么。
静态 rlInt32_t mmwave_spawn
(
RL_P_OSI_spawn_entry fxn、
常量 void* pValue、
uint32_t flags
)
{
MMWAVE_SpawnFxnNodes* ptrSpawnFxnNode;
uintptr_t 密钥;
内部32_t RetVal = 0;
/*关键部分:无锯条列表是可访问的关键资源
*来自多个上下文*/
KEY = Hwip_disable();
ptrSpawnFxnNode =(MMWAVE_SpawnFxnNodes*) MMWAVE_LISRemove ((MMWAVE_ListNodes**)&gMMWave_MCB.ptrSpawnFxnFreeList);
Hwip_restore (key);
/*我们是否收到了条目? *
if (ptrSpawnFxnNode!=空)
{
/*是:填充条目*/
ptrSpawnFxnNode->fawnEntry = fxn;
ptrSpawnFxnNode->arg = pValue;
/*关键部分:已生成的活动列表是可访问的关键资源
*来自多个上下文*/
KEY = Hwip_disable();
MMWAVE_LISADD ((MMWAVE_ListNodes**)&gMMWave_MCB.ptrSpawnFxnActiveList、(MMWAVE_ListNodes*) ptrSpawnFxnNode);
Hwip_restore (key);
/*跟踪收到的已生成消息的数量*/
gMMWave_MCB.sedaveCounter++;
/*唤醒毫米波执行线程*/
SemaphoreP_POST (gMMWAVE_MCB.linkSemHandle);
}
其他
{
/*错误:不存在无跨度节点。 如果所有的锯动函数都发生这种情况
*尚未调用执行毫米波控制 API。 增量
*报告此情况的统计数据*/
gMMWave_MCB.sedaveoverflow++;
/*设置返回值以指示错误。 *
RetVal =-1;
}
返回 RetVal;
}
2.我们为什么将 spwan 列表大小定义为4 (MMWAVE_MAX_NUM_spawn_list)? 在这种情况下、我们需要使用此列表来保存多个函数调用。