日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

任务信号量

發(fā)布時(shí)間:2023/11/29 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 任务信号量 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  在實(shí)際任務(wù)間的通信中,一個(gè)或多個(gè)任務(wù)發(fā)送一個(gè)信號(hào)量或者消息給另一個(gè)任務(wù)是比常見的,而一個(gè)任務(wù)給多個(gè)任務(wù)發(fā)送信號(hào)量和消息相對(duì)比較少。前面所講的信號(hào)量和消息隊(duì)列均是單獨(dú)的內(nèi)核對(duì)象,是獨(dú)立于任務(wù)存在的。這兩章要講述的任務(wù)信號(hào)量和任務(wù)消息隊(duì)列是
任務(wù)特有的屬性,緊緊依賴于一個(gè)特定任務(wù)。

  任務(wù)信號(hào)量和任務(wù)消息隊(duì)列分別與多值信號(hào)量和消息隊(duì)列非常相似,不同之處是,前者僅發(fā)布給一個(gè)特定任務(wù),而后者可以發(fā)布給多個(gè)任務(wù)。因此,前者的操作相對(duì)比較簡單,而且省時(shí)。如果任務(wù)信號(hào)量和任務(wù)消息隊(duì)列可以滿足設(shè)計(jì)需求,那么盡量不要使用普通多值信號(hào)量和消息隊(duì)列

  任務(wù)信號(hào)量伴隨任務(wù)存在,只要?jiǎng)?chuàng)建了任務(wù),其任務(wù)信號(hào)量就是該任務(wù)的一個(gè)數(shù)據(jù)成員,任務(wù)信號(hào)量的數(shù)據(jù)成員被包含在任務(wù)控制塊里。
OSTaskSemPost ()
  OSTaskSemPost () 函數(shù)用于給一個(gè)任務(wù)發(fā)布任務(wù)信號(hào)量。OSTaskSemPost () 函數(shù)的信息如下表所示。

  OSTaskSemPost () 函數(shù)的定義也位于“os_task.c”:

S_SEM_CTR OSTaskSemPost (OS_TCB *p_tcb, //目標(biāo)任務(wù)OS_OPT opt, //選項(xiàng)OS_ERR *p_err) //返回錯(cuò)誤類型 {OS_SEM_CTR ctr;CPU_TS ts;#ifdef OS_SAFETY_CRITICAL //如果使能(默認(rèn)禁用)了安全檢測if (p_err == (OS_ERR *)0) { //如果 p_err 為空OS_SAFETY_CRITICAL_EXCEPTION(); //執(zhí)行安全檢測異常函數(shù)return ((OS_SEM_CTR)0); //返回0(有錯(cuò)誤),停止執(zhí)行 } #endif#if OS_CFG_ARG_CHK_EN > 0u //如果使能(默認(rèn)使能)了參數(shù)檢測功能switch (opt) { //根據(jù)選項(xiàng)分類處理case OS_OPT_POST_NONE: //如果選項(xiàng)在預(yù)期之內(nèi)case OS_OPT_POST_NO_SCHED:break; //跳出default: //如果選項(xiàng)超出預(yù)期*p_err = OS_ERR_OPT_INVALID; //錯(cuò)誤類型為“選項(xiàng)非法”return ((OS_SEM_CTR)0u); //返回0(有錯(cuò)誤),停止執(zhí)行 } #endifts = OS_TS_GET(); //獲取時(shí)間戳#if OS_CFG_ISR_POST_DEFERRED_EN > 0u //如果使能了中斷延遲發(fā)布if (OSIntNestingCtr > (OS_NESTING_CTR)0) { //如果該函數(shù)是在中斷中被調(diào)用OS_IntQPost((OS_OBJ_TYPE)OS_OBJ_TYPE_TASK_SIGNAL, //將該信號(hào)量發(fā)布到中斷消息隊(duì)列(void *)p_tcb,(void *)0,(OS_MSG_SIZE)0,(OS_FLAGS )0,(OS_OPT )0,(CPU_TS )ts,(OS_ERR *)p_err);return ((OS_SEM_CTR)0); //返回0(尚未發(fā)布) } #endifctr = OS_TaskSemPost(p_tcb, //將信號(hào)量按照普通方式處理 opt,ts,p_err);return (ctr); //返回信號(hào)的當(dāng)前計(jì)數(shù)值 } OSTaskSemPost()

  其實(shí),不管是否使能了中斷延遲發(fā)布,最終都是調(diào)用 OS_TaskSemPost() 函數(shù)進(jìn)行發(fā)布信號(hào)量。只是使能了中斷延遲發(fā)布的發(fā)布過程會(huì)比較曲折,中間會(huì)有許多插曲,這是中斷管理范疇的內(nèi)容。

  OS_TaskSemPost() 函數(shù)的定義位于“os_task.c”:

OS_SEM_CTR OS_TaskSemPost (OS_TCB *p_tcb, //目標(biāo)任務(wù)OS_OPT opt, //選項(xiàng)CPU_TS ts, //時(shí)間戳OS_ERR *p_err) //返回錯(cuò)誤類型 {OS_SEM_CTR ctr;CPU_SR_ALLOC(); //使用到臨界段(在關(guān)/開中斷時(shí))時(shí)必需該宏,該宏聲明和//定義一個(gè)局部變量,用于保存關(guān)中斷前的 CPU 狀態(tài)寄存器// SR(臨界段關(guān)中斷只需保存SR),開中斷時(shí)將該值還原。 OS_CRITICAL_ENTER(); //進(jìn)入臨界段if (p_tcb == (OS_TCB *)0) { //如果 p_tcb 為空p_tcb = OSTCBCurPtr; //將任務(wù)信號(hào)量發(fā)給自己(任務(wù)) }p_tcb->TS = ts; //記錄信號(hào)量被發(fā)布的時(shí)間戳*p_err = OS_ERR_NONE; //錯(cuò)誤類型為“無錯(cuò)誤”switch (p_tcb->TaskState) { //跟吳目標(biāo)任務(wù)的任務(wù)狀態(tài)分類處理case OS_TASK_STATE_RDY: //如果目標(biāo)任務(wù)沒有等待狀態(tài)case OS_TASK_STATE_DLY:case OS_TASK_STATE_SUSPENDED:case OS_TASK_STATE_DLY_SUSPENDED:switch (sizeof(OS_SEM_CTR)) { //判斷是否將導(dǎo)致該信case 1u: //號(hào)量計(jì)數(shù)值溢出,如if (p_tcb->SemCtr == DEF_INT_08U_MAX_VAL) { //果溢出,則開中斷,OS_CRITICAL_EXIT(); //返回錯(cuò)誤類型為“計(jì)*p_err = OS_ERR_SEM_OVF; //數(shù)值溢出”,返回0return ((OS_SEM_CTR)0); //(有錯(cuò)誤),不繼續(xù)} //執(zhí)行。break; case 2u:if (p_tcb->SemCtr == DEF_INT_16U_MAX_VAL) {OS_CRITICAL_EXIT();*p_err = OS_ERR_SEM_OVF;return ((OS_SEM_CTR)0);}break;case 4u:if (p_tcb->SemCtr == DEF_INT_32U_MAX_VAL) {OS_CRITICAL_EXIT();*p_err = OS_ERR_SEM_OVF;return ((OS_SEM_CTR)0);}break;default:break;}p_tcb->SemCtr++; //信號(hào)量計(jì)數(shù)值不溢出則加1ctr = p_tcb->SemCtr; //獲取信號(hào)量的當(dāng)前計(jì)數(shù)值OS_CRITICAL_EXIT(); //退出臨界段break; //跳出case OS_TASK_STATE_PEND: //如果任務(wù)有等待狀態(tài)case OS_TASK_STATE_PEND_TIMEOUT:case OS_TASK_STATE_PEND_SUSPENDED:case OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED:if (p_tcb->PendOn == OS_TASK_PEND_ON_TASK_SEM) { //如果正等待任務(wù)信號(hào)量OS_Post((OS_PEND_OBJ *)0, //發(fā)布信號(hào)量給目標(biāo)任務(wù)(OS_TCB *)p_tcb,(void *)0,(OS_MSG_SIZE )0u,(CPU_TS )ts);ctr = p_tcb->SemCtr; //獲取信號(hào)量的當(dāng)前計(jì)數(shù)值OS_CRITICAL_EXIT_NO_SCHED(); //退出臨界段(無調(diào)度)if ((opt & OS_OPT_POST_NO_SCHED) == (OS_OPT)0) { //如果選擇了調(diào)度任務(wù)OSSched(); //調(diào)度任務(wù) }} else { //如果沒等待任務(wù)信號(hào)量switch (sizeof(OS_SEM_CTR)) { //判斷是否將導(dǎo)致case 1u: //該信號(hào)量計(jì)數(shù)值if (p_tcb->SemCtr == DEF_INT_08U_MAX_VAL) { //溢出,如果溢出,OS_CRITICAL_EXIT(); //則開中斷,返回*p_err = OS_ERR_SEM_OVF; //錯(cuò)誤類型為“計(jì)return ((OS_SEM_CTR)0); //數(shù)值溢出”,返} //回0(有錯(cuò)誤),break; //不繼續(xù)執(zhí)行。case 2u:if (p_tcb->SemCtr == DEF_INT_16U_MAX_VAL) {OS_CRITICAL_EXIT();*p_err = OS_ERR_SEM_OVF;return ((OS_SEM_CTR)0);}break;case 4u:if (p_tcb->SemCtr == DEF_INT_32U_MAX_VAL) {OS_CRITICAL_EXIT();*p_err = OS_ERR_SEM_OVF;return ((OS_SEM_CTR)0);}break;default:break;}p_tcb->SemCtr++; //信號(hào)量計(jì)數(shù)值不溢出則加1ctr = p_tcb->SemCtr; //獲取信號(hào)量的當(dāng)前計(jì)數(shù)值OS_CRITICAL_EXIT(); //退出臨界段 }break; //跳出default: //如果任務(wù)狀態(tài)超出預(yù)期OS_CRITICAL_EXIT(); //退出臨界段*p_err = OS_ERR_STATE_INVALID; //錯(cuò)誤類型為“狀態(tài)非法”ctr = (OS_SEM_CTR)0; //清零 ctrbreak; //跳出 }return (ctr); //返回信號(hào)量的當(dāng)前計(jì)數(shù)值 } OS_TaskSemPost()

  OS_SemPost() 函數(shù)中,又會(huì)調(diào)用 OS_Post() 函數(shù)發(fā)布內(nèi)核對(duì)象。OS_Post() 函數(shù)是一個(gè)底層的發(fā)布函數(shù),它不僅僅用來發(fā)布任務(wù)信號(hào)量,還可以發(fā)布多值信號(hào)量、互斥信號(hào)量、消息隊(duì)列、事件標(biāo)志組或任務(wù)消息隊(duì)列。注意,在這里,OS_Post() 函數(shù)將任務(wù)信號(hào)量直接發(fā)布給目標(biāo)任務(wù)。

  OS_Post() 函數(shù)的定義位于“os_core.c”。:

void OS_Post (OS_PEND_OBJ *p_obj, //內(nèi)核對(duì)象類型指針OS_TCB *p_tcb, //任務(wù)控制塊void *p_void, //消息OS_MSG_SIZE msg_size, //消息大小CPU_TS ts) //時(shí)間戳 {switch (p_tcb->TaskState) { //根據(jù)任務(wù)狀態(tài)分類處理case OS_TASK_STATE_RDY: //如果任務(wù)處于就緒狀態(tài)case OS_TASK_STATE_DLY: //如果任務(wù)處于延時(shí)狀態(tài)case OS_TASK_STATE_SUSPENDED: //如果任務(wù)處于掛起狀態(tài)case OS_TASK_STATE_DLY_SUSPENDED: //如果任務(wù)處于延時(shí)中被掛起狀態(tài)break; //不用處理,直接跳出case OS_TASK_STATE_PEND: //如果任務(wù)處于無期限等待狀態(tài)case OS_TASK_STATE_PEND_TIMEOUT: //如果任務(wù)處于有期限等待狀態(tài)if (p_tcb->PendOn == OS_TASK_PEND_ON_MULTI) { //如果任務(wù)在等待多個(gè)信號(hào)量或消息隊(duì)列OS_Post1(p_obj, //標(biāo)記哪個(gè)內(nèi)核對(duì)象被發(fā)布 p_tcb,p_void,msg_size,ts);} else { //如果任務(wù)不是在等待多個(gè)信號(hào)量或消息隊(duì)列 #if (OS_MSG_EN > 0u) //如果使能了任務(wù)隊(duì)列或消息隊(duì)列p_tcb->MsgPtr = p_void; //保存消息到等待任務(wù)p_tcb->MsgSize = msg_size; #endifp_tcb->TS = ts; //保存時(shí)間戳到等待任務(wù) }if (p_obj != (OS_PEND_OBJ *)0) { //如果內(nèi)核對(duì)象為空OS_PendListRemove(p_tcb); //從等待列表移除該等待任務(wù) #if OS_CFG_DBG_EN > 0u //如果使能了調(diào)試代碼和變量 OS_PendDbgNameRemove(p_obj, //移除內(nèi)核對(duì)象的調(diào)試名 p_tcb); #endif}OS_TaskRdy(p_tcb); //讓該等待任務(wù)準(zhǔn)備運(yùn)行p_tcb->TaskState = OS_TASK_STATE_RDY; //任務(wù)狀態(tài)改為就緒狀態(tài)p_tcb->PendStatus = OS_STATUS_PEND_OK; //清除等待狀態(tài)p_tcb->PendOn = OS_TASK_PEND_ON_NOTHING; //標(biāo)記不再等待break;case OS_TASK_STATE_PEND_SUSPENDED: //如果任務(wù)在無期限等待中被掛起case OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED: //如果任務(wù)在有期限等待中被掛起if (p_tcb->PendOn == OS_TASK_PEND_ON_MULTI) { //如果任務(wù)在等待多個(gè)信號(hào)量或消息隊(duì)列OS_Post1(p_obj, //標(biāo)記哪個(gè)內(nèi)核對(duì)象被發(fā)布 p_tcb,p_void,msg_size,ts);} else { //如果任務(wù)不在等待多個(gè)信號(hào)量或消息隊(duì)列 #if (OS_MSG_EN > 0u) //如果使能了調(diào)試代碼和變量p_tcb->MsgPtr = p_void; //保存消息到等待任務(wù)p_tcb->MsgSize = msg_size; #endifp_tcb->TS = ts; //保存時(shí)間戳到等待任務(wù) }OS_TickListRemove(p_tcb); //從節(jié)拍列表移除該等待任務(wù)if (p_obj != (OS_PEND_OBJ *)0) { //如果內(nèi)核對(duì)象為空OS_PendListRemove(p_tcb); //從等待列表移除該等待任務(wù) #if OS_CFG_DBG_EN > 0u //如果使能了調(diào)試代碼和變量 OS_PendDbgNameRemove(p_obj, //移除內(nèi)核對(duì)象的調(diào)試名 p_tcb); #endif}p_tcb->TaskState = OS_TASK_STATE_SUSPENDED; //任務(wù)狀態(tài)改為被掛起狀態(tài)p_tcb->PendStatus = OS_STATUS_PEND_OK; //清除等待狀態(tài)p_tcb->PendOn = OS_TASK_PEND_ON_NOTHING; //標(biāo)記不再等待break;default: //如果任務(wù)狀態(tài)超出預(yù)期break; //直接跳出 } } OS_Post()

OSTaskSemPend ()?

  OSSemPost () 多值信號(hào)量發(fā)布函數(shù)相對(duì)應(yīng),OSTaskSemPend () 函數(shù)用于等待任務(wù)信號(hào)量。

  OSTaskSemPend () 函數(shù)的定義也位于“os_task.c:

OS_SEM_CTR OSTaskSemPend (OS_TICK timeout, //等待超時(shí)時(shí)間OS_OPT opt, //選項(xiàng)CPU_TS *p_ts, //返回時(shí)間戳OS_ERR *p_err) //返回錯(cuò)誤類型 {OS_SEM_CTR ctr;CPU_SR_ALLOC(); //使用到臨界段(在關(guān)/開中斷時(shí))時(shí)必需該宏,該宏聲明和//定義一個(gè)局部變量,用于保存關(guān)中斷前的 CPU 狀態(tài)寄存器// SR(臨界段關(guān)中斷只需保存SR),開中斷時(shí)將該值還原。 #ifdef OS_SAFETY_CRITICAL //如果使能了安全檢測if (p_err == (OS_ERR *)0) { //如果錯(cuò)誤類型實(shí)參為空OS_SAFETY_CRITICAL_EXCEPTION(); //執(zhí)行安全檢測異常函數(shù)return ((OS_SEM_CTR)0); //返回0(有錯(cuò)誤),停止執(zhí)行 } #endif#if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u //如果使能了中斷中非法調(diào)用檢測if (OSIntNestingCtr > (OS_NESTING_CTR)0) { //如果該函數(shù)在中斷中被調(diào)用*p_err = OS_ERR_PEND_ISR; //返回錯(cuò)誤類型為“在中斷中等待”return ((OS_SEM_CTR)0); //返回0(有錯(cuò)誤),停止執(zhí)行 } #endif#if OS_CFG_ARG_CHK_EN > 0u //如果使能了參數(shù)檢測switch (opt) { //根據(jù)選項(xiàng)分類處理case OS_OPT_PEND_BLOCKING: //如果選項(xiàng)在預(yù)期內(nèi)case OS_OPT_PEND_NON_BLOCKING:break; //直接跳出default: //如果選項(xiàng)超出預(yù)期*p_err = OS_ERR_OPT_INVALID; //錯(cuò)誤類型為“選項(xiàng)非法”return ((OS_SEM_CTR)0); //返回0(有錯(cuò)誤),停止執(zhí)行 } #endifif (p_ts != (CPU_TS *)0) { //如果 p_ts 非空*p_ts = (CPU_TS )0; //清零(初始化)p_ts }CPU_CRITICAL_ENTER(); //關(guān)中斷 if (OSTCBCurPtr->SemCtr > (OS_SEM_CTR)0) { //如果任務(wù)信號(hào)量當(dāng)前可用OSTCBCurPtr->SemCtr--; //信號(hào)量計(jì)數(shù)器減1ctr = OSTCBCurPtr->SemCtr; //獲取信號(hào)量的當(dāng)前計(jì)數(shù)值if (p_ts != (CPU_TS *)0) { //如果 p_ts 非空*p_ts = OSTCBCurPtr->TS; //返回信號(hào)量被發(fā)布的時(shí)間戳 } #if OS_CFG_TASK_PROFILE_EN > 0u //如果使能了任務(wù)控制塊的簡況變量OSTCBCurPtr->SemPendTime = OS_TS_GET() - OSTCBCurPtr->TS; //更新任務(wù)等待if (OSTCBCurPtr->SemPendTimeMax < OSTCBCurPtr->SemPendTime) { //任務(wù)信號(hào)量的OSTCBCurPtr->SemPendTimeMax = OSTCBCurPtr->SemPendTime; //最長時(shí)間記錄。 } #endifCPU_CRITICAL_EXIT(); //開中斷 *p_err = OS_ERR_NONE; //錯(cuò)誤類型為“無錯(cuò)誤”return (ctr); //返回信號(hào)量的當(dāng)前計(jì)數(shù)值 }/* 如果任務(wù)信號(hào)量當(dāng)前不可用 */if ((opt & OS_OPT_PEND_NON_BLOCKING) != (OS_OPT)0) { //如果選擇了不阻塞任務(wù)CPU_CRITICAL_EXIT(); //開中斷*p_err = OS_ERR_PEND_WOULD_BLOCK; //錯(cuò)誤類型為“缺乏阻塞”return ((OS_SEM_CTR)0); //返回0(有錯(cuò)誤),停止執(zhí)行} else { //如果選擇了阻塞任務(wù)if (OSSchedLockNestingCtr > (OS_NESTING_CTR)0) { //如果調(diào)度器被鎖CPU_CRITICAL_EXIT(); //開中斷*p_err = OS_ERR_SCHED_LOCKED; //錯(cuò)誤類型為“調(diào)度器被鎖”return ((OS_SEM_CTR)0); //返回0(有錯(cuò)誤),停止執(zhí)行 }}/* 如果調(diào)度器未被鎖 */OS_CRITICAL_ENTER_CPU_EXIT(); //鎖調(diào)度器,重開中斷 OS_Pend((OS_PEND_DATA *)0, //阻塞任務(wù),等待信號(hào)量。(OS_PEND_OBJ *)0, //不需插入等待列表。 (OS_STATE )OS_TASK_PEND_ON_TASK_SEM,(OS_TICK )timeout);OS_CRITICAL_EXIT_NO_SCHED(); //開調(diào)度器(無調(diào)度) OSSched(); //調(diào)度任務(wù)/* 任務(wù)獲得信號(hào)量后得以繼續(xù)運(yùn)行 */CPU_CRITICAL_ENTER(); //關(guān)中斷switch (OSTCBCurPtr->PendStatus) { //根據(jù)任務(wù)的等待狀態(tài)分類處理case OS_STATUS_PEND_OK: //如果任務(wù)成功獲得信號(hào)量if (p_ts != (CPU_TS *)0) { //返回信號(hào)量被發(fā)布的時(shí)間戳*p_ts = OSTCBCurPtr->TS; #if OS_CFG_TASK_PROFILE_EN > 0u //更新最長等待時(shí)間記錄OSTCBCurPtr->SemPendTime = OS_TS_GET() - OSTCBCurPtr->TS;if (OSTCBCurPtr->SemPendTimeMax < OSTCBCurPtr->SemPendTime) {OSTCBCurPtr->SemPendTimeMax = OSTCBCurPtr->SemPendTime;} #endif}*p_err = OS_ERR_NONE; //錯(cuò)誤類型為“無錯(cuò)誤”break; //跳出case OS_STATUS_PEND_ABORT: //如果等待被中止if (p_ts != (CPU_TS *)0) { //返回被終止時(shí)的時(shí)間戳*p_ts = OSTCBCurPtr->TS;}*p_err = OS_ERR_PEND_ABORT; //錯(cuò)誤類型為“等待被中止”break; //跳出case OS_STATUS_PEND_TIMEOUT: //如果等待超時(shí)if (p_ts != (CPU_TS *)0) { //返回時(shí)間戳為0*p_ts = (CPU_TS )0;}*p_err = OS_ERR_TIMEOUT; //錯(cuò)誤類型為“等待超時(shí)”break; //跳出default: //如果等待狀態(tài)超出預(yù)期*p_err = OS_ERR_STATUS_INVALID; //錯(cuò)誤類型為“狀態(tài)非法”break; //跳出 } ctr = OSTCBCurPtr->SemCtr; //獲取信號(hào)量的當(dāng)前計(jì)數(shù)值CPU_CRITICAL_EXIT(); //開中斷return (ctr); //返回信號(hào)量的當(dāng)前計(jì)數(shù)值 } OSTaskSemPend()

  當(dāng)需要阻塞任務(wù),等待任務(wù)信號(hào)量時(shí),OSTaskSemPend () 函數(shù)會(huì)調(diào)用一個(gè)更加底層的等待函數(shù)來執(zhí)行當(dāng)前任務(wù)對(duì)多值信號(hào)量的等待,該函數(shù)就是 OS_Pend()。與 OS_Post() 函數(shù)一樣,OS_Pend() 函數(shù)不僅僅用來等待任務(wù)信號(hào)量,還可以等待多值信號(hào)量、互斥信號(hào)量、消息隊(duì)列、事件標(biāo)志組或任務(wù)消息隊(duì)列。注意,在這里,OS_Pend()函數(shù)并沒有把當(dāng)前任務(wù)插入到等待列表。

  OS_Pend() 函數(shù)的定義位于“os_core.c”:

void OS_Pend (OS_PEND_DATA *p_pend_data, //待插入等待列表的元素OS_PEND_OBJ *p_obj, //等待的內(nèi)核對(duì)象OS_STATE pending_on, //等待哪種對(duì)象內(nèi)核OS_TICK timeout) //等待期限 {OS_PEND_LIST *p_pend_list;OSTCBCurPtr->PendOn = pending_on; //資源不可用,開始等待OSTCBCurPtr->PendStatus = OS_STATUS_PEND_OK; //正常等待中 OS_TaskBlock(OSTCBCurPtr, //阻塞當(dāng)前運(yùn)行任務(wù),timeout); //如果 timeout 非0,把任務(wù)插入的節(jié)拍列表if (p_obj != (OS_PEND_OBJ *)0) { //如果等待對(duì)象非空p_pend_list = &p_obj->PendList; //獲取對(duì)象的等待列表到 p_pend_listp_pend_data->PendObjPtr = p_obj; //保存要等待的對(duì)象OS_PendDataInit((OS_TCB *)OSTCBCurPtr, //初始化 p_pend_data(待插入等待列表)(OS_PEND_DATA *)p_pend_data,(OS_OBJ_QTY )1);OS_PendListInsertPrio(p_pend_list, //按優(yōu)先級(jí)將 p_pend_data 插入到等待列表 p_pend_data);} else { //如果等待對(duì)象為空OSTCBCurPtr->PendDataTblEntries = (OS_OBJ_QTY )0; //清零當(dāng)前任務(wù)的等待域數(shù)據(jù)OSTCBCurPtr->PendDataTblPtr = (OS_PEND_DATA *)0; } #if OS_CFG_DBG_EN > 0u //如果使能了調(diào)試代碼和變量 OS_PendDbgNameAdd(p_obj, //更新信號(hào)量的 DbgNamePtr 元素為其等待OSTCBCurPtr); //列表中優(yōu)先級(jí)最高的任務(wù)的名稱。 #endif } OS_Pend()

OSTaskSemPendAbort ()?

  OSTaskSemPendAbort() 函數(shù)用于中止一個(gè)任務(wù)對(duì)其任務(wù)信號(hào)量的等待。要使用OSTaskSemPendAbort() 函數(shù),還得事先使能 OS_CFG_TASK_SEM_PEND_ABORT_EN(位于“os_cfg.h”)

#define OS_CFG_TASK_SEM_PEND_ABORT_EN 1u //使能/禁用函數(shù) OSTaskSemPendAbort()

  OSTaskSemPendAbort() 函數(shù)的信息如下表所示。

  OSTaskSemPendAbort() 函數(shù)的定義位于“os_task.c”:

#if OS_CFG_TASK_SEM_PEND_ABORT_EN > 0u //如果使能了 OSTaskSemPendAbort() CPU_BOOLEAN OSTaskSemPendAbort (OS_TCB *p_tcb, //目標(biāo)任務(wù)OS_OPT opt, //選項(xiàng)OS_ERR *p_err) //返回錯(cuò)誤類型 {CPU_TS ts;CPU_SR_ALLOC(); //使用到臨界段(在關(guān)/開中斷時(shí))時(shí)必需該宏,該宏聲明和//定義一個(gè)局部變量,用于保存關(guān)中斷前的 CPU 狀態(tài)寄存器// SR(臨界段關(guān)中斷只需保存SR),開中斷時(shí)將該值還原。 #ifdef OS_SAFETY_CRITICAL //如果使能了安全檢測if (p_err == (OS_ERR *)0) { //如果錯(cuò)誤類型實(shí)參為空OS_SAFETY_CRITICAL_EXCEPTION(); //執(zhí)行安全檢測異常函數(shù)return (DEF_FALSE); //返回(失敗),停止執(zhí)行 } #endif#if OS_CFG_CALLED_FROM_ISR_CHK_EN > 0u //如果使能了中斷中非法調(diào)用檢測if (OSIntNestingCtr > (OS_NESTING_CTR)0) { //如果該函數(shù)是在中斷中被調(diào)用*p_err = OS_ERR_PEND_ABORT_ISR; //錯(cuò)誤類型為“在中斷中創(chuàng)建對(duì)象”return (DEF_FALSE); //返回(失敗),停止執(zhí)行 } #endif#if OS_CFG_ARG_CHK_EN > 0u //如果使能了參數(shù)檢測switch (opt) { //根據(jù)選項(xiàng)匪類處理case OS_OPT_POST_NONE: //如果選項(xiàng)在預(yù)期內(nèi)case OS_OPT_POST_NO_SCHED:break; //直接跳出default: //如果選項(xiàng)超出預(yù)期*p_err = OS_ERR_OPT_INVALID; //錯(cuò)誤類型為“選項(xiàng)非法”return (DEF_FALSE); //返回(失敗),停止執(zhí)行 } #endifCPU_CRITICAL_ENTER(); //關(guān)中斷if ((p_tcb == (OS_TCB *)0) || //如果 p_tcb 為空,或者(p_tcb == OSTCBCurPtr)) { //p_tcb 指向當(dāng)前運(yùn)行任務(wù)。CPU_CRITICAL_EXIT(); //開中斷*p_err = OS_ERR_PEND_ABORT_SELF; //錯(cuò)誤類型為“中止自身”return (DEF_FALSE); //返回(失敗),停止執(zhí)行 }/* 如果 p_tcb (目標(biāo)任務(wù)) 不是當(dāng)前運(yùn)行任務(wù)(自身) */if (p_tcb->PendOn != OS_TASK_PEND_ON_TASK_SEM) { //如果目標(biāo)任務(wù)沒在等待任務(wù)信號(hào)量CPU_CRITICAL_EXIT(); //開中斷*p_err = OS_ERR_PEND_ABORT_NONE; //錯(cuò)誤類型為“沒在等待任務(wù)信號(hào)量”return (DEF_FALSE); //返回(失敗),停止執(zhí)行 }CPU_CRITICAL_EXIT(); //開中斷 OS_CRITICAL_ENTER(); //進(jìn)入臨界段ts = OS_TS_GET(); //獲取時(shí)間戳OS_PendAbort((OS_PEND_OBJ *)0, //中止目標(biāo)任務(wù)對(duì)信號(hào)量的等待 p_tcb, ts);OS_CRITICAL_EXIT_NO_SCHED(); //退出臨界段(無調(diào)度)if ((opt & OS_OPT_POST_NO_SCHED) == (OS_OPT)0) { //如果選擇了任務(wù)調(diào)度OSSched(); //調(diào)度任務(wù) }*p_err = OS_ERR_NONE; //錯(cuò)誤類型為“無錯(cuò)誤”return (DEF_TRUE); //返回(中止成功) } #endif OSTaskSemPendAbort()

  OSTaskSemPendAbort() 函數(shù)會(huì)調(diào)用一個(gè)更加底層的中止等待函數(shù)來執(zhí)行當(dāng)前任務(wù)對(duì)多值信號(hào)量的等待,該函數(shù)就是 OS_PendAbort()OS_PendAbort() 函數(shù)不僅僅用來中止對(duì)任務(wù)信號(hào)量的等待,還可以中止對(duì)多值信號(hào)量、互斥信號(hào)量、消息隊(duì)列、事件標(biāo)志組或任務(wù)消息隊(duì)列的等待。

  OS_PendAbort() 函數(shù)的定義位于“os_core.c”:

void OS_PendAbort (OS_PEND_OBJ *p_obj, //被等待對(duì)象的類型OS_TCB *p_tcb, //任務(wù)控制塊指針CPU_TS ts) //等待被中止時(shí)的時(shí)間戳 {switch (p_tcb->TaskState) { //根據(jù)任務(wù)狀態(tài)分類處理 case OS_TASK_STATE_RDY: //如果任務(wù)是就緒狀態(tài)case OS_TASK_STATE_DLY: //如果任務(wù)是延時(shí)狀態(tài)case OS_TASK_STATE_SUSPENDED: //如果任務(wù)是掛起狀態(tài)case OS_TASK_STATE_DLY_SUSPENDED: //如果任務(wù)是在延時(shí)中被掛起break; //這些情況均與等待無關(guān),直接跳出case OS_TASK_STATE_PEND: //如果任務(wù)是無期限等待狀態(tài)case OS_TASK_STATE_PEND_TIMEOUT: //如果任務(wù)是有期限等待狀態(tài)if (p_tcb->PendOn == OS_TASK_PEND_ON_MULTI) { //如果任務(wù)在等待多個(gè)信號(hào)量或消息隊(duì)列OS_PendAbort1(p_obj, //強(qiáng)制解除任務(wù)對(duì)某一對(duì)象的等待 p_tcb,ts);} #if (OS_MSG_EN > 0u) //如果使能了任務(wù)隊(duì)列或消息隊(duì)列p_tcb->MsgPtr = (void *)0; //清除(復(fù)位)任務(wù)的消息域p_tcb->MsgSize = (OS_MSG_SIZE)0u; #endifp_tcb->TS = ts; //保存等待被中止時(shí)的時(shí)間戳到任務(wù)控制塊if (p_obj != (OS_PEND_OBJ *)0) { //如果等待對(duì)象非空OS_PendListRemove(p_tcb); //將任務(wù)從所有等待列表中移除 }OS_TaskRdy(p_tcb); //讓任務(wù)進(jìn)準(zhǔn)備運(yùn)行p_tcb->TaskState = OS_TASK_STATE_RDY; //修改任務(wù)狀態(tài)為就緒狀態(tài)p_tcb->PendStatus = OS_STATUS_PEND_ABORT; //標(biāo)記任務(wù)的等待被中止p_tcb->PendOn = OS_TASK_PEND_ON_NOTHING; //標(biāo)記任務(wù)目前沒有等待任何對(duì)象break; //跳出case OS_TASK_STATE_PEND_SUSPENDED: //如果任務(wù)在無期限等待中被掛起case OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED: //如果任務(wù)在有期限等待中被掛起if (p_tcb->PendOn == OS_TASK_PEND_ON_MULTI) { //如果任務(wù)在等待多個(gè)信號(hào)量或消息隊(duì)列OS_PendAbort1(p_obj, //強(qiáng)制解除任務(wù)對(duì)某一對(duì)象的等待 p_tcb,ts);} #if (OS_MSG_EN > 0u) //如果使能了任務(wù)隊(duì)列或消息隊(duì)列p_tcb->MsgPtr = (void *)0; //清除(復(fù)位)任務(wù)的消息域p_tcb->MsgSize = (OS_MSG_SIZE)0u; #endifp_tcb->TS = ts; //保存等待被中止時(shí)的時(shí)間戳到任務(wù)控制塊if (p_obj != (OS_PEND_OBJ *)0) { //如果等待對(duì)象非空OS_PendListRemove(p_tcb); //將任務(wù)從所有等待列表中移除 }OS_TickListRemove(p_tcb); //讓任務(wù)脫離節(jié)拍列表p_tcb->TaskState = OS_TASK_STATE_SUSPENDED; //修改任務(wù)狀態(tài)為掛起狀態(tài)p_tcb->PendStatus = OS_STATUS_PEND_ABORT; //標(biāo)記任務(wù)的等待被中止p_tcb->PendOn = OS_TASK_PEND_ON_NOTHING; //標(biāo)記任務(wù)目前沒有等待任何對(duì)象break; //跳出default: //如果任務(wù)狀態(tài)超出預(yù)期break; //不需處理,直接跳出 } } OS_PendAbort()

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/tianxxl/p/10385933.html

總結(jié)

以上是生活随笔為你收集整理的任务信号量的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

免费网站在线 | 五月网婷婷 | 日韩高清在线看 | 91av在线看 | 亚洲天堂网站 | 成人a在线观看高清电影 | 狠狠色丁香久久婷婷综合_中 | 久久精品一区二区三区国产主播 | 久久国产免费看 | 91福利视频在线 | 一区二区电影在线观看 | 亚洲成人xxx | 草久草久| 久久1电影院 | 国产无套精品久久久久久 | av资源网在线播放 | 久久中文精品视频 | 日韩av在线网站 | 久久理伦片 | 亚洲五月激情 | 国产精品久久久久久久久免费 | 国产精品久久一区二区无卡 | 国产在线视频一区二区 | 91精品视频免费观看 | 午夜视频在线瓜伦 | 亚洲草视频 | 精品美女久久久久久免费 | 操操色 | 丁香色婷婷 | 久草在线视频在线观看 | 91亚洲精品国偷拍自产在线观看 | 亚洲免费一级 | av黄色亚洲 | 久久香蕉电影 | 久草在线最新视频 | 中文字幕亚洲欧美日韩 | 日日草视频 | 精品理论片| 久久久久亚洲精品 | 国产精品入口66mio女同 | 免费黄色网止 | av观看网站 | 欧美另类成人 | 日日爱夜夜爱 | 激情综合中文娱乐网 | 免费观看成人网 | 久久图 | 成人国产网址 | 欧美一级片免费播放 | 久久国产精品成人免费浪潮 | av网站免费在线 | 国产女做a爱免费视频 | 日韩在线不卡av | av大全免费在线观看 | 免费高清av在线看 | 欧美日韩有码 | 香蕉视频在线免费 | 国产一区二区三区免费视频 | 亚洲精品高清视频在线观看 | 国产麻豆视频 | 日韩欧美高清一区二区三区 | 黄网站色成年免费观看 | 肉色欧美久久久久久久免费看 | 国产精品成人一区二区三区吃奶 | 中文字幕在线免费看线人 | 青青河边草观看完整版高清 | 国产成人久久av免费高清密臂 | 国产老妇av | 狠狠的干狠狠的操 | 成人av网站在线 | 中文字幕xxxx | 亚洲欧美视频在线观看 | 亚洲精品免费在线视频 | www.久久免费视频 | 69国产在线观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 久久66热这里只有精品 | 久久99国产综合精品免费 | 超级碰碰免费视频 | 欧美日一级片 | 久久视频99 | 亚洲成人高清在线 | 天天天天天天操 | 国产精品久久av | 99爱视频在线观看 | 精品国产_亚洲人成在线 | 人人插人人插 | 久久影院中文字幕 | 9在线观看免费高清完整版在线观看明 | 国产爽视频| 玖草影院| 六月丁香婷 | www日韩精品 | 亚洲极色 | 三级黄色免费 | 亚洲综合视频在线观看 | 开心激情婷婷 | 精品1区2区 | 久久国产精品二国产精品中国洋人 | 日韩丝袜视频 | 五月婷婷中文网 | 国产高清av在线播放 | 91精品国产自产91精品 | 99色在线 | 久久久久国产精品视频 | 天天在线视频色 | 97自拍超碰| 狠狠插狠狠干 | 国产三级精品在线 | 激情久久网 | 日本久久精品视频 | 在线v| 伊人五月 | 亚洲精品免费在线观看视频 | 国产中文字幕亚洲 | 免费a网址 | 国产123区在线观看 国产精品麻豆91 | 成人av免费在线播放 | 综合色狠狠 | 91精品国产成 | 在线国产日韩 | 在线一区电影 | 欧美巨大 | 中文字幕视频三区 | 久草在线免费看视频 | 手机在线观看国产精品 | 久久久久精 | 97av影院 | 亚洲深爱激情 | 国产日韩精品一区二区在线观看播放 | 激情五月***国产精品 | www.av免费| 成人欧美一区二区三区在线观看 | 91传媒在线观看 | 久久国产免费 | 免费观看www视频 | 日韩一区二区免费视频 | 国产福利91精品 | 黄色av大片| 亚洲精品免费视频 | 亚洲精品国产精品久久99热 | 99精彩视频| 久久a视频| 999男人的天堂 | 久久夜色精品国产欧美乱极品 | 中文字幕在线看视频 | 亚洲国产成人精品在线观看 | 手机在线视频福利 | 国产黄色精品视频 | 日本在线观看黄色 | 日韩最新在线视频 | 91中文字幕在线播放 | 亚洲伦理一区 | 超碰在线99| 99精品国产一区二区三区不卡 | 午夜精品久久久久久久99热影院 | 色开心| 美女视频黄免费网站 | 婷婷激情五月综合 | 国产精品男女视频 | 中文字幕一区二区三区乱码在线 | 手机av电影在线观看 | 久久欧美在线电影 | 欧洲精品在线视频 | 成人影音在线 | 在线综合 亚洲 欧美在线视频 | 91av在线免费看 | 99国产成+人+综合+亚洲 欧美 | 激情深爱.com | 黄污污网站 | 人人藻人人澡人人爽 | 免费成人在线视频网站 | 日韩3区 | 久久九精品| 久久精品国产亚洲a | 免费高清在线视频一区· | av一级在线观看 | 日韩一区二区三区免费视频 | www91在线观看 | 999国产| 美女网站视频免费黄 | 在线观看黄色小视频 | 国产精品短视频 | 久久久久久久久爱 | 成人毛片在线视频 | 色偷偷av男人天堂 | 色 免费观看 | 色婷婷99 | 99精品在线免费视频 | 精品久久久久久久久久久久久 | 韩日在线一区 | 中文字幕精品一区久久久久 | 亚洲精品网址在线观看 | 久久综合久久鬼 | www狠狠 | 麻豆传媒精品 | 涩av在线 | 97精品久久人人爽人人爽 | 久久久久免费精品 | 99热官网 | 欧美精品久久久久久久久老牛影院 | 91最新视频在线观看 | 欧美日韩国产页 | 国产91精品一区二区麻豆亚洲 | 在线视频观看亚洲 | 亚洲乱亚洲乱亚洲 | 国产精品欧美久久久久无广告 | 日韩三区在线 | 国产精品一区免费在线观看 | 97免费在线观看 | 欧美另类老妇 | 丁香五月亚洲综合在线 | 亚洲电影一区二区 | 日本精品视频免费 | 另类老妇性bbwbbw高清 | 免费国产黄线在线观看视频 | 伊人激情综合 | 久久久久久欧美二区电影网 | 欧美性极品xxxx娇小 | 欧美日韩精品在线免费观看 | 国产一区视频在线 | 亚洲国产精品电影 | 国产手机在线观看 | www激情com| 国产精品igao视频网入口 | 免费观看成人网 | 日韩一区二区三区免费视频 | 日韩和的一区二在线 | 久久精品国产成人 | 欧美最爽乱淫视频播放 | 伊人天堂久久 | 国产一区欧美一区 | 欧美午夜剧场 | 国产一区二区三区 在线 | 99热官网 | 一区二区三区在线影院 | 免费裸体视频网 | 夜夜摸夜夜爽 | 国产不卡一二三区 | 欧美在线视频免费 | 亚洲精品国产自产拍在线观看 | 成人av观看 | 视频一区在线播放 | 欧美天堂视频在线 | 中文字幕在线视频一区二区三区 | 在线观看韩日电影免费 | 国产专区在线 | 欧美最猛性xxx | 国产精品毛片久久久久久 | 免费黄色a级毛片 | 91 在线视频播放 | 国产精品99免费看 | 日韩精品久久中文字幕 | 日韩精品中文字幕一区二区 | 天天综合人人 | 国产小视频网站 | 亚洲第一av在线 | 亚洲免费av在线 | 久久人人爽爽人人爽人人片av | 中文字幕在线观看视频一区 | 色婷婷狠狠18 | 成人av中文字幕在线观看 | 免费美女av | 九九热99视频 | 国产中年夫妇高潮精品视频 | 成人综合婷婷国产精品久久免费 | 91视视频在线直接观看在线看网页在线看 | 成人在线观看免费 | 国内免费久久久久久久久久久 | 精品夜夜嗨av一区二区三区 | 2018亚洲男人天堂 | 99精品视频一区二区 | 国产 欧美 日产久久 | 国产a级片免费观看 | 91色吧| 色午夜 | 国产一级做a爱片久久毛片a | 国产97超碰 | 九九九九热精品免费视频点播观看 | 波多野结衣久久精品 | 91尤物国产尤物福利在线播放 | 久久久在线视频 | 伊人久久影视 | 国产一级免费在线 | 伊人久操 | 色播五月婷婷 | 色资源在线 | 亚洲综合在线一区二区三区 | 久草在线资源免费 | 亚洲午夜精品久久久久久久久 | 五月天伊人 | 国产成人久久av免费高清密臂 | 婷婷丁香自拍 | 亚洲视频综合 | 日韩高清一二三区 | 国产精品嫩草影视久久久 | 一区二区不卡 | 久久精品视频免费 | 肉色欧美久久久久久久免费看 | 狠狠操影视 | 中文字幕 在线 一 二 | 激情亚洲综合在线 | 婷婷久久亚洲 | 99久久夜色精品国产亚洲96 | 日韩日韩日韩日韩 | 国产美女精品在线 | 国产91九色视频 | 天天爱天天操 | 中文字幕有码在线播放 | 亚洲a网 | 天堂av免费| 九九九九热精品免费视频点播观看 | 好看av在线 | 99久久电影| 免费看一级一片 | 69视频永久免费观看 | 在线成人高清电影 | 久久综合狠狠 | 免费av在线| 久久久久久毛片精品免费不卡 | 人人射人人爱 | av高清免费 | 亚洲美女在线一区 | 日韩欧美一区二区在线 | 亚洲视频在线视频 | 国产中文在线视频 | 黄网站免费大全入口 | 亚洲综合情 | 国产玖玖精品视频 | www.色的 | 亚洲成熟女人毛片在线 | 五月天婷亚洲天综合网精品偷 | 美女视频永久黄网站免费观看国产 | 激情视频亚洲 | 不卡中文字幕在线 | 1024手机看片国产 | 97在线视频观看 | 91在线一区二区 | 9999国产| 伊人春色电影网 | 在线精品视频免费播放 | 久久男女视频 | 亚洲综合五月 | 丁香网五月天 | 国产精品自在线拍国产 | 丁香视频 | 欧美在线一 | 97福利在线 | 天天草天天| 99精品视频在线免费观看 | 91av视屏 | 欧美黄在线 | av一级一片 | 精品一区中文字幕 | 日韩 在线a | 成人av.com | 人人干网 | 91免费高清在线观看 | 中文永久免费观看 | 国产精品国内免费一区二区三区 | 精品久久亚洲 | 国产精品日韩高清 | 在线视频 国产 日韩 | 国产亚洲视频在线观看 | 色噜噜日韩精品欧美一区二区 | 久久久精品影视 | 午夜视频亚洲 | 日韩av中文字幕在线 | 欧美精品视 | 久久精品爱视频 | 成人手机在线视频 | 一区二区成人国产精品 | 国产 欧美 日韩 | 日韩一二区在线 | 日韩av一区二区三区四区 | 日韩精品一区二区不卡 | 天天躁天天操 | 亚洲自拍偷拍色图 | 日韩av伦理片| av成人动漫在线观看 | 色综合久久久久综合 | 亚洲三级黄| 国产91区| 日韩欧美在线免费 | 久久线视频 | 久久免费在线观看视频 | 91专区在线观看 | av电影免费在线 | 欧美色图亚洲图片 | 97人人澡人人添人人爽超碰 | 久产久精国产品 | 国产又粗又猛又黄视频 | 色偷偷88888欧美精品久久 | 久久久久久久综合色一本 | 国产专区日韩专区 | 国产精品一区二区电影 | 国产精品女同一区二区三区久久夜 | 五月婷婷播播 | 欧美在线视频一区二区三区 | av天天干| 免费成人在线电影 | 久久精品网站免费观看 | 国产成人三级一区二区在线观看一 | 亚洲无人区小视频 | 中文字幕在线一二 | 在线免费观看成人 | 国产不卡在线播放 | 国产高清不卡一区二区三区 | 午夜视频一区二区三区 | 久久视精品| 天天骚夜夜操 | 激情电影影院 | 在线欧美最极品的av | 国产精品久久久久久久久久久久久久 | 亚洲综合一区二区精品导航 | 久久1区 | 操操综合 | 亚洲一区尤物 | 日韩午夜大片 | 天天插日日插 | 中文字幕a∨在线乱码免费看 | 亚洲精品小视频在线观看 | 在线电影播放 | 婷婷丁香av | 久久精品福利 | 免费亚洲一区二区 | 九九99| 国产最新在线视频 | 日韩三级中文字幕 | 中文字幕在线播放一区二区 | 国产伦精品一区二区三区在线 | 二区精品视频 | 久久99久久99免费视频 | 免费视频xnxx com| 成人黄色小说网 | 午夜免费电影院 | 国产亚洲精品久久久久秋 | 亚洲精品黄色在线观看 | 久久国产欧美日韩 | 国产精品影音先锋 | 特及黄色片 | 中文字幕高清免费日韩视频在线 | 久久99精品久久久久婷婷 | 亚洲国产精品免费 | 色综合欧洲 | 女人高潮特级毛片 | 国产精品永久在线 | 久久久久久久久毛片精品 | 激情久久影院 | 精品国产乱码久久久久久久 | 激情欧美在线观看 | 欧美日韩18 | 国产中文字幕三区 | 九九热.com | 日本特黄一级片 | www视频在线观看 | 人人爱爱人人 | 色妞久久福利网 | 国产精品xxxx18a99 | 99亚洲天堂 | 国产视频综合在线 | 亚洲日本三级 | 国产精品一区在线观看 | 国产一区在线观看视频 | 国产在线播放一区二区三区 | 91传媒视频在线观看 | 天天做天天爱天天综合网 | 91久久精品日日躁夜夜躁国产 | 国产中文字幕视频在线观看 | 亚洲精品女| 视频 天天草 | 亚洲视频播放 | 欧美亚洲精品一区 | 久久综合九色综合欧美狠狠 | 香蕉视频在线免费 | 99在线国产| 丁香色天天 | 午夜精品一区二区三区四区 | 在线播放一区二区三区 | 日日夜夜精品免费 | 91在线视频观看 | 亚洲精品成人av在线 | 成人午夜性影院 | 免费三级网| a天堂最新版中文在线地址 久久99久久精品国产 | 日韩av网站在线播放 | 国产在线看| 免费看在线看www777 | 九九免费在线观看视频 | 日韩av视屏在线观看 | 国产精品24小时在线观看 | 国产理论一区二区三区 | 9色在线视频 | 日韩高清在线看 | 久久久久伊人 | 亚洲国产精品va在线看黑人动漫 | 99re视频在线观看 | 国产精品人成电影在线观看 | 亚洲成人av一区二区 | 日本字幕网 | 国产一级大片在线观看 | 婷婷综合在线 | 中文字幕a∨在线乱码免费看 | 久久久2o19精品 | 久久女同性恋中文字幕 | 日韩欧美国产成人 | 久精品视频在线观看 | 亚洲一区黄色 | 国产高清久久久久 | 国产区网址 | 国产精品久久久网站 | 久久伊99综合婷婷久久伊 | 亚洲综合激情 | 在线观看中文字幕视频 | 久久国产视屏 | 天天插狠狠插 | 日韩a级免费视频 | 国内99视频 | 99久久综合狠狠综合久久 | 亚洲蜜桃av | 国产麻豆精品免费视频 | 这里只有精品视频在线观看 | 日日夜夜狠狠操 | 视频国产一区二区三区 | 久久久久日本精品一区二区三区 | 99性视频 | 最近中文字幕 | 91在线观看视频网站 | 婷婷色社区 | 久草www| 成年人视频在线 | 久久网站免费 | 婷婷丁香久久五月婷婷 | 国产999精品久久久久久 | 深夜成人av | 91九色丨porny丨丰满6 | 亚洲激情电影在线 | 在线电影日韩 | 国产一区二区视频在线 | 最近中文字幕高清字幕在线视频 | 日本在线观看中文字幕 | av色网站 | 国产精品1024| 99在线免费观看视频 | 成人羞羞免费 | 91人人射 | 激情小说网站亚洲综合网 | 婷婷亚洲五月色综合 | 伊人国产视频 | 97超碰国产精品女人人人爽 | 日韩免费电影 | 在线亚洲人成电影网站色www | 国内成人av| 国产免费成人av | 国产午夜一级毛片 | 国产999在线观看 | 99视频精品免费视频 | 蜜臀一区二区三区精品免费视频 | 中国一级片在线播放 | 99精品国产一区二区三区麻豆 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 黄色免费av | 色综合久久久久综合99 | 亚洲成人资源在线观看 | 国产裸体视频网站 | 婷婷免费在线视频 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品岛国久久久久久久久红粉 | 亚洲九九精品 | 亚洲闷骚少妇在线观看网站 | 人人草在线视频 | 久久久久久毛片 | 国产在线观看不卡 | 欧美在线观看视频一区二区 | 日韩精品无 | 日韩精品视频在线观看免费 | 99热九九这里只有精品10 | 欧美大荫蒂xxx | 久久精品电影网 | 色综合天天色综合 | 久久国产精品99久久久久 | 福利片免费看 | 久久精品久久久久久久 | 超碰99人人 | 少妇精品久久久一区二区免费 | 热久久最新地址 | 中国美女一级看片 | 日韩欧美视频在线观看免费 | 日韩精品第一区 | 香蕉视频最新网址 | 91最新网址在线观看 | 亚洲 欧美 91 | 丁香九月婷婷 | 精品乱码一区二区三四区 | 六月激情丁香 | 日韩精品久久久久久久电影竹菊 | 日韩中文字幕电影 | 久久精品国产免费观看 | 91av在线免费观看 | 爱av在线网 | 成人毛片久久 | 超碰在线人人 | av中文字幕在线电影 | 99色资源 | 人人超碰人人 | 欧美日韩大片在线观看 | 日日夜夜操操 | 六月丁香社区 | 国产成年免费视频 | 免费国产亚洲视频 | 亚洲国产午夜 | 亚洲视频网站在线观看 | 久草在线视频资源 | 国产91国语对白在线 | 亚洲一本视频 | 91伊人影院 | 九九九九精品九九九九 | 久色免费视频 | 久久夜色精品国产欧美一区麻豆 | 色婷婷综合在线 | 欧美一级专区免费大片 | 99久久久成人国产精品 | 国产在线视频不卡 | 成人a在线| 亚洲开心激情 | 高清久久久久久 | 久久久精品亚洲 | 91网址在线 | 涩涩网站在线播放 | 久久久免费精品 | 亚洲国产人午在线一二区 | 狂野欧美激情性xxxx欧美 | 久久夜色精品国产欧美乱极品 | 在线中文视频 | 天天鲁一鲁摸一摸爽一爽 | 成人av一二三区 | 99爱视频 | 99精品免费久久久久久久久日本 | 国产精品久久久久久久婷婷 | 久久精品屋 | 亚洲伊人婷婷 | 中文在线a∨在线 | 一级黄色片网站 | 免费一级片在线观看 | 97色狠狠 | 国产成人免费观看 | 四虎影视成人永久免费观看亚洲欧美 | 久热久草在线 | 免费观看一区二区三区视频 | 久久视频免费看 | 人人操日日干 | 六月丁香社区 | 久久久国产一区二区三区四区小说 | 午夜精品久久久久久久99 | 色婷五月| 欧美精品v国产精品 | 亚洲欧洲在线视频 | 人人草人人草 | 少妇bbb搡bbbb搡bbbb | 日韩精品一区电影 | 欧美日韩在线电影 | 精品国产一区二区三区蜜臀 | 在线免费中文字幕 | 日本中文字幕网址 | 国产成人亚洲精品自产在线 | 美女网站在线观看 | 91福利试看 | 亚洲欧洲精品一区二区精品久久久 | 日韩亚洲在线 | 日韩伦理片一区二区三区 | 91成版人在线观看入口 | 日韩精品在线一区 | 美女激情影院 | 免费看国产曰批40分钟 | 精品久久久久一区二区国产 | 免费aa大片 | 99在线精品视频 | 97超级碰碰碰碰久久久久 | 中文字幕一区二区在线观看 | 国产精品女 | 在线看片一区 | 黄色成人免费电影 | 国产精品久久久久久久久久直播 | 西西4444www大胆视频 | 久久影院中文字幕 | 黄色福利视频网站 | 亚洲免费av片 | 黄色免费av | 欧美另类xxx | 亚洲乱码一区 | 国产精品色 | 亚洲精品久久久久58 | 欧美性色黄大片在线观看 | 少妇高潮流白浆在线观看 | 日日操操 | 91久久电影| 国产在线视频导航 | 免费黄在线看 | 欧美日韩免费在线观看视频 | 尤物九九久久国产精品的分类 | 久久视频在线视频 | 亚洲一级国产 | 亚洲狠狠婷婷综合久久久 | 超级碰碰免费视频 | 91精品国产亚洲 | 免费高清在线观看成人 | 国产在线观看黄 | 96精品在线 | 婷婷在线免费视频 | 国色综合 | 欧美日韩国产色综合一二三四 | 久久蜜桃av | 黄色在线观看免费 | 久久欧美视频 | 正在播放国产精品 | 日本三级大片 | 中文字幕一二三区 | www免费网站在线观看 | 五月天综合色激情 | 国产在线一区二区三区播放 | 日韩国产欧美在线视频 | 美女国产| www.在线观看视频 | 最新av网址在线观看 | 中文字幕观看视频 | 欧美乱码精品一区二区 | 国产精品免费在线观看视频 | 国产美女视频 | 开心色激情网 | 精品国产视频在线 | 久久久久成 | 99色在线视频 | 亚洲国产精品久久久久 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 亚洲精品在线视频播放 | av福利在线导航 | 婷婷久久综合网 | 性色av香蕉一区二区 | 在线 精品 国产 | 激情五月开心 | 国产精品资源在线 | 99久久日韩精品免费热麻豆美女 | 2022国产精品视频 | 又黄又爽又无遮挡的视频 | 一区二区三区在线不卡 | 日韩美在线| 国产麻豆精品久久一二三 | 久久人人爽人人爽人人片 | 麻豆免费看片 | 免费网站在线观看成人 | 99久久精品国产一区二区三区 | 综合天天色 | 日韩激情第一页 | 黄色网在线免费观看 | 伊人色综合久久天天 | 精品久久久久一区二区国产 | 免费三级a | 成人a视频片观看免费 | 久久久久久久久福利 | 亚洲一级理论片 | 友田真希av | 亚洲爱爱视频 | 天堂av免费观看 | 精品国产91亚洲一区二区三区www | 免费成人在线视频网站 | 国产亚洲精品久 | 视频一区二区三区视频 | 国产精品成人av在线 | 亚洲一区网站 | 国产在线观看午夜 | 精品99久久久久久 | 国产精品1区2区在线观看 | 久久久久久久久网站 | 国产综合福利在线 | 婷婷久久亚洲 | 日韩久久精品一区二区三区下载 | 久久精品黄 | 国产免费观看久久 | 国产精品久久久久永久免费 | av成人黄色| 少妇搡bbbb搡bbb搡忠贞 | 日韩一级电影在线 | 在线看黄色av| 久久精品久久精品久久精品 | 日韩精品在线视频 | 人人爽久久涩噜噜噜网站 | 97人人看| 久久精品欧美一区二区三区麻豆 | 人人舔人人舔 | 日韩色一区二区三区 | 伊人五月综合 | 一区二区三区www | 91中文字幕在线 | 中文字幕 婷婷 | 欧美一二三四在线 | 97人人澡人人爽人人模亚洲 | 欧美成人69av | 欧美色图亚洲图片 | 狠狠干电影 | 视频在线观看亚洲 | 国产日韩精品一区二区 | 欧美91在线 | 探花在线观看 | 91丨精品丨蝌蚪丨白丝jk | 国产精品中文字幕在线播放 | 亚洲欧美乱综合图片区小说区 | 精品国产一区二区三区久久久 | 日韩在线观 | 久久另类小说 | 成 人 黄 色 片 在线播放 | 亚洲情婷婷| 久久久免费看视频 | 久久国产精彩视频 | 9999精品免费视频 | 视频国产一区二区三区 | 日韩在线视频网址 | 国产白浆在线观看 | 国产精品久久网站 | 日日操夜 | 久久久精品国产一区二区三区 | 欧美与欧洲交xxxx免费观看 | 高清久久久久久 | 91在线操| 欧美一级免费高清 | 精品少妇一区二区三区在线 | 久久激情综合网 | 国产视频一区二区在线播放 | 国产欧美在线一区 | 日韩免费三区 | 国产不卡毛片 | 午夜久久福利视频 | 亚洲精品视频免费在线观看 | 波多野结依在线观看 | 中文字幕在线不卡国产视频 | 国产精品福利在线观看 | 午夜精品久久久久久久99水蜜桃 | www.日日操.com| 国产精品日韩欧美 | 亚洲成a人片在线www | 亚洲精品视频在线观看免费视频 | 精品国产一区二区三区四区在线观看 | 亚洲视频在线免费观看 | av高清免费| 久热免费 | 亚洲视频六区 | 看毛片网站 | 少妇精品久久久一区二区免费 | 国产又粗又猛又黄 | 精品国产免费看 | 日韩一区正在播放 | 免费无遮挡动漫网站 | 97超碰人人澡人人爱学生 | 免费试看一区 | 日韩网站在线观看 | 四虎影视成人永久免费观看亚洲欧美 | 国产高清视频在线观看 | 精品久久久久久亚洲综合网站 | 中文在线字幕观看电影 | 亚洲精品字幕在线观看 | 久久激情五月婷婷 | 麻花豆传媒一二三产区 | 亚洲免费公开视频 | 日韩欧美视频在线观看免费 | 欧美巨乳网 | 国内久久久| 午夜免费电影院 | 精品国产一区二区三区男人吃奶 | 国产五月天婷婷 | 特级西西www44高清大胆图片 | 久久久久久久久电影 | 亚洲免费激情 | 日韩中文字幕在线观看 | 丁香色婷婷 | 黄色软件大全网站 | av动态图片 | 亚洲国产欧洲综合997久久, | 九九亚洲视频 | 十八岁以下禁止观看的1000个网站 | 国产精品大尺度 | 日韩最新在线视频 | 97在线成人 | 黄色www在线观看 | av电影在线观看 | 亚州国产精品 | 在线观看日韩av | 国产成人精品久久久 | 久久69av | 青青射| 国模视频一区二区 | 欧美日韩一区二区在线 | 国产一区在线观看免费 | 天天干天天插 | 国产一级二级在线播放 | 中文字幕高清有码 | 99久久久国产精品免费观看 | 人人讲下载 | 亚洲综合色丁香婷婷六月图片 | 18国产精品白浆在线观看免费 | 少妇性xxx | 97理论片| 欧美疯狂性受xxxxx另类 | 一区二区三区免费在线观看视频 | 亚洲一级理论片 | 久久综合在线 | 免费精品久久久 | 欧美孕妇与黑人孕交 | 国产成人精品一区在线 | 成人在线观看影院 | 国产.精品.日韩.另类.中文.在线.播放 | 在线观看国产日韩 | 天天天天色射综合 | 国产精品国产三级国产不产一地 | 国产精品自产拍在线观看中文 | 亚洲男男gaygay无套 | 欧美大香线蕉线伊人久久 | 天天操天| 中文字幕一区2区3区 | 国产看片网站 | 欧美日韩国产综合网 | 国产一级视频在线免费观看 | 欧美一区二区伦理片 | 97日日碰人人模人人澡分享吧 | av黄色大片 | 久久久久久久18 | 亚洲第一av在线 | 亚洲经典视频在线观看 | 免费看黄色91 | 国产精品久久久久毛片大屁完整版 | 久久激情视频 久久 | 亚洲va男人天堂 | 麻豆一二三精选视频 | 欧美久久久久 | 日韩欧美精品一区二区三区经典 | 欧美伦理一区二区三区 | 日日干天天 | 国产视频欧美视频 | 亚洲精品www久久久久久 | 成人在线观看你懂的 | 国产手机在线精品 | 欧美激情在线看 | 99免费视频 | 国产高清精品在线 | 亚洲精选在线观看 | 狠狠干2018 | 日本黄色免费大片 | 国产亚洲精品久久久网站好莱 | 欧美视频www | 99色免费 | 久久久精品国产一区二区三区 | 99亚洲天堂| 国产麻豆剧传媒免费观看 | 综合天天色 | av成人动漫 | 五月天天色 | 激情图片qvod| 亚洲综合色激情五月 | 国产精品久久久久婷婷二区次 | 亚洲视频免费在线 | 一级黄色片在线播放 | 9ⅰ精品久久久久久久久中文字幕 | 97av视频 | 欧美日韩免费在线观看视频 | 欧美日本一二三 | 黄色电影在线免费观看 | 成人午夜电影久久影院 | 国产亚洲精品久久久久久无几年桃 | 久久电影日韩 | 一区二区三区四区五区在线 | 色婷丁香| 99精品偷拍视频一区二区三区 | 国产精品黄色影片导航在线观看 | 欧美一级片免费在线观看 | 黄色www在线观看 | 国产精品网红直播 | 成人黄色电影在线 | 99精品免费久久久久久日本 | 国产黄色视 | 狠狠色噜噜狠狠狠狠 | 久久男女视频 | 免费a v观看 | 一区二区三区av在线 | 天天干一干 | 日韩女同一区二区三区在线观看 | 久久久久久久久久久黄色 | 国产成人精品av久久 | 欧美日韩在线视频一区 | 一级精品视频在线观看宜春院 | 久草电影免费在线观看 | 中文字幕在线日本 | 国产精品女同一区二区三区久久夜 | 亚洲国产精品500在线观看 | 91资源在线| 国产精品资源在线 | 亚洲黄色精品 | 国产一区二区在线播放 | 激情综合网婷婷 | 中文字幕在线观看国产 | 国产亚洲人成网站在线观看 |