33 #define MICRIUM_SOURCE
36 #ifdef VSC_INCLUDE_SOURCE_FILE_NAMES
71 void OSQCreate (OS_Q *p_q,
81 #ifdef OS_SAFETY_CRITICAL
82 if (p_err == (
OS_ERR *)0) {
83 OS_SAFETY_CRITICAL_EXCEPTION();
88 #ifdef OS_SAFETY_CRITICAL_IEC61508
89 if (OSSafetyCriticalStartFlag ==
DEF_TRUE) {
95 #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u
102 #if OS_CFG_ARG_CHK_EN > 0u
103 if (p_q == (OS_Q *)0) {
115 p_q->NamePtr = p_name;
120 #if OS_CFG_DBG_EN > 0u
166 #if OS_CFG_Q_DEL_EN > 0u
173 OS_PEND_DATA *p_pend_data;
174 OS_PEND_LIST *p_pend_list;
181 #ifdef OS_SAFETY_CRITICAL
182 if (p_err == (
OS_ERR *)0) {
183 OS_SAFETY_CRITICAL_EXCEPTION();
188 #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u
195 #if OS_CFG_ARG_CHK_EN > 0u
196 if (p_q == (OS_Q *)0) {
211 #if OS_CFG_OBJ_TYPE_CHK_EN > 0u
219 p_pend_list = &p_q->PendList;
220 cnt = p_pend_list->NbrEntries;
225 #if OS_CFG_DBG_EN > 0u
226 OS_QDbgListRemove(p_q);
242 p_pend_data = p_pend_list->HeadPtr;
243 p_tcb = p_pend_data->TCBPtr;
249 #if OS_CFG_DBG_EN > 0u
250 OS_QDbgListRemove(p_q);
293 #if OS_CFG_Q_FLUSH_EN > 0u
302 #ifdef OS_SAFETY_CRITICAL
303 if (p_err == (
OS_ERR *)0) {
304 OS_SAFETY_CRITICAL_EXCEPTION();
309 #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u
316 #if OS_CFG_ARG_CHK_EN > 0u
317 if (p_q == (OS_Q *)0) {
323 #if OS_CFG_OBJ_TYPE_CHK_EN > 0u
384 void *OSQPend (OS_Q *p_q,
391 OS_PEND_DATA pend_data;
397 #ifdef OS_SAFETY_CRITICAL
398 if (p_err == (
OS_ERR *)0) {
399 OS_SAFETY_CRITICAL_EXCEPTION();
404 #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u
411 #if OS_CFG_ARG_CHK_EN > 0u
412 if (p_q == (OS_Q *)0) {
431 #if OS_CFG_OBJ_TYPE_CHK_EN > 0u
438 if (p_ts != (
CPU_TS *)0) {
466 (OS_PEND_OBJ *)((
void *)p_q),
478 if (p_ts != (
CPU_TS *)0) {
487 if (p_ts != (
CPU_TS *)0) {
496 if (p_ts != (
CPU_TS *)0) {
505 if (p_ts != (
CPU_TS *)0) {
554 #if OS_CFG_Q_PEND_ABORT_EN > 0u
559 OS_PEND_LIST *p_pend_list;
567 #ifdef OS_SAFETY_CRITICAL
568 if (p_err == (
OS_ERR *)0) {
569 OS_SAFETY_CRITICAL_EXCEPTION();
574 #if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u
581 #if OS_CFG_ARG_CHK_EN > 0u
582 if (p_q == (OS_Q *)0) {
599 #if OS_CFG_OBJ_TYPE_CHK_EN > 0u
607 p_pend_list = &p_q->PendList;
608 if (p_pend_list->NbrEntries == (
OS_OBJ_QTY)0u) {
617 while (p_pend_list->NbrEntries > (
OS_OBJ_QTY)0u) {
618 p_tcb = p_pend_list->HeadPtr->TCBPtr;
688 void OSQPost (OS_Q *p_q,
698 #ifdef OS_SAFETY_CRITICAL
699 if (p_err == (
OS_ERR *)0) {
700 OS_SAFETY_CRITICAL_EXCEPTION();
705 #if OS_CFG_ARG_CHK_EN > 0u
706 if (p_q == (OS_Q *)0) {
727 #if OS_CFG_OBJ_TYPE_CHK_EN > 0u
736 #if OS_CFG_ISR_POST_DEFERRED_EN > 0u
775 void OS_QClr (OS_Q *p_q)
779 p_q->NamePtr = (
CPU_CHAR *)((
void *)
"?Q");
802 #if OS_CFG_DBG_EN > 0u
803 void OS_QDbgListAdd (OS_Q *p_q)
805 p_q->DbgNamePtr = (
CPU_CHAR *)((
void *)
" ");
806 p_q->DbgPrevPtr = (OS_Q *)0;
807 if (OSQDbgListPtr == (OS_Q *)0) {
808 p_q->DbgNextPtr = (OS_Q *)0;
810 p_q->DbgNextPtr = OSQDbgListPtr;
811 OSQDbgListPtr->DbgPrevPtr = p_q;
818 void OS_QDbgListRemove (OS_Q *p_q)
824 p_q_prev = p_q->DbgPrevPtr;
825 p_q_next = p_q->DbgNextPtr;
827 if (p_q_prev == (OS_Q *)0) {
828 OSQDbgListPtr = p_q_next;
829 if (p_q_next != (OS_Q *)0) {
830 p_q_next->DbgPrevPtr = (OS_Q *)0;
832 p_q->DbgNextPtr = (OS_Q *)0;
834 }
else if (p_q_next == (OS_Q *)0) {
835 p_q_prev->DbgNextPtr = (OS_Q *)0;
836 p_q->DbgPrevPtr = (OS_Q *)0;
839 p_q_prev->DbgNextPtr = p_q_next;
840 p_q_next->DbgPrevPtr = p_q_prev;
841 p_q->DbgNextPtr = (OS_Q *)0;
842 p_q->DbgPrevPtr = (OS_Q *)0;
865 void OS_QInit (
OS_ERR *p_err)
867 #ifdef OS_SAFETY_CRITICAL
868 if (p_err == (
OS_ERR *)0) {
869 OS_SAFETY_CRITICAL_EXCEPTION();
874 #if OS_CFG_DBG_EN > 0u
875 OSQDbgListPtr = (OS_Q *)0;
922 void OS_QPost (OS_Q *p_q,
931 OS_PEND_LIST *p_pend_list;
932 OS_PEND_DATA *p_pend_data;
933 OS_PEND_DATA *p_pend_data_next;
940 p_pend_list = &p_q->PendList;
941 if (p_pend_list->NbrEntries == (
OS_OBJ_QTY)0) {
958 cnt = p_pend_list->NbrEntries;
962 p_pend_data = p_pend_list->HeadPtr;
964 p_tcb = p_pend_data->TCBPtr;
965 p_pend_data_next = p_pend_data->NextPtr;
966 OS_Post((OS_PEND_OBJ *)((
void *)p_q),
971 p_pend_data = p_pend_data_next;
975 if ((opt & OS_OPT_POST_NO_SCHED) == (
OS_OPT)0) {