33 #define MICRIUM_SOURCE
36 #ifdef VSC_INCLUDE_SOURCE_FILE_NAMES
37 const CPU_CHAR *os_pend_multi__c =
"$Id: $";
41 #if (((OS_CFG_Q_EN > 0u) || (OS_CFG_SEM_EN > 0u)) && (OS_CFG_PEND_MULTI_EN > 0u))
121 OS_OBJ_QTY OSPendMulti (OS_PEND_DATA *p_pend_data_tbl,
133 #ifdef OS_SAFETY_CRITICAL
134 if (p_err == (
OS_ERR *)0) {
135 OS_SAFETY_CRITICAL_EXCEPTION();
140 #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u
147 #if OS_CFG_ARG_CHK_EN > 0u
148 if (p_pend_data_tbl == (OS_PEND_DATA *)0) {
167 valid = OS_PendMultiValidate(p_pend_data_tbl,
176 nbr_obj_rdy = OS_PendMultiGetRdy(p_pend_data_tbl,
197 OS_PendMultiWait(p_pend_data_tbl,
253 OS_OBJ_QTY OS_PendMultiGetRdy (OS_PEND_DATA *p_pend_data_tbl,
265 #if OS_CFG_SEM_EN > 0u
272 for (i = 0u; i < tbl_size; i++) {
273 p_pend_data_tbl->RdyObjPtr = (OS_PEND_OBJ *)0;
274 p_pend_data_tbl->RdyMsgPtr = (
void *)0;
276 p_pend_data_tbl->RdyTS = (
CPU_TS )0;
277 p_pend_data_tbl->NextPtr = (OS_PEND_DATA *)0;
278 p_pend_data_tbl->PrevPtr = (OS_PEND_DATA *)0;
279 p_pend_data_tbl->TCBPtr = (OS_TCB *)0;
281 p_q = (OS_Q *)((
void *)p_pend_data_tbl->PendObjPtr);
288 p_pend_data_tbl->RdyObjPtr = p_pend_data_tbl->PendObjPtr;
289 p_pend_data_tbl->RdyMsgPtr = p_void;
290 p_pend_data_tbl->RdyMsgSize = msg_size;
291 p_pend_data_tbl->RdyTS = ts;
297 #if OS_CFG_SEM_EN > 0u
298 p_sem = (OS_SEM *)((
void *)p_pend_data_tbl->PendObjPtr);
300 if (p_sem->Ctr > 0u) {
302 p_pend_data_tbl->RdyObjPtr = p_pend_data_tbl->PendObjPtr;
303 p_pend_data_tbl->RdyTS = p_sem->TS;
311 return (nbr_obj_rdy);
334 CPU_BOOLEAN OS_PendMultiValidate (OS_PEND_DATA *p_pend_data_tbl,
339 #if OS_CFG_SEM_EN > 0u
347 for (i = 0u; i < tbl_size; i++) {
348 if (p_pend_data_tbl->PendObjPtr == (OS_PEND_OBJ *)0) {
353 #if OS_CFG_SEM_EN > 0u
354 p_sem = (OS_SEM *)((
void *)p_pend_data_tbl->PendObjPtr);
361 p_q = (OS_Q *)((
void *)p_pend_data_tbl->PendObjPtr);
396 void OS_PendMultiWait (OS_PEND_DATA *p_pend_data_tbl,
401 OS_PEND_LIST *p_pend_list;
407 #if OS_CFG_SEM_EN > 0u
421 for (i = 0u; i < tbl_size; i++) {
424 #if OS_CFG_SEM_EN > 0u
425 p_sem = (OS_SEM *)((
void *)p_pend_data_tbl->PendObjPtr);
427 p_pend_list = &p_sem->PendList;
434 p_q = (OS_Q *)((
void *)p_pend_data_tbl->PendObjPtr);
436 p_pend_list = &p_q->PendList;