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

歡迎訪問(wèn) 生活随笔!

生活随笔

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

编程问答

os_mbox.c(全)

發(fā)布時(shí)間:2025/3/21 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 os_mbox.c(全) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本篇介紹以下內(nèi)容:
  • 簡(jiǎn)單介紹郵箱機(jī)制
  • 從郵箱中接收消息void ?*OSMboxAccept (OS_EVENT *pevent
  • 建立并初始化一個(gè)郵箱OS_EVENT ?*OSMboxCreate (void *pmsg)
  • 刪除郵箱OS_EVENT ?*OSMboxDel (OS_EVENT ?*pevent,INT8U ?opt,INT8U ? *perr)
  • 取消等待消息的任務(wù)OSMboxPendAbort (OS_EVENT ?*pevent,INT8U ?opt,INT8U ?*perr)
  • 通過(guò)消息郵箱向任務(wù)發(fā)送消息OSMboxPost (OS_EVENT ?*pevent,void ?*pmsg)
  • 通過(guò)郵箱向(多)任務(wù)發(fā)送消息OSMboxPostOpt (OS_EVENT ?*pevent,void *pmsg,INT8U opt)
  • ?取得郵箱中的信息OSMboxQuery (OS_EVENT ?*pevent,?OS_MBOX_DATA ?*p_mbox_data)

郵箱機(jī)制簡(jiǎn)單介紹一下:

  • 在uc/os-ii中,完成一次兩個(gè)任務(wù)間的消息傳遞,只需要一個(gè)郵箱,并且郵箱中只能存放一個(gè)消息。在消息沒(méi)有取走前,不能在郵箱中存放新的消息。
  • uc/os-ii中存放和傳遞的是消息內(nèi)容緩沖區(qū)的指針。
  • 在uc/os-ii中,調(diào)度系統(tǒng)不能自動(dòng)通知某個(gè)任務(wù)郵箱中已經(jīng)有消息,需要任務(wù)主動(dòng)去取郵件(調(diào)用函數(shù)OSMboxPend())。
  • 郵箱操作過(guò)程:uc/os-ii郵箱通信的過(guò)程首先建立一個(gè)數(shù)據(jù)緩沖區(qū),即創(chuàng)建郵箱。一個(gè)系統(tǒng)中或者一個(gè)任務(wù)可以建立多個(gè)郵箱。不同郵箱通過(guò)郵箱指針來(lái)識(shí)別,該指針在建立郵箱時(shí)產(chǎn)生。郵箱由使用郵箱的任務(wù)函數(shù)建立,也可在系統(tǒng)初始化函數(shù)中建立。郵箱一旦建立,建立后將得到“OS_EVENT”類型的結(jié)構(gòu)指針,任務(wù)函數(shù)通過(guò)該指針可對(duì)郵箱進(jìn)行存取操作。
  • 一個(gè)系統(tǒng)中可以存在多個(gè)郵箱,對(duì)于接收消息的任務(wù)函數(shù)來(lái)說(shuō),應(yīng)該知道從那個(gè)郵箱中取消息,郵箱的識(shí)別是創(chuàng)建郵箱時(shí)“OSMboxCreate()”函數(shù)的返回值來(lái)得到的。互相發(fā)送和接收消息的2個(gè)任務(wù)使用同一個(gè)全局變量(“OS_EVENT”類型)來(lái)標(biāo)識(shí)一個(gè)郵箱。
  • 和郵箱相關(guān)的數(shù)據(jù)結(jié)構(gòu)主要是“OS_EVENT”,另外一個(gè)結(jié)構(gòu)“OS_MBOX_DATA”在函數(shù)中作為局部變量使用。在先收后發(fā)的情況下,使用“OS_TCB”的“OSTCBMsg”分量來(lái)存儲(chǔ)消息指針。消息郵箱的數(shù)據(jù)結(jié)構(gòu)為:
  • typedef struct os_mbox_data {void *OSMsg; /* Pointer to message in mailbox指向郵箱中消息的指針 */OS_PRIO OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur消息的等待任務(wù)列表 */OS_PRIO OSEventGrp; /* Group corresponding to tasks waiting for event to occur消息的等待任務(wù)所在的組 */ } OS_MBOX_DATA; typedef struct os_event {INT8U OSEventType;/* Type of event control block (see OS_EVENT_TYPE_xxxx)事件類型 */void *OSEventPtr;/* Pointer to message or queue structure 指向消息或者隊(duì)列結(jié)構(gòu)的指針 */INT16U OSEventCnt;/* Semaphore Count (not used if other EVENT type)*/OS_PRIO OSEventGrp; /* Group corresponding to tasks waiting for event to occur */OS_PRIO OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur任務(wù)等待列表*/#if OS_EVENT_NAME_EN > 0uINT8U *OSEventName; #endif } OS_EVENT;

    OS_EVENT結(jié)構(gòu)中的OSEventType用來(lái)表示事件類型,包括:

    郵箱事件:OS_EVENT_TYPE_MBOX;

    消息列表事件:OS_EVENT_TYPE_Q;

    信號(hào)量事件:OS_EVENT_TYPE_SEM;

    對(duì)于郵箱通信,我們只需要OS_EVENT中的”O(jiān)SEventTb1“和”O(jiān)SEventGrp“還有”O(jiān)SEventPtr“就可以了。

    7.郵箱的容量:在郵箱創(chuàng)建時(shí),系統(tǒng)并不分配郵箱的大小,郵箱的存儲(chǔ)空間實(shí)際上是發(fā)信任務(wù)定義的。消息傳遞過(guò)程中,只傳遞所發(fā)消息的指針,函數(shù)OSMboxPost()將消息指針傳遞給“OS_EVENT”中的“OSEventPtr”。

    8.注意一點(diǎn):對(duì)于使用消息的任務(wù)函數(shù)來(lái)說(shuō),由于是指針傳遞,使用局部變量來(lái)儲(chǔ)存發(fā)送消息,消息可能會(huì)在被收到前消失,所以,最好用全局變量來(lái)存儲(chǔ)發(fā)送消息。

    ===============================================================

    ===============================================================

    以上關(guān)于郵箱機(jī)制的介紹很清楚了,下面是uc/os-ii中os_mbox.c的部分代碼(代碼只做簡(jiǎn)單的語(yǔ)句注釋,不贅述其他)。

    從郵箱中接收消息void ?*OSMboxAccept (OS_EVENT *pevent):(部分代碼)

    #if OS_MBOX_EN > 0u /* ********************************************************************************************************* * ACCEPT MESSAGE FROM MAILBOX * 從郵箱中接收消息 * Description: This function checks the mailbox to see if a message is available. Unlike OSMboxPend(), * OSMboxAccept() does not suspend the calling task if a message is not available. *描述:該功能檢查郵箱看是否有可以獲得的消息。與OSMboxPend()不同的是,如果消息不可獲得,OSMboxAccept()下任務(wù)不會(huì)被掛起。 * Arguments : pevent is a pointer to the event control block *參數(shù): --pevent:指向事件控制塊的指針 * Returns : != (void *)0 is the message in the mailbox if one is available. The mailbox is cleared * so the next time OSMboxAccept() is called, the mailbox will be empty. * == (void *)0 if the mailbox is empty or, * if 'pevent' is a NULL pointer or, * if you didn't pass the proper event pointer.返回值:!= (void *)0:如果有消息可以獲得,返回該消息。郵箱被清除,當(dāng)下一次調(diào)用OSMboxAccept()時(shí),郵箱狀態(tài)為空 ********************************************************************************************************* */ #if OS_MBOX_ACCEPT_EN > 0u void *OSMboxAccept (OS_EVENT *pevent) {void *pmsg;/*指向消息的指針*/ OS_ENTER_CRITICAL();/*進(jìn)入中斷*/pmsg = pevent->OSEventPtr;pevent->OSEventPtr = (void *)0;/*清空郵箱*/OS_EXIT_CRITICAL();/*退出中斷*/return (pmsg); /* 返回收到的消息或null*/

    建立并初始化一個(gè)郵箱OS_EVENT ?*OSMboxCreate (void *pmsg):(部分代碼)

    /*$PAGE*/ /* ********************************************************************************************************* * CREATE A MESSAGE MAILBOX * 建立并初始化一個(gè)郵箱 * Description: This function creates a message mailbox if free event control blocks are available. *描述:如果有空閑的事件控制塊,創(chuàng)建一個(gè)郵箱。 * Arguments : pmsg is a pointer to a message that you wish to deposit in the mailbox. If * you set this value to the NULL pointer (i.e. (void *)0) then the mailbox * will be considered empty. *參數(shù): --pmsg:指向你將要存儲(chǔ)在郵箱的消息的指針。如果該指針為空,默認(rèn)郵箱為空。 * Returns : != (OS_EVENT *)0 is a pointer to the event control clock (OS_EVENT) associated with the * created mailbox * == (OS_EVENT *)0 if no event control blocks were available 返回值:!= (OS_EVENT *)0:指向與創(chuàng)建的郵箱關(guān)聯(lián)的事件控制塊的指針。== (OS_EVENT *)0:沒(méi)有可用的事件控制塊。 ********************************************************************************************************* */OS_EVENT *OSMboxCreate (void *pmsg) {OS_EVENT *pevent; OS_ENTER_CRITICAL();/*進(jìn)入中斷*/pevent = OSEventFreeList;/*得到空閑的事件控制塊 */if (OSEventFreeList != (OS_EVENT *)0) /*如果有空閑的事件控制塊*/{ OSEventFreeList = (OS_EVENT *)OSEventFreeList->OSEventPtr;/*更新空閑列表*/}OS_EXIT_CRITICAL();/*退出中斷*/if (pevent != (OS_EVENT *)0)/*如果得到了空閑的事件控制塊*/{pevent->OSEventType = OS_EVENT_TYPE_MBOX;/*將OS_EVENT結(jié)構(gòu)中的事件類型設(shè)置為郵箱事件*/pevent->OSEventCnt = 0u;pevent->OSEventPtr = pmsg; /*將消息存儲(chǔ)在事件控制塊中 */#if OS_EVENT_NAME_EN > 0upevent->OSEventName = (INT8U *)(void *)"?";#endifOS_EventWaitListInit(pevent);/*初始化事件等待列表*/}return (pevent);/* 返回指向事件控制塊的指針*/

    刪除郵箱OS_EVENT ?*OSMboxDel (OS_EVENT ?*pevent,INT8U opt,INT8U ?*perr):

    /*$PAGE*/ /*2018/2/21 ********************************************************************************************************* * DELETE A MAIBOX * 刪除郵箱 * Description: This function deletes a mailbox and readies all tasks pending on the mailbox. *描述:該函數(shù)是刪除郵箱并將所有在該郵箱掛起的任務(wù)設(shè)置為就緒態(tài) * Arguments : pevent is a pointer to the event control block associated with the desired mailbox. *參數(shù): --pevent:指向郵箱消息對(duì)應(yīng)的事件控制塊的指針 * opt determines delete options as follows: * opt == OS_DEL_NO_PEND Delete the mailbox ONLY if no task pending * opt == OS_DEL_ALWAYS Deletes the mailbox even if tasks are waiting. * In this case, all the tasks pending will be readied. * --opt:刪除方式選擇:opt == OS_DEL_NO_PEND:當(dāng)沒(méi)有任務(wù)掛起時(shí)才能刪除;opt == OS_DEL_ALWAYS:即使有任務(wù)等待也將郵箱刪除。這種情況下,所有等待的任務(wù)都轉(zhuǎn)為就緒態(tài)。 * perr is a pointer to an error code that can contain one of the following values: * OS_ERR_NONE The call was successful and the mailbox was deleted * OS_ERR_DEL_ISR If you attempted to delete the mailbox from an ISR * OS_ERR_INVALID_OPT An invalid option was specified * OS_ERR_TASK_WAITING One or more tasks were waiting on the mailbox * OS_ERR_EVENT_TYPE If you didn't pass a pointer to a mailbox * OS_ERR_PEVENT_NULL If 'pevent' is a NULL pointer. * --perr:指向錯(cuò)誤碼的指針:OS_ERR_NONE:成功調(diào)用,郵箱被刪除;OS_ERR_DEL_ISR:從中斷服務(wù)子程序中刪除郵箱;OS_ERR_INVALID_OPT:無(wú)效的選擇方式;OS_ERR_TASK_WAITING:一個(gè)或多個(gè)任務(wù)正在等待;OS_ERR_EVENT_TYPE:沒(méi)有指向郵箱的指針;OS_ERR_PEVENT_NULL:pevent為空指針。 * Returns : pevent upon error * (OS_EVENT *)0 if the mailbox was successfully deleted. *返回值:如果成功刪除,返回值為空。如果沒(méi)有成功,返回pevent。 * Note(s) : 1) This function must be used with care. Tasks that would normally expect the presence of * the mailbox MUST check the return code of OSMboxPend(). * 2) OSMboxAccept() callers will not know that the intended mailbox has been deleted! * 3) This call can potentially disable interrupts for a long time. The interrupt disable * time is directly proportional to the number of tasks waiting on the mailbox. * 4) Because ALL tasks pending on the mailbox will be readied, you MUST be careful in * applications where the mailbox is used for mutual exclusion because the resource(s) * will no longer be guarded by the mailbox.注釋:1)該功能需要小心使用。等待郵箱消息的任務(wù)必須先檢查OSMboxPend()函數(shù)的返回值。2)調(diào)用OSMboxAccept()的任務(wù)無(wú)法知道要郵箱是否已經(jīng)被刪除。3)該函數(shù)調(diào)用會(huì)中斷很長(zhǎng)時(shí)間,時(shí)間與等待郵箱的任務(wù)的數(shù)量相關(guān)。4)因?yàn)樗袙炱鸬娜蝿?wù)都會(huì)被轉(zhuǎn)為就緒態(tài),所以如果郵箱中的消息是互斥型信號(hào)量就需要特別注意了,因?yàn)榇藭r(shí)資源是開放的。 ********************************************************************************************************* */#if OS_MBOX_DEL_EN > 0u OS_EVENT *OSMboxDel (OS_EVENT *pevent,INT8U opt,INT8U *perr) {BOOLEAN tasks_waiting;/*檢測(cè)是否有正在等待的任務(wù)*/OS_EVENT *pevent_return;/*返回指針*/#if OS_CRITICAL_METHOD == 3u OS_CPU_SR cpu_sr = 0u;#endif#ifdef OS_SAFETY_CRITICALif (perr == (INT8U *)0) {OS_SAFETY_CRITICAL_EXCEPTION();}#endif#if OS_ARG_CHK_EN > 0uif (pevent == (OS_EVENT *)0) { *perr = OS_ERR_PEVENT_NULL;return (pevent);}#endifif (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { *perr = OS_ERR_EVENT_TYPE;return (pevent);}if (OSIntNesting > 0u) { *perr = OS_ERR_DEL_ISR; return (pevent);}OS_ENTER_CRITICAL();/*進(jìn)入中斷*/if (pevent->OSEventGrp != 0u)/*檢測(cè)是否有任務(wù)正在等待*/{ tasks_waiting = OS_TRUE; /*有任務(wù)等待,將等待標(biāo)志設(shè)置為true*/} else{tasks_waiting = OS_FALSE; /* 沒(méi)有任務(wù)等待,將等待標(biāo)志設(shè)置為false*/}switch (opt) /*選擇刪除方式并進(jìn)行相應(yīng)操作*/{case OS_DEL_NO_PEND: /* 無(wú)掛起才刪除*/if (tasks_waiting == OS_FALSE) /*沒(méi)有任務(wù)等待*/{#if OS_EVENT_NAME_EN > 0upevent->OSEventName = (INT8U *)(void *)"?";/*名字設(shè)為未命名*/#endifpevent->OSEventType = OS_EVENT_TYPE_UNUSED;/*事件類型設(shè)置為未使用類型*/pevent->OSEventPtr = OSEventFreeList; /*將事件控制塊返還給空閑列表*/pevent->OSEventCnt = 0u;OSEventFreeList = pevent;/*更新空閑列表 */OS_EXIT_CRITICAL();/*退出中斷*/*perr = OS_ERR_NONE;pevent_return = (OS_EVENT *)0; /*返回值設(shè)為空,郵箱已經(jīng)被刪除*/}else/*有任務(wù)正在等待*/{OS_EXIT_CRITICAL();/*退出中斷*/*perr = OS_ERR_TASK_WAITING;/*設(shè)置錯(cuò)誤類型*/pevent_return = pevent;/*將事件控制塊指針?lè)祷?/}break;case OS_DEL_ALWAYS: /* 無(wú)論怎樣都刪除郵箱*/while (pevent->OSEventGrp != 0u) { (void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MBOX, OS_STAT_PEND_OK);/*將所有的任務(wù)都設(shè)置為就緒態(tài)*/}#if OS_EVENT_NAME_EN > 0upevent->OSEventName = (INT8U *)(void *)"?";#endifpevent->OSEventType = OS_EVENT_TYPE_UNUSED;/*事件類型設(shè)置為未使用類型*/pevent->OSEventPtr = OSEventFreeList;/* 將事件控制塊返回給空閑列表 */pevent->OSEventCnt = 0u;OSEventFreeList = pevent;/* 更新空閑列表 */OS_EXIT_CRITICAL();/*退出中斷*/if (tasks_waiting == OS_TRUE) /*有任務(wù)正在等待*/{ OS_Sched(); /* 找到就緒任務(wù)中優(yōu)先級(jí)最高的任務(wù)進(jìn)行調(diào)度*/}*perr = OS_ERR_NONE;pevent_return = (OS_EVENT *)0;/*郵箱被刪除,返回空指針*/break;default:/*兩種刪除情況都不是*/OS_EXIT_CRITICAL();/*退出中斷*/*perr = OS_ERR_INVALID_OPT;/*設(shè)置錯(cuò)誤類型*/pevent_return = pevent;/*將事件控制塊指針?lè)祷?/break;}return (pevent_return); } #endif

    等待消息進(jìn)入郵箱void ?*OSMboxPend (OS_EVENT ?*pevent,INT32U ?timeout,INT8U ?*perr)

    /*$PAGE*/ /*2018/2/21 ********************************************************************************************************* * PEND ON MAILBOX FOR A MESSAGE * 等待消息進(jìn)入郵箱 * Description: This function waits for a message to be sent to a mailbox *描述:該功能用來(lái)等地啊消息進(jìn)入郵箱。 * Arguments : pevent is a pointer to the event control block associated with the desired mailbox *參數(shù): --pevent:指向事件控制塊的指針 * timeout is an optional timeout period (in clock ticks). If non-zero, your task will * wait for a message to arrive at the mailbox up to the amount of time * specified by this argument. If you specify 0, however, your task will wait * forever at the specified mailbox or, until a message arrives. * --timeout:時(shí)間片。如果不為0,任務(wù)將等待消息到來(lái),直到時(shí)間到達(dá)設(shè)定的值。如果設(shè)置為0,任務(wù)將無(wú)限等待,直到有消息到來(lái)。 * perr is a pointer to where an error message will be deposited. Possible error * messages are: * OS_ERR_NONE The call was successful and your task received a * message. * OS_ERR_TIMEOUT A message was not received within the specified 'timeout'. * OS_ERR_PEND_ABORT The wait on the mailbox was aborted. * OS_ERR_EVENT_TYPE Invalid event type * OS_ERR_PEND_ISR If you called this function from an ISR and the result * would lead to a suspension. * OS_ERR_PEVENT_NULL If 'pevent' is a NULL pointer * OS_ERR_PEND_LOCKED If you called this function when the scheduler is locked * --perr:指向錯(cuò)誤碼的指針:OS_ERR_NONE:成功調(diào)用,任務(wù)收到消息;OS_ERR_TIMEOUT:在規(guī)定時(shí)間內(nèi)沒(méi)有收到消息(超時(shí)錯(cuò));OS_ERR_PEND_ABORT:取消了正在等待的任務(wù);OS_ERR_EVENT_TYPE:無(wú)效的事件類型;OS_ERR_PEND_ISR:從中斷服務(wù)子程序中調(diào)用該函數(shù);OS_ERR_PEVENT_NULL:pevent為空指針;OS_ERR_PEND_LOCKED:調(diào)度器上鎖時(shí)進(jìn)行調(diào)用。 * Returns : != (void *)0 is a pointer to the message received * == (void *)0 if no message was received or, * if 'pevent' is a NULL pointer or, * if you didn't pass the proper pointer to the event control block.返回值:!= (void *)0:指向收到的消息的指針;== (void *)0:沒(méi)有收到消息或者pevnet為空指針或者沒(méi)有指向事件控制塊的指針時(shí)返回空。 ********************************************************************************************************* */ /*$PAGE*/ void *OSMboxPend (OS_EVENT *pevent,INT32U timeout,INT8U *perr) {void *pmsg;/*指向消息的指針*/ #if OS_CRITICAL_METHOD == 3u OS_CPU_SR cpu_sr = 0u; #endif#ifdef OS_SAFETY_CRITICALif (perr == (INT8U *)0) {OS_SAFETY_CRITICAL_EXCEPTION();} #endif#if OS_ARG_CHK_EN > 0uif (pevent == (OS_EVENT *)0) { *perr = OS_ERR_PEVENT_NULL;return ((void *)0);} #endifif (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { *perr = OS_ERR_EVENT_TYPE;return ((void *)0);}if (OSIntNesting > 0u) { *perr = OS_ERR_PEND_ISR; return ((void *)0);}if (OSLockNesting > 0u) { *perr = OS_ERR_PEND_LOCKED; return ((void *)0);}OS_ENTER_CRITICAL();/*進(jìn)入中斷*/pmsg = pevent->OSEventPtr;/*指向消息*/if (pmsg != (void *)0)/*如果有消息存在*/{ pevent->OSEventPtr = (void *)0; /* 清除郵箱 */OS_EXIT_CRITICAL();/*退出中斷*/*perr = OS_ERR_NONE;return (pmsg); /*返回消息*/}/*如果沒(méi)有消息*/OSTCBCur->OSTCBStat |= OS_STAT_MBOX; /*將任務(wù)掛起*/OSTCBCur->OSTCBStatPend = OS_STAT_PEND_OK;OSTCBCur->OSTCBDly = timeout;/*最長(zhǎng)等待時(shí)間=timeout,遞減式*/OS_EventTaskWait(pevent); /* 將任務(wù)掛起,直到有消息到來(lái)或者時(shí)間到*/OS_EXIT_CRITICAL();/*退出中斷*/OS_Sched(); /*選擇優(yōu)先級(jí)高的任務(wù)進(jìn)行調(diào)度*/OS_ENTER_CRITICAL();/*進(jìn)入中斷*/switch (OSTCBCur->OSTCBStatPend) /*檢查掛起狀態(tài)原因,是超時(shí)還是任務(wù)被取消*/{ case OS_STAT_PEND_OK:/*無(wú)超時(shí),也沒(méi)被取消,正常的等待消息*/pmsg = OSTCBCur->OSTCBMsg;/*返回消息*/*perr = OS_ERR_NONE;break;case OS_STAT_PEND_ABORT:/*被取消*/pmsg = (void *)0;/*返回空*/*perr = OS_ERR_PEND_ABORT; break;case OS_STAT_PEND_TO:/*超時(shí)*/default:/*其他情況*/OS_EventTaskRemove(OSTCBCur, pevent);/*將任務(wù)移除*/pmsg = (void *)0;/*返回空*/*perr = OS_ERR_TIMEOUT;break;}OSTCBCur->OSTCBStat = OS_STAT_RDY; /* 將當(dāng)前任務(wù)狀態(tài)設(shè)置為就緒態(tài)*/OSTCBCur->OSTCBStatPend = OS_STAT_PEND_OK; /*清除掛起狀態(tài)*/OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0; /*清除事件指針*/#if (OS_EVENT_MULTI_EN > 0u)OSTCBCur->OSTCBEventMultiPtr = (OS_EVENT **)0;#endifOSTCBCur->OSTCBMsg = (void *)0;/*清除收到的消息*/OS_EXIT_CRITICAL();/*退出中斷*/return (pmsg);/*返回收到的消息*/ }

    取消等待消息的任務(wù)OSMboxPendAbort (OS_EVENT ?*pevent,INT8U ? opt,INT8U ?*perr):

    /*$PAGE*/ /*2018/2/21 ********************************************************************************************************* * ABORT WAITING ON A MESSAGE MAILBOX * 取消等待消息的任務(wù) * Description: This function aborts & readies any tasks currently waiting on a mailbox. This function * should be used to fault-abort the wait on the mailbox, rather than to normally signal * the mailbox via OSMboxPost() or OSMboxPostOpt(). *描述:該函數(shù)將正在等待郵箱消息的任務(wù)取消。該函數(shù)不需要通過(guò)OSMboxPost()或者OSMboxPostOpt()函數(shù)來(lái)通知郵箱進(jìn)行刪除, 是默認(rèn)取消。 * Arguments : pevent is a pointer to the event control block associated with the desired mailbox. *參數(shù):--pevent:指向事件控制塊的指針。 * opt determines the type of ABORT performed: * OS_PEND_OPT_NONE ABORT wait for a single task (HPT) waiting on the * mailbox * OS_PEND_OPT_BROADCAST ABORT wait for ALL tasks that are waiting on the * mailbox * --opt:取消方式:OS_PEND_OPT_NONE:取消一個(gè);OS_PEND_OPT_BROADCAST:全部取消; * perr is a pointer to where an error message will be deposited. Possible error * messages are: * OS_ERR_NONE No tasks were waiting on the mailbox. * OS_ERR_PEND_ABORT At least one task waiting on the mailbox was readied * and informed of the aborted wait; check return value * for the number of tasks whose wait on the mailbox * was aborted. * OS_ERR_EVENT_TYPE If you didn't pass a pointer to a mailbox. * OS_ERR_PEVENT_NULL If 'pevent' is a NULL pointer. * --perr:錯(cuò)誤碼指針:OS_ERR_NONE:沒(méi)有任務(wù)在等待;OS_ERR_PEND_ABORT:至少一個(gè)被通知取消等待的任務(wù)是就緒態(tài)。OS_ERR_EVENT_TYPE:沒(méi)有指向郵箱的指針;OS_ERR_PEVENT_NULL:pevent為空指針。 * Returns : == 0 if no tasks were waiting on the mailbox, or upon error. * > 0 if one or more tasks waiting on the mailbox are now readied and informed.返回值: == 0:沒(méi)有任務(wù)在等待,返回空;> 0:一個(gè)或者多個(gè)正在等待郵箱并且已經(jīng)被通知取消的任務(wù)是就緒態(tài)。 ********************************************************************************************************* */#if OS_MBOX_PEND_ABORT_EN > 0u INT8U OSMboxPendAbort (OS_EVENT *pevent,INT8U opt,INT8U *perr) {INT8U nbr_tasks;#if OS_CRITICAL_METHOD == 3u OS_CPU_SR cpu_sr = 0u;#endif#ifdef OS_SAFETY_CRITICALif (perr == (INT8U *)0) {OS_SAFETY_CRITICAL_EXCEPTION();}#endif#if OS_ARG_CHK_EN > 0uif (pevent == (OS_EVENT *)0) { *perr = OS_ERR_PEVENT_NULL;return (0u);}#endifif (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { *perr = OS_ERR_EVENT_TYPE;return (0u);}OS_ENTER_CRITICAL();/*進(jìn)入中斷*/if (pevent->OSEventGrp != 0u) /*有任務(wù)正在等待郵箱*/{ nbr_tasks = 0u;switch (opt)/*選擇取消的方式并進(jìn)行相關(guān)操作*/{case OS_PEND_OPT_BROADCAST:/*所有任務(wù)都清除*/while (pevent->OSEventGrp != 0u){ (void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MBOX, OS_STAT_PEND_ABORT);/*所有任務(wù)設(shè)為就緒態(tài)*/nbr_tasks++;}break;case OS_PEND_OPT_NONE:/*只清除一個(gè)*/default: /*其他情況 */(void)OS_EventTaskRdy(pevent, (void *)0, OS_STAT_MBOX, OS_STAT_PEND_ABORT);/*將最高優(yōu)先級(jí)的任務(wù)設(shè)為就緒態(tài)*/nbr_tasks++;break;}OS_EXIT_CRITICAL();/*退出中斷*/OS_Sched(); /*對(duì)最高優(yōu)先級(jí)任務(wù)進(jìn)行任務(wù)調(diào)度*/*perr = OS_ERR_PEND_ABORT;return (nbr_tasks);}OS_EXIT_CRITICAL();/*退出中斷*/*perr = OS_ERR_NONE;return (0u);/*沒(méi)有任務(wù)等待返回空 */ } #endif

    通過(guò)消息郵箱向任務(wù)發(fā)送消息OSMboxPost (OS_EVENT ?*pevent,void ?*pmsg):

    /*$PAGE*/ /*2018/2/21 ********************************************************************************************************* * POST MESSAGE TO A MAILBOX * 通過(guò)消息郵箱向任務(wù)發(fā)送消息 * Description: This function sends a message to a mailbox *描述:該功能是將消息發(fā)送給郵箱。 * Arguments : pevent is a pointer to the event control block associated with the desired mailbox *參數(shù): --pevent:指向事件控制塊的指針。 * pmsg is a pointer to the message to send. You MUST NOT send a NULL pointer. * --pmsg:指向要發(fā)送的消息的指針,不可以為空 * Returns : OS_ERR_NONE The call was successful and the message was sent * OS_ERR_MBOX_FULL If the mailbox already contains a message. You can can only send one * message at a time and thus, the message MUST be consumed before you * are allowed to send another one. * OS_ERR_EVENT_TYPE If you are attempting to post to a non mailbox. * OS_ERR_PEVENT_NULL If 'pevent' is a NULL pointer * OS_ERR_POST_NULL_PTR If you are attempting to post a NULL pointer *返回值:OS_ERR_NONE:成功調(diào)用,消息被發(fā)出。OS_ERR_MBOX_FULL:郵箱已經(jīng)包含了消息,一次只能給郵箱放一個(gè)消息。在郵箱消息沒(méi)有發(fā)送出去前不能再往里面放消息了。OS_ERR_EVENT_TYPE:不是給郵箱發(fā)消息;OS_ERR_PEVENT_NULL:pevent為空指針OS_ERR_POST_NULL_PTR:發(fā)送的是個(gè)空消息(空指針) * Note(s) : 1) HPT means Highest Priority Task 注釋:1)HPT表示最高優(yōu)先級(jí)任務(wù)。 ********************************************************************************************************* */#if OS_MBOX_POST_EN > 0u INT8U OSMboxPost (OS_EVENT *pevent,void *pmsg) {#if OS_CRITICAL_METHOD == 3u OS_CPU_SR cpu_sr = 0u;#endif#if OS_ARG_CHK_EN > 0uif (pevent == (OS_EVENT *)0) { return (OS_ERR_PEVENT_NULL);}if (pmsg == (void *)0) { return (OS_ERR_POST_NULL_PTR);}#endifif (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { return (OS_ERR_EVENT_TYPE);}OS_ENTER_CRITICAL();/*進(jìn)入中斷*/if (pevent->OSEventGrp != 0u) /*如果有任務(wù)正在等郵箱*/{ (void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK);/*將所有任務(wù)設(shè)置為就緒態(tài)*/OS_EXIT_CRITICAL();/*退出中斷*/OS_Sched(); /*找到最高優(yōu)先級(jí)任務(wù)進(jìn)行調(diào)度*/return (OS_ERR_NONE);}if (pevent->OSEventPtr != (void *)0) /*郵箱不為空,里面已經(jīng)有消息存在*/{ OS_EXIT_CRITICAL();/*退出中斷*/return (OS_ERR_MBOX_FULL);}pevent->OSEventPtr = pmsg;/* 將消息放在郵箱中 */OS_EXIT_CRITICAL();/*退出中斷*/return (OS_ERR_NONE); } #endif

    通過(guò)郵箱向(多)任務(wù)發(fā)送消息OSMboxPostOpt (OS_EVENT ?*pevent,void *pmsg,INT8U opt):

    /*$PAGE*/ /*2018/2/21 ********************************************************************************************************* * POST MESSAGE TO A MAILBOX * ???????????????? 通過(guò)郵箱向(多)任務(wù)發(fā)送消息 * Description: This function sends a message to a mailbox *描述:該功能是通過(guò)郵箱向多任務(wù)發(fā)送消息。 * Arguments : pevent is a pointer to the event control block associated with the desired mailbox *參數(shù): --pevent:指向事件控制塊的指針。 * pmsg is a pointer to the message to send. You MUST NOT send a NULL pointer. * --pmsg:指向要發(fā)送的消息的指針,不可以為空。 * opt determines the type of POST performed: * OS_POST_OPT_NONE POST to a single waiting task * (Identical to OSMboxPost()) * OS_POST_OPT_BROADCAST POST to ALL tasks that are waiting on the mailbox * * OS_POST_OPT_NO_SCHED Indicates that the scheduler will NOT be invoked * --opt:發(fā)送類型:OS_POST_OPT_NONE:只給一個(gè)任務(wù)發(fā)送;OS_POST_OPT_BROADCAST:給所有等待消息的任務(wù)都發(fā)送OS_POST_OPT_NO_SCHED:調(diào)度程序不會(huì)被調(diào)用 * Returns : OS_ERR_NONE The call was successful and the message was sent * OS_ERR_MBOX_FULL If the mailbox already contains a message. You can can only send one * message at a time and thus, the message MUST be consumed before you * are allowed to send another one. * OS_ERR_EVENT_TYPE If you are attempting to post to a non mailbox. * OS_ERR_PEVENT_NULL If 'pevent' is a NULL pointer * OS_ERR_POST_NULL_PTR If you are attempting to post a NULL pointer *返回值:OS_ERR_NONE:調(diào)用成功,消息被發(fā)出OS_ERR_MBOX_FULL:郵箱中已經(jīng)有消息存在,OS_ERR_EVENT_TYPE:發(fā)送對(duì)象不是郵箱。OS_ERR_PEVENT_NULL:pevent為空指針OS_ERR_POST_NULL_PTR:消息為空。 * Note(s) : 1) HPT means Highest Priority Task *注釋:1)HPT是最高優(yōu)先級(jí)任務(wù)的意思 * Warning : Interrupts can be disabled for a long time if you do a 'broadcast'. In fact, the * interrupt disable time is proportional to the number of tasks waiting on the mailbox. 警告:如果選擇了給全部等待任務(wù)發(fā)消息,會(huì)中斷很長(zhǎng)時(shí)間。中斷事件與等待的任務(wù)數(shù)量有關(guān)系。 ********************************************************************************************************* */#if OS_MBOX_POST_OPT_EN > 0u INT8U OSMboxPostOpt (OS_EVENT *pevent,void *pmsg,INT8U opt) {#if OS_CRITICAL_METHOD == 3u OS_CPU_SR cpu_sr = 0u;#endif#if OS_ARG_CHK_EN > 0uif (pevent == (OS_EVENT *)0) { return (OS_ERR_PEVENT_NULL);}if (pmsg == (void *)0) { return (OS_ERR_POST_NULL_PTR);}#endifif (pevent->OSEventType != OS_EVENT_TYPE_MBOX) {return (OS_ERR_EVENT_TYPE);}OS_ENTER_CRITICAL();/*進(jìn)入中斷*/if (pevent->OSEventGrp != 0u)/*看是否有任務(wù)正在等待*/{ if ((opt & OS_POST_OPT_BROADCAST) != 0x00u) /*給所有等待任務(wù)發(fā)消息*/{ while (pevent->OSEventGrp != 0u) { (void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK);}} else/*給一個(gè)等待任務(wù)發(fā)消息*/{ (void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK);}OS_EXIT_CRITICAL();/*退出中斷*/if ((opt & OS_POST_OPT_NO_SCHED) == 0u) /*看是否需要喚醒調(diào)度程序*/{ OS_Sched(); /*選擇優(yōu)先級(jí)最高的任務(wù)進(jìn)行調(diào)度*/}return (OS_ERR_NONE);}/*沒(méi)有任務(wù)正在等待*/if (pevent->OSEventPtr != (void *)0)/*郵箱中有消息存在*/{ OS_EXIT_CRITICAL();/*退出中斷*/return (OS_ERR_MBOX_FULL);}pevent->OSEventPtr = pmsg;/*將消息放在郵箱中*/OS_EXIT_CRITICAL();/*退出中斷*/return (OS_ERR_NONE); } #endif

    取得消息郵箱的信息?OSMboxQuery (OS_EVENT *pevent,OS_MBOX_DATA ?*p_mbox_data):

    /*$PAGE*/ /*2018/2/21 ********************************************************************************************************* * QUERY A MESSAGE MAILBOX * 取得消息郵箱的信息 * Description: This function obtains information about a message mailbox. *描述:該函數(shù)是獲得郵箱中的消息 * Arguments : pevent is a pointer to the event control block associated with the desired mailbox *參數(shù): --pevent:指向事件控制塊的指針 * p_mbox_data is a pointer to a structure that will contain information about the message * mailbox. * --p_mbox_data:指向p_mbox_data結(jié)構(gòu)體的指針。 * Returns : OS_ERR_NONE The call was successful and the message was sent * OS_ERR_EVENT_TYPE If you are attempting to obtain data from a non mailbox. * OS_ERR_PEVENT_NULL If 'pevent' is a NULL pointer * OS_ERR_PDATA_NULL If 'p_mbox_data' is a NULL pointer 返回值:OS_ERR_NONE:調(diào)用成功,消息被發(fā)出;OS_ERR_EVENT_TYPE:不是從郵箱中獲得消息;OS_ERR_PEVENT_NULL:pevent為空指針;OS_ERR_PDATA_NULL:p_mbox_data為空指針。 ********************************************************************************************************* */#if OS_MBOX_QUERY_EN > 0u INT8U OSMboxQuery (OS_EVENT *pevent,OS_MBOX_DATA *p_mbox_data) {INT8U i;OS_PRIO *psrc;OS_PRIO *pdest;#if OS_CRITICAL_METHOD == 3u OS_CPU_SR cpu_sr = 0u;#endif#if OS_ARG_CHK_EN > 0uif (pevent == (OS_EVENT *)0) { return (OS_ERR_PEVENT_NULL);}if (p_mbox_data == (OS_MBOX_DATA *)0) { return (OS_ERR_PDATA_NULL);}#endifif (pevent->OSEventType != OS_EVENT_TYPE_MBOX) { return (OS_ERR_EVENT_TYPE);}OS_ENTER_CRITICAL();/*進(jìn)入中斷*//*將事件(郵箱)結(jié)構(gòu)中的等待任務(wù)列表復(fù)制到pdata數(shù)據(jù)結(jié)構(gòu)中*/p_mbox_data->OSEventGrp = pevent->OSEventGrp;/*等待事件的任務(wù)組中的內(nèi)容傳送到狀態(tài)數(shù)據(jù)結(jié)構(gòu)中*/psrc = &pevent->OSEventTbl[0];/*保存pevent->OSEventTbl[0]對(duì)應(yīng)的地址,源*/pdest = &p_mbox_data->OSEventTbl[0];/*保存pdata->OSEventTbl[0]對(duì)應(yīng)的地址,目的*/for (i = 0u; i < OS_EVENT_TBL_SIZE; i++) {*pdest++ = *psrc++;/*地址指針下移一個(gè)類型地址,獲取消息郵箱的值*/}p_mbox_data->OSMsg = pevent->OSEventPtr;/*將郵箱中的當(dāng)前消息從事件數(shù)據(jù)結(jié)構(gòu)復(fù)制到OS_MBOX_DATA數(shù)據(jù)結(jié)構(gòu) */OS_EXIT_CRITICAL();/*退出中斷*/return (OS_ERR_NONE); } #endif /* OS_MBOX_QUERY_EN */ #endif /* OS_MBOX_EN */

    文章到這里就結(jié)束了。

    uc/os-ii中的os_mbox.c文件全部讀完。重點(diǎn)是了解郵箱機(jī)制,還要清楚相關(guān)的結(jié)構(gòu)體。看郵箱有沒(méi)有消息什么的都是通過(guò)事件控制塊中的OSEventGrp等判斷的。具體看代碼即可。



    總結(jié)

    以上是生活随笔為你收集整理的os_mbox.c(全)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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

    五月激情六月丁香 | 久久免费99 | 国产福利中文字幕 | 日韩色视频在线观看 | 黄色免费网战 | 网站在线观看你们懂的 | 国产精品久久久久免费 | 激情五月婷婷综合 | 99久热在线精品视频观看 | 国产精品成人国产乱一区 | 亚洲另类交 | 国产色在线观看 | av电影在线观看完整版一区二区 | 日韩影视精品 | 久久久久伊人 | 久久天天躁狠狠躁亚洲综合公司 | a级一a一级在线观看 | 四虎永久免费网站 | 午夜久久影视 | 九九免费精品视频在线观看 | 91免费在线| 99久久精品午夜一区二区小说 | av色一区| 日本精品xxxx | 在线三级播放 | 久久综合精品一区 | 国产伦理久久精品久久久久_ | 国产三级国产精品国产专区50 | 精品国产乱码久久久久久浪潮 | 久久精品中文字幕少妇 | 国产精品 日韩精品 | 97超级碰碰碰视频在线观看 | 久久久久成人精品亚洲国产 | 久草视频在线免费 | 久久午夜精品视频 | 国产黄视频在线观看 | 最近中文字幕免费av | 日韩视频在线播放 | 婷婷亚洲五月色综合 | 成 人 黄 色 视频免费播放 | 国产免费观看久久黄 | 天天爱综合 | www夜夜| 最近中文字幕高清字幕免费mv | 天天色 天天 | 日本中文字幕网站 | 99精品观看 | 黄色日批网站 | 国产精品嫩草影院9 | 亚洲天堂网在线视频观看 | 香蕉影院在线播放 | 91天堂影院 | 99久久99久久免费精品蜜臀 | 99中文字幕在线观看 | 国产亚洲精品电影 | 美女视频黄频 | 激情五月色播五月 | 亚洲国产精品资源 | 国产中文字幕视频在线观看 | 色欧美日韩 | 探花视频网站 | 又黄又刺激又爽的视频 | 国产又粗又猛又爽又黄的视频先 | 久保带人 | 特级a老妇做爰全过程 | 国产精品美女久久久久aⅴ 干干夜夜 | 四虎免费在线观看视频 | 99福利片 | 欧美一级免费在线 | 精品国产一区二区三区在线 | 91超级碰| 国产成人三级三级三级97 | 日韩理论电影在线观看 | 国产97色在线 | 日韩一级成人av | 久久精品国产99国产 | 成人9ⅰ免费影视网站 | 日韩高清免费在线 | 91中文字幕在线 | 韩国av电影在线观看 | 国产精品视频地址 | 在线观看av中文字幕 | 亚洲六月丁香色婷婷综合久久 | 激情五月播播久久久精品 | 国产欧美精品一区二区三区 | 东方av在线免费观看 | 欧美韩日在线 | 久久99精品久久久久久清纯直播 | av夜夜操 | 香蕉久久久久久久 | 欧美老人xxxx18| 伊人狠狠色丁香婷婷综合 | 麻豆视频在线免费观看 | 色综合天天色 | 日本精品免费看 | 日韩午夜精品 | 久久xxxx | 婷婷丁香五 | 在线黄av| 免费精品在线 | 精品影院一区二区久久久 | 国产成人99久久亚洲综合精品 | 天天五月天色 | 免费在线中文字幕 | 毛片永久新网址首页 | 91插插插免费视频 | 精品视频免费在线 | 91超碰免费在线 | 五月天视频网站 | .国产精品成人自产拍在线观看6 | 欧洲亚洲精品 | 国产精品12| 亚洲一区二区麻豆 | 国产欧美日韩精品一区二区免费 | 久久香蕉国产 | 日日爱影视 | 日韩综合视频在线观看 | 夜夜爽天天爽 | 日韩在线观看三区 | 天天透天天插 | 色网av| 天堂av免费观看 | 国产精品久久久久久久久久ktv | 欧美日韩视频在线观看一区二区 | 久久久久成人精品亚洲国产 | 日韩区欧美久久久无人区 | 99中文在线 | 深爱五月网 | 久草在线官网 | 在线综合 亚洲 欧美在线视频 | 天天色播 | 亚洲国产成人精品在线 | 欧美先锋影音 | 韩国一区在线 | 黄色一级大片在线观看 | 日韩网站免费观看 | 色婷婷综合激情 | 成人av在线播放网站 | 国产乱码精品一区二区蜜臀 | 91大神dom调教在线观看 | 夜添久久精品亚洲国产精品 | 久久99精品久久久久久秒播蜜臀 | 一级黄色大片在线观看 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 免费在线电影网址大全 | 国内精品在线观看视频 | 国产精品99久久久久久有的能看 | 免费一级片在线观看 | 亚洲另类视频在线 | 特级黄色片免费看 | 麻豆国产视频下载 | 久久刺激视频 | 成人一级视频在线观看 | 中文字幕视频在线播放 | 久久www免费视频 | 一级特黄av | 久久精品亚洲综合专区 | 日韩欧美一区二区在线观看 | 精品国产乱子伦一区二区 | 国产亚洲在线 | 日韩综合第一页 | 国产成人精品一区二区在线 | 久久精彩免费视频 | 毛片.com| 五月婷影院 | 人人爽人人爽人人片 | 欧美另类老妇 | zzijzzij亚洲日本少妇熟睡 | 日韩videos| 久久精品人 | 国产精品免费在线播放 | 欧美精品做受xxx性少妇 | 久99久中文字幕在线 | 欧美日韩一区二区在线 | 国产一区二区免费看 | 视频91 | www.成人精品 | 五月婷婷六月丁香激情 | 亚洲精品国产精品国自产观看浪潮 | 欧美日韩免费一区二区三区 | 成片免费观看视频 | 在线精品视频免费观看 | 亚洲国产999 | 国内精品久久久久影院优 | 亚洲在线国产 | 亚洲成人第一区 | 国产精品大片免费观看 | 日韩在线观看中文 | 在线视频你懂 | 中文字幕在线播放第一页 | 国产精品系列在线播放 | 日本夜夜草视频网站 | 国产二区电影 | 天天干天天拍 | 91在线一区二区 | 欧美日本不卡 | 日韩中文字幕国产 | 色吊丝在线永久观看最新版本 | 天天操天天舔天天爽 | 久久久麻豆精品一区二区 | 亚洲成a人片77777潘金莲 | 成人欧美一区二区三区在线观看 | 天天操天天干天天插 | 81国产精品久久久久久久久久 | 一区精品在线 | 天堂av在线 | 精精国产xxxx视频在线播放 | 日本黄色免费在线 | 日韩成人看片 | 欧美性生交大片免网 | www.天堂av | 久久乐九色婷婷综合色狠狠182 | 日韩特级黄色片 | 色婷婷啪啪免费在线电影观看 | 99久精品 | 色姑娘综合天天 | 中文字幕在线视频一区二区三区 | 日韩一级黄色av | 日批网站在线观看 | 日韩有码在线播放 | 久草视频国产 | 国产精品精 | 久久精品国亚洲 | 一区二区欧美激情 | 免费观看国产视频 | 中文字幕第一页av | 在线www色 | 啪啪av在线 | 又黄又刺激的视频 | 91丨九色丨国产女 | 国内精品久久久久久久久久久久 | 久久久久在线视频 | 国产精品免费观看国产网曝瓜 | 国产福利中文字幕 | 黄色在线视频网址 | 在线电影 一区 | 97超碰人人模人人人爽人人爱 | 一区二区三区在线播放 | 99精品国产福利在线观看免费 | 亚洲综合最新在线 | 久久免费成人网 | 久久久999精品视频 国产美女免费观看 | 亚洲人在线7777777精品 | 91精品色 | 亚洲精品一区二区三区新线路 | 黄色福利网 | 亚洲国产丝袜在线观看 | 亚洲片在线 | 欧美日韩国产在线精品 | 香蕉视频在线播放 | 欧美成人视 | 欧美一区二区三区免费观看 | 婷婷视频在线观看 | 久久伊人热 | 国产精品久久久久久久久久久久冷 | 免费观看黄色12片一级视频 | 高清美女视频 | 国产一级大片在线观看 | 日韩精品不卡在线观看 | 四虎成人免费影院 | 丁香六月天婷婷 | 91成年人在线观看 | 久久人人精品 | 国产a级片免费观看 | 国产成人精品久久久 | 天天干人人 | 亚洲精品乱码久久久久久蜜桃91 | 欧美巨乳波霸 | 色婷婷久久久 | 欧美一区在线看 | 4438全国亚洲精品在线观看视频 | 97操操操 | 91视视频在线直接观看在线看网页在线看 | 国产精品嫩草55av | 亚洲精品国产日韩 | 天天操夜夜操 | 久久99网站 | 国产精品va | 国产精选视频 | 在线不卡中文字幕播放 | 天天搞天天干 | 欧美日韩调教 | 亚洲国产中文字幕在线视频综合 | 欧美一级高清片 | 中文字幕第一页在线 | 国产资源精品在线观看 | 国产成人精品一二三区 | 久久综合国产伦精品免费 | 亚洲一级片在线看 | 成人免费一级 | 黄色成年片 | 色网影音先锋 | 久久激情小说 | av免费在线观 | 最新成人av | 色视频网页 | 91尤物国产尤物福利在线播放 | 久久午夜影院 | 久久久久久久久久久久亚洲 | 999久久国精品免费观看网站 | 狠狠干五月天 | 欧洲亚洲女同hd | 久久免费国产视频 | 国产精品毛片久久蜜 | 日本黄色免费观看 | 欧美激情在线网站 | 久久无码av一区二区三区电影网 | 黄色毛片视频免费 | 成年一级片 | 不卡av免费在线观看 | 国产精品小视频网站 | 久久精品亚洲精品国产欧美 | 在线免费av网站 | 欧美日韩久久不卡 | 久草手机视频 | 一区二区精品久久 | 久久久久亚洲精品国产 | 97在线观看免费观看高清 | 九色在线 | 最新av网站在线观看 | 久久久网页 | 人人射人人射 | 精品国产伦一区二区三区观看方式 | 成人在线免费看视频 | 亚洲综合视频在线观看 | 免费观看视频的网站 | 欧美成人影音 | 亚洲 欧美 变态 国产 另类 | 婷婷午夜天 | 91精品网站 | 成人av网站在线观看 | 成人av视屏 | 99久久999久久久精玫瑰 | 亚洲精品成人av在线 | 色综合网 | 99免费精品| 成人在线视频在线观看 | 欧美aaa视频| 色播五月激情综合网 | 国产精品99蜜臀久久不卡二区 | 国产午夜三级一区二区三桃花影视 | 黄色三级免费观看 | 国产精品欧美激情在线观看 | 韩日三级av | 亚洲一区二区三区miaa149 | 国产成人精品一区二区三区在线 | 91精品办公室少妇高潮对白 | 91视频观看免费 | 99久久久国产精品免费99 | 少妇bbw揉bbb欧美 | 久久久久中文 | 国产精品综合久久 | 超碰在线公开免费 | 色悠悠久久综合 | 一级黄色片毛片 | 天天天天天操 | 日韩av高清在线观看 | 国产成人在线观看免费 | 日韩精品最新在线观看 | 精品乱码一区二区三四区 | 玖玖在线资源 | 天天舔夜夜操 | 国产精品美女www爽爽爽视频 | 欧美亚洲精品一区 | 麻豆视频在线免费看 | 久久国产精品免费视频 | 久久久精品福利视频 | 成人污视频在线观看 | 天天激情综合 | 亚洲免费视频观看 | 国产精品男女视频 | 日韩午夜在线 | 免费一级毛毛片 | 成人全视频免费观看在线看 | 国产精品人成电影在线观看 | 欧美成人999 | 激情六月婷婷久久 | 最近日韩中文字幕中文 | 国产麻豆精品在线观看 | 欧美一进一出抽搐大尺度视频 | 国产精美视频 | 久草青青在线观看 | 免费黄在线观看 | 久久国产二区 | 99热手机在线观看 | 国产91精品在线播放 | 日韩免费电影网站 | 少妇性色午夜淫片aaaze | 麻豆91在线观看 | 三三级黄色片之日韩 | 在线观看的a站 | 人人插人人看 | 91视频在线免费下载 | 91福利社在线观看 | 欧美国产日韩一区 | 日日夜夜精品视频天天综合网 | 免费无遮挡动漫网站 | 久久精品这里精品 | 成年人免费电影在线观看 | 日韩精品专区在线影院重磅 | 婷婷精品 | 国产精品久久久久一区二区三区共 | 亚洲天天综合网 | 99久久综合狠狠综合久久 | 韩国av电影在线观看 | 日韩动态视频 | 91在线免费观看网站 | 一区二区三区免费在线观看视频 | 日日日天天天 | 丁香六月天 | 久久电影中文字幕视频 | 欧美精品一二 | 亚洲黄色网络 | 青草视频在线 | 婷婷丁香久久五月婷婷 | 亚洲激情中文 | 久久99精品国产99久久 | 久久精品视频观看 | 久久久久免费电影 | 69国产精品视频免费观看 | 久久刺激视频 | 久久精品国产精品亚洲 | 人人射人人爽 | 国产a级免费 | 国产伦理久久精品久久久久_ | 一级一级一片免费 | 久久99精品一区二区三区三区 | 波多野结衣精品视频 | 久草99| 97精品国产手机 | 日韩视频免费看 | 亚洲精品乱码久久久久久按摩 | 成人在线观看资源 | 国精产品999国精产品岳 | 人人干天天干 | 91精选 | 美女在线观看av | 97在线视频网站 | 久99久中文字幕在线 | 麻豆传媒视频在线免费观看 | 精品极品在线 | 韩国av电影在线观看 | 日韩aⅴ视频 | 成人国产精品久久久久久亚洲 | 日日操日日操 | 日韩一二三在线 | 亚洲免费视频观看 | 99久久精品免费视频 | 亚洲首页| 免费看国产精品 | 免费视频久久久久 | 成人小视频在线 | 国产亚洲精品久久久久久久久久久久 | 在线看欧美 | 欧美在线资源 | 国产精品久久久免费看 | 91精品国产一区二区在线观看 | 欧美91精品久久久久国产性生爱 | 久草线 | 美女网站在线播放 | 婷婷激情五月 | 欧美视频www | av中文字幕在线免费观看 | 一级全黄毛片 | 国产精品视频app | 亚洲三级黄色 | 中文字幕av在线 | 天天干天天弄 | 亚洲女同videos | 免费视频在线观看网站 | 国产视频不卡 | 99re亚洲国产精品 | 成人黄色免费观看 | 亚洲人在线视频 | 激情综合网五月婷婷 | 九九热精 | 国产视频一二区 | 欧美福利片在线观看 | 亚洲精品h | 久久久高清视频 | 亚洲成人精品 | 免费成人短视频 | 久久久国产一区二区三区四区小说 | 狠狠色丁香婷婷综合橹88 | 最新免费中文字幕 | 日日夜夜操操操操 | 伊人成人精品 | 91成品视频 | 亚洲国产精品电影在线观看 | 日韩欧美一级二级 | 九九综合九九综合 | 国外成人在线视频网站 | 亚洲成人一二三 | 999久久精品 | 91在线影视 | 黄色的视频网站 | 久久久久久久看片 | 国产91免费看 | 亚洲精品女 | av日韩中文| 美国三级黄色大片 | 中文字幕在线观看免费高清电影 | 国产一区二区三区午夜 | 久久久久久久久久久成人 | 成人h视频 | 国产丝袜网站 | 久久久久欠精品国产毛片国产毛生 | 91精品久久久久久综合乱菊 | 99精品免费久久久久久久久日本 | 色网站在线看 | 久久久久久综合网天天 | 天天色综合天天 | 激情婷婷av | 欧美在线观看视频一区二区 | 九九有精品 | 免费成人在线视频网站 | 黄色av高清 | 欧美黄色高清 | 亚洲色图27p | 91久久精品日日躁夜夜躁国产 | 欧洲av在线 | 精品亚洲一区二区 | 亚洲国产精品久久久久 | 成人精品亚洲 | 玖玖视频免费在线 | 婷婷色社区 | 涩涩资源网 | 国产亚洲欧美在线视频 | 91精品国产自产在线观看 | 亚洲精品一区二区三区高潮 | 久久精品视频网站 | 色综合在 | 婷婷六月网 | 国产在线欧美在线 | 日韩av手机在线看 | 免费黄色一区 | 国产精品免费在线 | 国产一级片免费观看 | 久久久久五月天 | 亚洲国产成人在线 | 深夜福利视频在线观看 | 美女黄频免费 | 一本一道久久a久久综合蜜桃 | 天天干天天爽 | 免费热情视频 | 国产精品成久久久久 | 成人av资源| 深夜精品福利 | 狠狠色综合欧美激情 | 久久久久久久久免费 | 日韩精品免费一区 | 国产精品久久久久久久久久久免费看 | 天天躁日日躁狠狠躁av麻豆 | 久久精品久久精品 | 最新中文字幕视频 | 日本久久久久久科技有限公司 | 黄色aaaaa| 一区二区三区免费播放 | 精品国产一区二区三区四 | 国产一级片一区二区三区 | 国产成人免费av电影 | 特级毛片aaa | 国产又粗又猛又爽 | 国产群p| 麻豆传媒精品 | 91麻豆网| 9999精品视频| 97电影手机版 | 五月婷婷导航 | 毛片一二区 | 亚洲一区免费在线 | 久久精国产 | 色视频在线免费 | 国产精品视频在线观看 | 99超碰在线观看 | 狠狠色丁香九九婷婷综合五月 | 久久在线| 国产免费一区二区三区网站免费 | 亚洲欧洲精品一区二区精品久久久 | 国产在线视频在线观看 | 日韩理论片在线 | 日韩中文字幕视频在线 | 色婷婷丁香 | 久久精品久久精品久久39 | 日韩视频在线观看视频 | 国产精品入口麻豆 | 91av视频导航| 综合网天天色 | 18久久久久 | 亚洲欧美怡红院 | 日韩天天综合 | aaa日本高清在线播放免费观看 | 久久久亚洲精华液 | 婷婷丁香六月 | 中文字幕 第二区 | 色多多污污在线观看 | 999国内精品永久免费视频 | 亚洲五月综合 | 婷婷精品国产一区二区三区日韩 | 午夜精品麻豆 | 国内精品视频免费 | 天天射天天艹 | 久久优| 久久免费视频这里只有精品 | 国产亚洲婷婷免费 | 人人爽人人插 | 久久久久欧美精品 | 91精品成人| 91麻豆精品国产91久久久无限制版 | 日韩av一区二区在线 | 在线观看色视频 | 中日韩免费视频 | 日韩欧美精品在线视频 | 午夜精品视频福利 | 狠狠躁夜夜a产精品视频 | 久久国产露脸精品国产 | 99久久久国产精品 | 中文字幕在线资源 | 精品国产不卡 | 91精品国产综合久久福利 | 国产日本在线观看 | 国产高清日韩欧美 | 日韩视频精品在线 | 伊人国产在线播放 | 欧美日韩高清一区二区 国产亚洲免费看 | 久综合网 | a级国产乱理伦片在线观看 亚洲3级 | 在线成人免费电影 | 97超碰在线资源 | 久久九九国产精品 | 亚洲精品裸体 | 精壮的侍卫呻吟h | 亚洲天堂网在线观看视频 | 奇米影视777四色米奇影院 | 亚洲激情精品 | 911免费视频 | 日韩一级电影在线观看 | 五月天久久 | 九九久久精品 | 五月综合色 | 久久视频在线观看免费 | 国产黄大片 | 国产高清中文字幕 | 国产99精品 | 激情视频免费在线 | 欧美激情综合五月色丁香 | 亚洲欧美一区二区三区孕妇写真 | 国产69精品久久久久久久久久 | 99精品久久久久久久久久综合 | 国产成人精品久久久久 | 久久久午夜精品福利内容 | 日韩高清不卡一区二区三区 | a资源在线 | 91探花视频 | 涩涩色亚洲一区 | 香蕉成人在线视频 | 精品国产乱码久久久久久1区2匹 | 亚洲爱视频| 久草在线免费资源站 | 欧美日韩免费观看一区二区三区 | 玖玖在线视频观看 | 婷婷av网站 | 久久久久久久久久亚洲精品 | 亚洲精品乱码久久久久久写真 | 美女久久久 | 五月综合久久 | 99精品国产在热久久下载 | 人人插人人干 | 国产成人av在线影院 | 午夜视频免费播放 | 午夜色场 | 亚洲国产精品成人综合 | 国产精品永久免费视频 | 久久不见久久见免费影院 | 日韩av网页| 久久久国产一区二区三区四区小说 | 蜜桃视频成人在线观看 | 久精品视频在线观看 | 国产视频久久 | www亚洲视频| 91成人国产 | 91传媒激情理伦片 | 国产精品一区免费看8c0m | 在线观看片 | 欧美久久久久久久 | 黄色三级网站 | 国产成人免费网站 | 一区二区三区日韩精品 | 成人97视频| 国产精品96久久久久久吹潮 | 五月婷婷综合在线视频 | 亚洲欧洲在线视频 | 免费a级大片 | 亚洲国产精选 | 麻豆视频免费观看 | 成人av一区二区三区 | 亚洲精品视频网站在线观看 | 亚洲成人av在线电影 | 国产欧美日韩视频 | 免费观看成人网 | 伊人国产在线观看 | 麻豆视传媒官网免费观看 | 久久国语露脸国产精品电影 | 久久久久久久久久久久久久电影 | 伊人久久电影网 | 亚洲劲爆av | 黄色软件在线观看视频 | 一区二区三区福利 | 麻豆免费精品视频 | a√资源在线 | 这里只有精品视频在线 | 国产色秀视频 | 亚洲高清av | 2000xxx影视| 午夜av网站 | 在线国产能看的 | 西西4444www大胆视频 | 成人av影院在线观看 | 一区二区三区在线免费播放 | 国产美女被啪进深处喷白浆视频 | 激情开心站 | 亚洲精品99久久久久中文字幕 | 久久国产免费看 | 久久久久久久影院 | 国产日韩一区在线 | 日韩最新在线视频 | 日韩在线观看 | 免费观看国产精品 | 人人玩人人添人人澡超碰 | 日本久久中文 | 婷婷久久一区 | av免费看在线| 国产一区二区播放 | 久久精品爱爱视频 | www.69xx| a级国产乱理伦片在线播放 久久久久国产精品一区 | av不卡免费看 | 国产精品二区三区 | 2000xxx影视| 五月天亚洲精品 | 香蕉网站在线观看 | 亚洲毛片视频 | 国产精品美女在线 | 欧洲视频一区 | 韩国av免费观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 中文字幕 国产视频 | 毛片区 | 久久在线影院 | 国产中文字幕免费 | 天天爱天天操天天射 | 亚洲欧美偷拍另类 | 欧美一级日韩三级 | 亚洲精品免费看 | 国产在线一区观看 | 亚洲精品一区二区网址 | 在线免费性生活片 | 麻豆免费看片 | 久久久久女人精品毛片 | av天天澡天天爽天天av | 天天色天天干天天色 | 国产美女被啪进深处喷白浆视频 | 免费99视频 | 亚洲综合欧美激情 | 在线性视频日韩欧美 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久一区二区免费视频 | 欧美在线视频二区 | 国产高清成人av | 特级毛片aaa | 中文字幕日韩无 | 69国产精品视频免费观看 | 91av色| 日韩精品一区二区在线观看视频 | 午夜精品久久久久久 | 精品国产一区二区三区蜜臀 | 一级黄色大片在线观看 | 国产一区在线看 | 国产日韩欧美网站 | 国际精品久久 | 2024av| 欧美a视频| 色www免费视频 | 国产精品一区二区三区99 | 久久av在线播放 | 久久久国产电影 | 日韩精品在线观看av | 91麻豆精品国产91久久久久久 | 成人精品视频久久久久 | 夜夜视频 | 在线视频a | 国产精品久久网 | 国产小视频精品 | 国产精品电影一区 | 欧美乱熟臀69xxxxxx | 国产精品视频在线看 | 免费视频区 | 久久不射影院 | 黄色日本免费 | 亚洲精品中文字幕在线观看 | 91视频在线自拍 | 成人av免费 | 中文字幕在线观看第一区 | 久操视频在线观看 | 国产精品美女久久久久久 | 水蜜桃亚洲一二三四在线 | 人人澡超碰碰97碰碰碰软件 | 不卡的av在线播放 | 欧美激情视频一区二区三区 | 狠狠精品| 国产成人一区二区三区 | 九九热免费在线观看 | 色老板在线| 福利视频网址 | 国产不卡视频在线播放 | 国产精品在线看 | 中文字幕欧美日韩va免费视频 | 国产日韩av在线 | 国产黄色特级片 | 天天操天天操一操 | 黄色一级在线观看 | 国产v亚洲v | 99久久精品日本一区二区免费 | 亚洲爱爱视频 | 国产精品永久久久久久久www | 五月婷婷六月丁香激情 | 91精品综合在线观看 | 69国产在线观看 | 欧美日韩国产在线 | 亚洲精品久久久久久国 | 中文字幕在线国产 | 中文字幕91视频 | 亚洲国产综合在线 | 丁香六月婷婷综合 | 97人人爽人人 | 免费三级黄色片 | 亚洲人久久 | 国产一区二区手机在线观看 | 一区久久久 | 四虎国产永久在线精品 | 91香蕉视频在线下载 | 日韩在线色视频 | 亚洲精品在线观看免费 | 久草影视在线观看 | 久久网站免费 | 午夜精品福利一区二区三区蜜桃 | 国产精品亚洲成人 | 808电影免费观看三年 | 久久久久久久久久久免费 | 日韩精品在线视频免费观看 | 国产无套精品久久久久久 | 成年人在线免费看视频 | 亚洲毛片一区二区三区 | 国产在线观看中文字幕 | 黄色片视频免费 | 久久尤物电影视频在线观看 | 天天色天天操综合 | 欧美一区三区四区 | 国产精品白浆 | 欧美精品国产综合久久 | 98超碰在线 | 日韩免费观看高清 | 这里只有精品视频在线 | 午夜精品福利一区二区 | 亚洲综合视频网 | 欧美大片aaa | 国产网红在线观看 | 日日日日干| 国产精品永久在线 | 天天色天天操综合网 | 91在线免费公开视频 | 色婷婷六月天 | 久久国产精品色婷婷 | 人人爽影院 | 国产精品免费观看在线 | 国产成人三级三级三级97 | 一区在线电影 | 97国产在线播放 | 婷婷伊人综合亚洲综合网 | 91精品国产自产在线观看永久 | 精品视频成人 | 在线亚洲成人 | 天天干天天干天天 | 国产日韩视频在线 | 国产精品亚洲片夜色在线 | 久久久久草 | 一级性视频 | 亚洲视频第一页 | av超碰在线观看 | wwwwww色| 色综合天天干 | 中文在线字幕观看电影 | 日本xxxx裸体xxxx17 | 黄色福利网站 | 91免费网 | 免费一区在线 | 亚洲国产精品推荐 | 免费精品在线观看 | 欧美天堂视频在线 | 97精品视频在线 | 国产精品99久久久久 | 久久性生活片 | 日韩一区二区三区免费电影 | 国产日产av | 91成人短视频在线观看 | 2024国产精品视频 | 欧美成人日韩 | 91亚洲精品久久久 | 欧美精品免费在线观看 | 亚洲精品综合在线观看 | 精品国产欧美一区二区三区不卡 | 成人免费一区二区三区在线观看 | 97成人资源站 | 免费看一级 | 十八岁以下禁止观看的1000个网站 | 亚洲精品99久久久久中文字幕 | 国产午夜精品一区二区三区 | 成人三级网站在线观看 | 国产精品免费高清 | 亚洲午夜久久久综合37日本 | 永久免费毛片 | 99久久精品免费看国产 | 国产免费精彩视频 | 欧美日韩中文字幕综合视频 | 又黄又爽又无遮挡免费的网站 | 亚洲五月综合 | 久久中文字幕在线视频 | 激情网站五月天 | 成人久久视频 | 在线国产片 | 欧美综合在线视频 | 亚洲国产精品va在线看 | 在线观看91视频 | 日韩一区二区三区免费视频 | 久久这里有精品 | 91在线日韩 | 成人影片在线播放 | 精品在线一区二区 | 国产99精品在线观看 | 久久精品视频在线免费观看 | 狠狠躁18三区二区一区ai明星 | 国产精品久久久久久久av电影 | 日韩字幕 | 色先锋av资源中文字幕 | 精品国产一区二区三区四 | 色婷婷激情网 | 99视频在线观看视频 | 国产一区二区不卡视频 | 欧美成人黄 | 亚洲精品在线观看中文字幕 | 亚洲禁18久人片 | 国产三级久久久 | 国产精品女| 精品一区欧美 | 国产福利av | 精品久久视频 | 91探花系列在线播放 | 最近中文字幕mv免费高清在线 | 521色香蕉网站在线观看 | 亚洲国产天堂av | 日韩在线免费播放 | 国产三级在线播放 | 色伊人网 | 91中文字幕一区 | 欧美日韩视频在线 | 日韩在线高清免费视频 | 国产美女永久免费 | 国产亚洲视频系列 | 丁五月婷婷 | 日韩精品在线视频免费观看 | 丁香午夜婷婷 | 国产精品高清在线观看 | 亚洲精品日韩在线观看 | 国产小视频免费观看 | a级一a一级在线观看 | 韩国在线一区二区 | 在线观看91 | 伊人久久影视 | 日日干干 | 日韩一区二区三区免费视频 | av解说在线观看 | 国产精品伦一区二区三区视频 | 美国av片在线观看 | 色综合久久久 | 十八岁免进欧美 | 去干成人网| 日韩免费在线观看视频 | 日本xxxx.com | 国产精品国产三级国产aⅴ入口 | 国产精品久久久久久久99 | 久久久久麻豆v国产 | 超碰999| 毛片1000部免费看 | 午夜视频亚洲 | 亚洲资源网| 一级黄毛片 | 国产99久久久精品视频 | 99久热在线精品视频观看 |