亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? sosos.c

?? avr和small操作系統(tǒng)的一個測試程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
         if(SOSOS_RUNNING_INHERIT_PRI>i){
#else
         if(SOSOS_RUNNING_TASK_PRI>i){
#endif
           set_bit(SOSOS_STATE,STATE_SCHED_REQ);
           }
         return;
         }
       }
     point++;
     tmpj<<=1;
     }
   }

}
#endif

#if SOSOS_COUNT_SEM_ENABLE == 1
void SososCreateCountSem(SOSOS_SEM *sem,SOSOS_SEM value)//創(chuàng)建計數(shù)型信號量
//sem為要創(chuàng)建的數(shù)字型信號量的指針
//value為要創(chuàng)建時的初始值{
 (*sem)=value;
}
#endif

#if SOSOS_QUERY_SEM_ENABLE == 1 && SOSOS_COUNT_SEM_ENABLE == 1
SOSOS_SEM SososQueryCountSem(SOSOS_SEM *sem)//查詢計數(shù)型信號量
{
 return (*sem);
}
#endif

#if SOSOS_COUNT_SEM_ENABLE == 1
unsigned char SososCountSemPend(SOSOS_SEM *sem,SOSOS_TIMEOUT_TYPE timeout)//等待計數(shù)型信號量
//本函數(shù)用于等待指定的計數(shù)型信號量為有效,有效則立即返回,不能用在中斷中
//sem為計數(shù)型信號量的指針
//timeout為等待時間,單位:時間間隔,0:為無限期等待
{
 unsigned char temp;

 ENTER_CRITICAL();
 if((*sem)>0){
   (*sem)--;
   }
 else{
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE=TASK_STATE_SEM;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].EVENT_INDICATION=(SOSOS_ADDRESS)sem;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_TIMEOUT=timeout;
   SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]=SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]&(~SOSOS_RUNNING_TASK_ID_INDEX);//清除任務(wù)就緒狀態(tài)
   if(timeout>0)
     set_bit(SOSOS_WAIT_TASK,SOSOS_RUNNING_TASK_PRI);
   SososScheder();//重新調(diào)度
   }
 if(TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE==TASK_STATE_SEM_TIMEOUT)
   temp=SOSOS_TASK_TIMEOUT;
 else{
   if((*sem)>0)
     (*sem)--;
   temp=SOSOS_OK;
   }
 EXIT_CRITICAL();
 return temp;
}
#endif

#if SOSOS_COUNT_SEM_ENABLE == 1
void SososCountSemPost(SOSOS_SEM *sem)//發(fā)送計數(shù)型信號量
//將指定的計數(shù)型信號量加一,若有等待該信號量的高優(yōu)先級任務(wù),則進行任務(wù)切換
{
 ENTER_CRITICAL();

 if((*sem)<SOSOS_SEM_MAX_VALUE)
   (*sem)++;

 if((*sem)==1){
   ENABLE_INTERRUPT();

   SOSOS_SEARCH_ALL_WAIT_SIGNAL_TASK((SOSOS_ADDRESS)sem);//搜尋等待信號的任務(wù)

   if(test_1(SOSOS_STATE,STATE_SCHED_REQ)&&test_0(SOSOS_STATE,STATE_SCHED_RUN)&&(SOSOS_INT_NEST==0))
     SososScheder();
   }
 EXIT_CRITICAL();
}
#endif

#if SOSOS_LOGIC_SEM_ENABLE == 1
void SososCreateLogicSem(SOSOS_SEM *sem,SOSOS_SEM value)//創(chuàng)建邏輯型信號量
//sem為指向信號量的指針
//value為創(chuàng)建時設(shè)置的初始值{
 (*sem)=value;
}
#endif

#if SOSOS_QUERY_SEM_ENABLE == 1 && SOSOS_LOGIC_SEM_ENABLE == 1
SOSOS_SEM SososQueryLogicSem(SOSOS_SEM *sem)//查詢邏輯型信號量
//sem為指向信號量的指針
//信號量空閑返回:SOSOS_SIGNAL_FREE;信號量被占有返回:SOSOS_SIGNAL_ENGROSS{
 return (*sem);
}
#endif

#if SOSOS_LOGIC_SEM_ENABLE == 1
unsigned char SososLogicSemPend(SOSOS_SEM *sem,SOSOS_TIMEOUT_TYPE timeout)//等待邏輯型信號量
//本函數(shù)用于等待指定的邏輯型信號量為有效,有效則立即返回,不能用在中斷中
//sem為邏輯型信號量的指針
//timeout為等待時間,單位:時間間隔,0:為無限期等待
{
 unsigned char temp;

 ENTER_CRITICAL();
 if((*sem)==SOSOS_SIGNAL_FREE){
   (*sem)=SOSOS_SIGNAL_ENGROSS;
   }
 else{
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE=TASK_STATE_SEM;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].EVENT_INDICATION=(SOSOS_ADDRESS)sem;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_TIMEOUT=timeout;
   SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]=SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]&(~SOSOS_RUNNING_TASK_ID_INDEX);//清除任務(wù)就緒狀態(tài)
   if(timeout>0)
     set_bit(SOSOS_WAIT_TASK,SOSOS_RUNNING_TASK_PRI);
   SososScheder();//重新調(diào)度
   }
 if(TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE==TASK_STATE_SEM_TIMEOUT)
   temp=SOSOS_TASK_TIMEOUT;
 else{
   (*sem)=SOSOS_SIGNAL_ENGROSS;
   temp=SOSOS_OK;
   }
 EXIT_CRITICAL();
 return temp;
}
#endif

#if SOSOS_LOGIC_SEM_ENABLE == 1
void SososLogicSemPost(SOSOS_SEM *sem)//發(fā)送邏輯型信號量
//將指定的邏輯型信號量置為可用,若有等待該信號量的高優(yōu)先級任務(wù),則進行任務(wù)切換
{

 ENTER_CRITICAL();
 if((*sem)==SOSOS_SIGNAL_ENGROSS){
   (*sem)=SOSOS_SIGNAL_FREE;

   ENABLE_INTERRUPT();

   SOSOS_SEARCH_ALL_WAIT_SIGNAL_TASK((SOSOS_ADDRESS)sem);//搜尋等待信號的任務(wù)

   if(test_1(SOSOS_STATE,STATE_SCHED_REQ)&&test_0(SOSOS_STATE,STATE_SCHED_RUN)&&(SOSOS_INT_NEST==0))
     SososScheder();
   }
 EXIT_CRITICAL();
}
#endif

#if SOSOS_MUTEX_ENABLE == 1
void SososCreateMutex(SOSOS_MUTEX *mutex,unsigned char value)//創(chuàng)建互斥型信號量//mutex為指向信號量的指針,將新加入信號量放在列表的最后
//value為創(chuàng)建信號量時的初始值,可為SOSOS_SIGNAL_FREE或SOSOS_SIGNAL_ENGROSS
{
 SOSOS_MUTEX *point;

 if(SOSOS_MUTEX_POINT==0)//列表為空時,作為第一個成員
   SOSOS_MUTEX_POINT=mutex;
 else{//已有成員時,添加在列表末尾
   point=SOSOS_MUTEX_POINT;
   while(1){
     if((point->NEXT_MUTEX)==0){
       point->NEXT_MUTEX=(SOSOS_ADDRESS)mutex;
       break;
       }
     point=(SOSOS_MUTEX *)point->NEXT_MUTEX;
     }
   }//已有成員時,添加在列表末尾

 mutex->NEXT_MUTEX=0;//表示為最后一個列表成員
 mutex->MUTEX_VALUE=value;
 mutex->INHERIT_PRI=SOSOS_PRI_MAX-1;
}
#endif

#if SOSOS_QUERY_MUTEX_ENABLE == 1
unsigned char SososQueryMutex(SOSOS_MUTEX *mutex)//查詢互斥型信號量狀態(tài)
//查詢指定的互斥型信號量的狀態(tài),可用在中斷函數(shù)中
{
 return (mutex->MUTEX_VALUE);
}
#endif

#if SOSOS_MUTEX_ENABLE == 1
void SososInsertMutex(SOSOS_MUTEX *mutex)//調(diào)整互斥信號量在表內(nèi)的位置
//系統(tǒng)內(nèi)部使用,用于調(diào)整互斥型信號量在鏈表中的位置,信號量在鏈表中是按
//繼承后的優(yōu)先級從高到低排列(優(yōu)先級數(shù)值從小到大),沒有被占用的信號量
//的優(yōu)先級被指定為最低可用優(yōu)先級
{
 SOSOS_MUTEX *mutex_point,*pre_point;

//從列表中去除指定的信號量
 if(SOSOS_MUTEX_POINT==mutex){//是第一個成員
   SOSOS_MUTEX_POINT=0;
   }//是第一個成員
 else{//不是第一個成員
   mutex_point=SOSOS_MUTEX_POINT;
   while(mutex_point!=0){
     if((mutex_point->NEXT_MUTEX)==(SOSOS_ADDRESS)mutex){
       mutex_point->NEXT_MUTEX=mutex->NEXT_MUTEX;
       break;
       }
     mutex_point=(SOSOS_MUTEX *)mutex_point->NEXT_MUTEX;
     }
   }//不是第一個成員

//按優(yōu)先級插人該成員
 if(SOSOS_MUTEX_POINT==0){//隊列為空
   SOSOS_MUTEX_POINT=mutex;
   mutex->NEXT_MUTEX=0;
   }//隊列為空
 else{//隊列不空
   if((SOSOS_MUTEX_POINT->INHERIT_PRI)>=(mutex->INHERIT_PRI)){//被插入成員是隊列中的最高優(yōu)先級成員
     mutex->NEXT_MUTEX=SOSOS_MUTEX_POINT->NEXT_MUTEX;
     SOSOS_MUTEX_POINT=mutex;
     }//被插入成員是隊列中的最高優(yōu)先級成員
   else{//其他情況
     pre_point=SOSOS_MUTEX_POINT;
     while(1){
       mutex_point=(SOSOS_MUTEX *)(pre_point->NEXT_MUTEX);
       if((mutex_point->INHERIT_PRI)>=(mutex->INHERIT_PRI)){
         pre_point->NEXT_MUTEX=(SOSOS_ADDRESS)mutex;
         mutex->NEXT_MUTEX=(SOSOS_ADDRESS)mutex_point;
         break;
         }
       pre_point=mutex_point;
       }
     }//其他情況
   }//隊列不空
 }

unsigned char SososGetMutex(SOSOS_MUTEX *mutex,SOSOS_TIMEOUT_TYPE timeout)//獲得互斥型信號量
//在規(guī)定的時間內(nèi)等待信號量,若得到信號量返回SOSOS_OK,若超時返回SOSOS_TASK_TIMEOUT
//mutex為請求的互斥型信號量
//timeout為超時時間,單位是ticks;0為無限期等待
{
 unsigned char temp;

 ENTER_CRITICAL();
 if((mutex->MUTEX_VALUE)==SOSOS_SIGNAL_FREE){//信號量空閑
   mutex->INHERIT_PRI=SOSOS_RUNNING_INHERIT_PRI;
   mutex->OWN_TASK_PRI=SOSOS_RUNNING_TASK_PRI;
   mutex->OWN_TASK_ID=SOSOS_RUNNING_TASK_ID;
   mutex->MUTEX_VALUE=SOSOS_SIGNAL_ENGROSS;
   SososInsertMutex(mutex);//調(diào)整互斥型信號量列表
   }//信號量空閑
 else{//信號量被占用
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE=TASK_STATE_MUTEX;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].EVENT_INDICATION=(SOSOS_ADDRESS)mutex;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_TIMEOUT=timeout;
   SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]=SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]&(~SOSOS_RUNNING_TASK_ID_INDEX);//清除任務(wù)就緒狀態(tài)
   if(SOSOS_RUNNING_INHERIT_PRI<(mutex->INHERIT_PRI)){
     mutex->INHERIT_PRI=SOSOS_RUNNING_INHERIT_PRI;
     SososInsertMutex(mutex);
     }
   if(timeout>0)
     set_bit(SOSOS_WAIT_TASK,SOSOS_RUNNING_TASK_PRI);
   SososScheder();//重新調(diào)度
   }//信號量被占用

 if(TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE==TASK_STATE_MUTEX_TIMEOUT)
   temp=SOSOS_TASK_TIMEOUT;
 else{
   mutex->INHERIT_PRI=SOSOS_RUNNING_INHERIT_PRI;
   mutex->OWN_TASK_PRI=SOSOS_RUNNING_TASK_PRI;
   mutex->OWN_TASK_ID=SOSOS_RUNNING_TASK_ID;
   mutex->MUTEX_VALUE=SOSOS_SIGNAL_ENGROSS;
   SososInsertMutex(mutex);
   temp=SOSOS_OK;
   }
 EXIT_CRITICAL();
 return temp;
}
#endif

#if SOSOS_MUTEX_ENABLE == 1
void SOSOS_MUTEX_SEARCH_ALL_PRI_TASK(SOSOS_MUTEX * POINT)//搜尋等待互斥型信號量的任務(wù)
//系統(tǒng)內(nèi)部使用,用于在任務(wù)控制塊中搜索等待指定互斥型信號量的任務(wù)
{
 unsigned char i,j;
 SOSOS_TCB *point;

 point=TCB;
 for(i=0;i<SOSOS_PRI_MAX;i++){
   for(j=0;j<SOSOS_MAX_TASK_PER_PRI;j++){
     if(point->TASK_STATE==TASK_STATE_MUTEX){
       if(point->EVENT_INDICATION==(SOSOS_ADDRESS)POINT){
         set_bit(SOSOS_TASK_READY[i],j);
         point->TASK_STATE=TASK_STATE_OK;
         if(SOSOS_RUNNING_INHERIT_PRI>i){
           set_bit(SOSOS_STATE,STATE_SCHED_REQ);
           }
//獲得該互斥型信號量
         POINT->INHERIT_PRI=i;
         POINT->OWN_TASK_PRI=i;
         POINT->OWN_TASK_ID=j;
         POINT->MUTEX_VALUE=SOSOS_SIGNAL_ENGROSS;
         SososInsertMutex(POINT);//調(diào)整互斥型信號量列表
         return;
         }
       }
     point++;
     }
   }
//恢復(fù)互斥型信號量為空閑狀態(tài)
 POINT->INHERIT_PRI=SOSOS_PRI_MAX-1;
 POINT->MUTEX_VALUE=SOSOS_SIGNAL_FREE;
 SososInsertMutex(POINT);//調(diào)整互斥型信號量列表
}
#endif

#if SOSOS_MUTEX_ENABLE == 1
void SososFreeMutex(SOSOS_MUTEX *mutex)//釋放互斥型信號量
//釋放指定的互斥型信號量
{
 ENTER_CRITICAL();

 SOSOS_MUTEX_SEARCH_ALL_PRI_TASK(mutex);//搜尋等待互斥型信號量的任務(wù)

 if(test_1(SOSOS_STATE,STATE_SCHED_REQ)&&test_0(SOSOS_STATE,STATE_SCHED_RUN)&&(SOSOS_INT_NEST==0))
   SososScheder();
 EXIT_CRITICAL();
}
#endif

#if SOSOS_FLAG_ENABLE ==1
void SososCreateFlag(SOSOS_EVENT_FLAG *FLAG,SOSOS_FLAG_TYPE *point,SOSOS_FLAG_TYPE wait,SOSOS_FLAG_TYPE msk)//創(chuàng)建事件標(biāo)志
{
//FLAG:事件標(biāo)記
//point:事件標(biāo)記組的指針
//wait:事件標(biāo)記等待的狀態(tài)
//msk:事件標(biāo)記屏蔽碼
 FLAG->FLAG_POINT=point;
 FLAG->FLAG_WAIT=wait&msk;
 FLAG->FLAG_MSK=msk;
}
#endif

#if SOSOS_QUERY_FLAG_ENABLE == 1
SOSOS_FLAG_TYPE SososQueryFlag(SOSOS_EVENT_FLAG *FLAG)//查詢事件標(biāo)志狀態(tài)
{
//FLAG:事件標(biāo)記
 return ((*(FLAG->FLAG_POINT))&(FLAG->FLAG_MSK));
}
#endif

#if SOSOS_FLAG_ENABLE ==1
unsigned char SososWaitFlag(SOSOS_EVENT_FLAG *FLAG,SOSOS_FLAG_TYPE wait,SOSOS_FLAG_TYPE msk,SOSOS_TIMEOUT_TYPE timeout)//等待指定的事件
{
//FLAG:事件標(biāo)記
//wait:事件標(biāo)記等待的狀態(tài)
//msk:事件標(biāo)記屏蔽碼
//timeout:等待溢出延時
 unsigned char temp;
 
 ENTER_CRITICAL();
 FLAG->FLAG_WAIT=wait&msk;
 FLAG->FLAG_MSK=msk;
 if(((*(FLAG->FLAG_POINT))&msk)!=(wait&msk)){
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE=TASK_STATE_FLAG;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].EVENT_INDICATION=(SOSOS_ADDRESS)FLAG;
   TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_TIMEOUT=timeout;
   SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]=SOSOS_TASK_READY[SOSOS_RUNNING_TASK_PRI]&(~SOSOS_RUNNING_TASK_ID_INDEX);//清除任務(wù)就緒狀態(tài)
   if(timeout>0)
     set_bit(SOSOS_WAIT_TASK,SOSOS_RUNNING_TASK_PRI);
   SososScheder();//重新調(diào)度
   }
 if(TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STATE==TASK_STATE_FLAG_TIMEOUT)
   temp=SOSOS_TASK_TIMEOUT;
 else
   temp=SOSOS_OK;
 EXIT_CRITICAL();
 return temp;
}
#endif

#if SOSOS_FLAG_ENABLE ==1
void SOSOS_FLAG_SEARCH_ALL_PRI_TASK(SOSOS_EVENT_FLAG *POINT)//搜尋等待事件標(biāo)志的任務(wù)
{
 unsigned char i,j,tmp;
 SOSOS_TCB *point;

 point=TCB;
 DISABLE_INTERRUPT();
 tmp=*(POINT->FLAG_POINT);

 for(i=0;i<SOSOS_PRI_MAX;i++){
   for(j=0;j<SOSOS_MAX_TASK_PER_PRI;j++){
     if(point->TASK_STATE==TASK_STATE_FLAG){
       if((point->EVENT_INDICATION)==(SOSOS_ADDRESS)POINT){
         if((POINT->FLAG_WAIT)==((POINT->FLAG_MSK)&tmp)){
           set_bit(SOSOS_TASK_READY[i],j);
           point->TASK_STATE=TASK_STATE_OK;
#if SOSOS_MUTEX_ENABLE == 1
           if(SOSOS_RUNNING_INHERIT_PRI>i){
#else
           if(SOSOS_RUNNING_TASK_PRI>i){

#endif
             set_bit(SOSOS_STATE,STATE_SCHED_REQ);
             }
           return;
           }
         }
       }
     point++;
     }
   }
}
#endif

#if SOSOS_FLAG_ENABLE ==1
void SososChangeFlag(SOSOS_EVENT_FLAG *FLAG,SOSOS_FLAG_TYPE flag,unsigned char opt)//改變事件標(biāo)志
{
//FLAG:事件標(biāo)記
//flag:要改變的標(biāo)記位
//opt:進行的操作(設(shè)置 或 清除)
 ENTER_CRITICAL();
 if(opt==SOSOS_FLAG_OPT_CLR)
   *(FLAG->FLAG_POINT)&=(~flag);
 else
   *(FLAG->FLAG_POINT)|=flag;
 ENABLE_INTERRUPT();

 SOSOS_FLAG_SEARCH_ALL_PRI_TASK(FLAG);//搜尋等待事件標(biāo)志的任務(wù)

 if(test_1(SOSOS_STATE,STATE_SCHED_REQ)&&test_0(SOSOS_STATE,STATE_SCHED_RUN)&&(SOSOS_INT_NEST==0))
   SososScheder();
 EXIT_CRITICAL();
}
#endif

#if SOSOS_TASK_ENALBE == 1
void SososStartOs(void)//啟動SOSOS系統(tǒng)
{
#if SOSOS_MUTEX_ENABLE == 1
 SOSOS_RUNNING_INHERIT_PRI=SOSOS_PRI_MAX-1;
#endif
 SOSOS_RUNNING_TASK_PRI=SOSOS_PRI_MAX-1;
 SOSOS_RUNNING_TASK_ID=SOSOS_MAX_TASK_PER_PRI-1;
 SOSOS_RUNNING_TASK_ID_INDEX=1<<SOSOS_RUNNING_TASK_ID;
 SososCreateTask(SososIdleTask,SOSOS_RUNNING_TASK_PRI,SOSOS_RUNNING_TASK_ID,IDLE_TASK_STACK_SIZE,(void *)0);//創(chuàng)建idle任務(wù)
#if SOSOS_WDT_ENABLE == 1
//看門狗
 wdt_enable(SOSOS_WDT_PERIOD);
 SOSOS_WDT_RST();//復(fù)位看門狗
#endif
 SYS_TIMER_INIT();
 SP=TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STACK_POINT+SOSOS_PUSH_REGISTER_NO; 
 __asm__ __volatile__( "reti" "\n\t" );
}
#endif


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91国在线观看| 亚洲欧美国产毛片在线| 麻豆高清免费国产一区| 欧美一区二区三区人| 首页亚洲欧美制服丝腿| 日韩一区二区免费电影| 极品少妇xxxx偷拍精品少妇| 久久久久亚洲综合| 丁香婷婷综合色啪| 日韩理论在线观看| 欧美性感一类影片在线播放| 午夜精品一区在线观看| 日韩一区二区三区在线观看| 韩国视频一区二区| 国产精品久久影院| 欧美午夜精品久久久久久超碰| 午夜在线成人av| 精品国产一区二区三区四区四| 国产福利视频一区二区三区| 亚洲欧洲成人自拍| 欧美三级一区二区| 国产尤物一区二区在线| **欧美大码日韩| 欧美麻豆精品久久久久久| 久久精品国产色蜜蜜麻豆| 欧美韩日一区二区三区| 欧美三级午夜理伦三级中视频| 久久er精品视频| 国产精品传媒入口麻豆| 欧美亚一区二区| 国产美女娇喘av呻吟久久| 亚洲色欲色欲www| 欧美高清www午色夜在线视频| 国产一区二区不卡| 亚洲最快最全在线视频| 2022国产精品视频| 欧美在线一二三| 国产中文字幕一区| 亚洲高清免费观看高清完整版在线观看| 正在播放亚洲一区| 成人av免费在线| 秋霞av亚洲一区二区三| 中文字幕亚洲成人| 欧美mv日韩mv国产网站app| av网站一区二区三区| 美女诱惑一区二区| 亚洲自拍欧美精品| 国产欧美日韩精品在线| 7777精品久久久大香线蕉 | 欧美美女bb生活片| 丰满亚洲少妇av| 免费人成网站在线观看欧美高清| 中文字幕一区二区三区视频| 日韩三级免费观看| 欧美在线免费视屏| 成人黄页毛片网站| 蜜桃av一区二区| 同产精品九九九| 夜夜精品浪潮av一区二区三区| 欧美国产日韩一二三区| 欧美xxxxx牲另类人与| 欧美日韩国产系列| 在线一区二区观看| 91在线免费播放| 粉嫩13p一区二区三区| 九色综合国产一区二区三区| 亚洲福利电影网| 亚洲在线视频免费观看| 中文字幕一区在线观看| 国产精品私人影院| 国产亚洲人成网站| 久久久亚洲综合| 久久只精品国产| 精品国产污网站| 欧美不卡一区二区三区四区| 欧美一区二区成人6969| 欧美日韩国产中文| 欧美日韩极品在线观看一区| 在线精品亚洲一区二区不卡| 一本色道久久加勒比精品 | 久久久精品免费免费| 日韩欧美亚洲国产另类| 欧美一区三区二区| 欧美一区二区视频观看视频| 欧美精品三级在线观看| 337p亚洲精品色噜噜噜| 日韩亚洲国产中文字幕欧美| 91精品国产91久久综合桃花| 91精品免费在线观看| 9191久久久久久久久久久| 欧美精品第一页| 日韩一区二区在线看| 日韩欧美自拍偷拍| 精品国内片67194| 欧美国产一区在线| 中文字幕一区二区三区在线播放| 亚洲日本韩国一区| 亚洲午夜激情av| 石原莉奈在线亚洲三区| 久久精品免费观看| 成人在线视频首页| 一本大道综合伊人精品热热| 欧美无人高清视频在线观看| 欧美群妇大交群的观看方式| 日韩欧美一卡二卡| 中文字幕久久午夜不卡| 亚洲人成人一区二区在线观看 | 成人在线综合网站| 色八戒一区二区三区| 欧美日韩一区在线| 欧美成人三级电影在线| 国产精品美女久久久久久| 亚洲一区在线观看视频| 韩国欧美国产1区| 99久久综合国产精品| 欧美午夜不卡视频| 久久嫩草精品久久久久| 亚洲欧美乱综合| 久久国产剧场电影| 97aⅴ精品视频一二三区| 在线不卡中文字幕播放| 久久久www成人免费无遮挡大片| 国产精品九色蝌蚪自拍| 青青草97国产精品免费观看无弹窗版| 国产高清在线观看免费不卡| 一本色道久久综合狠狠躁的推荐 | 久久久久久久性| 亚洲一区在线观看免费观看电影高清 | 久久蜜臀精品av| 亚洲免费毛片网站| 精品一区二区综合| 一本色道久久综合亚洲91| 久久午夜国产精品| 午夜精品福利一区二区蜜股av| 国产高清亚洲一区| 日韩欧美一二三四区| 一片黄亚洲嫩模| 成人福利视频在线| 日韩视频免费直播| 亚洲一区二区3| www.日韩在线| 久久久久久久久伊人| 日韩精品一区第一页| 一本色道久久综合亚洲aⅴ蜜桃| 久久精子c满五个校花| 免费成人在线网站| 欧美日韩卡一卡二| 亚洲另类一区二区| 成人av午夜电影| 久久久久久免费毛片精品| 午夜精品在线视频一区| 蜜桃av一区二区三区电影| 色综合欧美在线| 久久久久久一二三区| 激情深爱一区二区| 精品污污网站免费看| 国产网红主播福利一区二区| 亚洲欧洲无码一区二区三区| 国产一区二区三区四区五区美女 | 国产麻豆精品theporn| 欧美精品一二三四| 亚洲私人影院在线观看| 国内成人自拍视频| 欧美写真视频网站| 亚洲综合激情小说| 91在线视频免费91| 国产欧美视频在线观看| 日韩激情在线观看| 欧洲国内综合视频| 日韩理论片在线| 99久久久久久| 欧美精品一区二区三| 日韩高清不卡一区| 欧美亚洲国产bt| 亚洲精品菠萝久久久久久久| 一本一本大道香蕉久在线精品| 久久久不卡网国产精品二区| 久久国内精品视频| 日韩三级伦理片妻子的秘密按摩| 久久国产精品免费| 日韩欧美国产系列| 日韩激情视频网站| 欧美精品 国产精品| 久久不见久久见免费视频7| 日韩视频中午一区| 日本成人在线视频网站| 欧美午夜精品久久久久久孕妇| 午夜精品一区二区三区三上悠亚| 欧美日韩一区小说| 午夜激情综合网| 日韩一区二区麻豆国产| 美女视频黄 久久| 日韩免费成人网| 国产一区二区三区日韩| 亚洲欧洲色图综合| 91黄色小视频| 日日欢夜夜爽一区| 精品久久人人做人人爽| 国产在线播精品第三| 久久一区二区三区国产精品|