diff --git a/kernel/src/los_sortlink.c b/kernel/src/los_sortlink.c index c93b9afe..8c2a77eb 100644 --- a/kernel/src/los_sortlink.c +++ b/kernel/src/los_sortlink.c @@ -58,9 +58,12 @@ STATIC INLINE VOID OsAddNode2SortLink(SortLinkAttribute *sortLinkHeader, SortLin } SortLinkList *listSorted = LOS_DL_LIST_ENTRY(head->pstNext, SortLinkList, sortLinkNode); - if (listSorted->responseTime >= sortList->responseTime) { + if (listSorted->responseTime > sortList->responseTime) { LOS_ListAdd(head, &sortList->sortLinkNode); return; + } else if (listSorted->responseTime == sortList->responseTime) { + LOS_ListAdd(head->pstNext, &sortList->sortLinkNode); + return; } LOS_DL_LIST *prevNode = head->pstPrev; diff --git a/kernel/src/los_swtmr.c b/kernel/src/los_swtmr.c index ef8fa081..b6a6c174 100644 --- a/kernel/src/los_swtmr.c +++ b/kernel/src/los_swtmr.c @@ -158,7 +158,7 @@ VOID OsSwtmrFindAlignPos(UINT64 currTime, SWTMR_CTRL_S *swtmr) } /* find same interval timer, directly return */ if (cur->uwInterval == swtmr->uwInterval) { - swtmr->uwCount = 0; + swtmr->uwCount = OsSortLinkGetTargetExpireTime(currTime, &cur->stSortList); return; }