精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

鴻蒙輕內核A核源碼分析系列二:數據結構-位圖操作

開發 前端
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[405939]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

在進一步分析之前,本文我們先來熟悉下OpenHarmony鴻蒙輕內核提供的位操作模塊,在互斥鎖等模塊對位操作有使用。位操作是指對二進制數的bit位進行操作。程序可以設置某一變量為狀態字,狀態字中的每一bit位(標志位)可以具有自定義的含義。

1 位操作的宏定義

位操作模塊提供對32位無符號整數數值的bit位進行操作,bit位取值為0-31,以0開始計算,從左向右,第0位,第1位。。。第31位等。⑴處定義的宏OS_BITMAP_MASK如下,也就是十進制31。如果傳入的比特位pos大于31,會通過邏輯與運算截斷(pos & OS_BITMAP_MASK),只取低5位,確保不會大于31,避免溢出。⑵處定義的位圖掩碼全是1。

  1. ⑴  #define OS_BITMAP_MASK 0x1FU 
  2. ⑵  #define OS_BITMAP_WORD_MASK ~0UL 

 在文件kernel\include\los_bitmap.h中定義了常用的位操作相關的宏。宏BITMAP_WORD根據參數x計算出需要操作第幾個狀態字,由于計算狀態字的使用的是UINTPTR,狀態字可以是32位、也可以是64位。后文,我們默認以32位進行講解。宏BITMAP_FIRST_WORD_MASK傳入的參數是位操作的開始bit位數,用于計算需要進行位操作的掩碼,從開始位全部是1,宏BITMAP_LAST_WORD_MASK傳入的參數是位操作的結束bit位數,用于計算需要進行位操作的掩碼,結束位之前全部是1。宏BITMAP_NUM_WORDS傳入位數,計算狀態字的數量。

  1. #define _ONE(x) (1 + ((x) - (x))) 
  2.  #define BIT(n)  (1U << (n)) 
  3.  #define BIT_GET(x, bit) ((x) & (_ONE(x) << (bit))) 
  4.  #define BIT_SHIFT(x, bit) (((x) >> (bit)) & 1) 
  5.  #define BITS_GET(x, high, low) ((x) & (((_ONE(x) << ((high) + 1)) - 1) & ~((_ONE(x) << (low)) - 1))) 
  6.  #define BITS_SHIFT(x, high, low) (((x) >> (low)) & ((_ONE(x) << ((high) - (low) + 1)) - 1)) 
  7.  #define BIT_SET(x, bit) (((x) & (_ONE(x) << (bit))) ? 1 : 0) 
  8.  #define BITMAP_BITS_PER_WORD (sizeof(UINTPTR) * 8) 
  9.  #define BITMAP_NUM_WORDS(x) (((x) + BITMAP_BITS_PER_WORD - 1) / BITMAP_BITS_PER_WORD) 
  10.  #define BITMAP_WORD(x) ((x) / BITMAP_BITS_PER_WORD) 
  11.  #define BITMAP_BIT_IN_WORD(x) ((x) & (BITMAP_BITS_PER_WORD - 1)) 
  12.  #define BITMAP_FIRST_WORD_MASK(start) (~0UL << ((start) % BITMAP_BITS_PER_WORD)) 
  13.  #define BITMAP_LAST_WORD_MASK(nbits) \ 
  14.      (((nbits) % BITMAP_BITS_PER_WORD) ? (1UL << ((nbits) % BITMAP_BITS_PER_WORD)) - 1 : ~0UL) 
  15.  #define BITMAP_BITS_PER_INT (sizeof(INTPTR) * 8) 
  16.  #define BITMAP_BIT_IN_INT(x) ((x) & (BITMAP_BITS_PER_INT - 1)) 
  17.  #define BITMAP_INT(x) ((x) / BITMAP_BITS_PER_INT) 
  18.  #define BIT_MASK(x) (((x) >= sizeof(UINTPTR) * 8) ? (0UL - 1) : ((1UL << (x)) - 1)) 

2 位操作常用功能

OpenHarmony鴻蒙輕內核的位操作模塊提供標志位的置1和清0操作,可以改變標志位的內容,同時還提供獲取狀態字中標志位為1的最高位和最低位的功能。用戶也可以對系統的寄存器進行位操作。位操作提供了7個API,進行置1、清0、獲取為1的最高、最低位等操作,如下:

下面,我們剖析下位操作的源代碼。

2.1 LOS_BitmapSet()對狀態字的某一標志位進行置1操作

對狀態字的某一標志位進行置1操作。我們先看看傳入的參數,需要的2個參數分別是:需要改變bit位內容的狀態字UINT32 *bitmap,需要改變的bit位位數UINT16 pos。

代碼很簡單,首先進行基礎的校驗,如果狀態字為空,則返回。然后計算pos & OS_BITMAP_MASK,只取二進制的低5位,最大位值為31,避免左移的時候發生溢出。1U << (pos & OS_BITMAP_MASK)就是需要改變內容的狀態字的bit位,通過按位或運算設置狀態字UINT32 *bitmap的指定bit位的內容為1。

  1. VOID LOS_BitmapSet(UINT32 *bitmap, UINT16 pos) 
  2.     if (bitmap == NULL) { 
  3.         return
  4.     } 
  5.  
  6.     *bitmap |= 1U << (pos & OS_BITMAP_MASK); 

2.2 LOS_BitmapClr()對狀態字的某一標志位進行清0操作

對狀態字的某一標志位進行清0操作,代碼和置1操作對應,比較簡單,~(1U << (pos & OS_BITMAP_MASK))表示需要改變內容的狀態字的bit位為0,其余位為1,然后通過按位與運算設置狀態字UINT32 *bitmap的指定bit位的內容為0。

  1. VOID LOS_BitmapClr(UINT32 *bitmap, UINT16 pos) 
  2.     if (bitmap == NULL) { 
  3.         return
  4.     } 
  5.  
  6.     *bitmap &= ~(1U << (pos & OS_BITMAP_MASK)); 

2.3 LOS_HighBitGet()獲取狀態字中為1的最高位

代碼中CLZ(bitmap)是宏,展開為(__builtin_clz(bitmap)),這是編譯器內置的高效位運算的庫函數,clz是count leading zeros的縮寫,就是統計二進制數值中高位區開頭的全是0的數目。使用OS_BITMAP_MASK減去該值,結果就是狀態字中的1的最高位。

  1. UINT16 LOS_HighBitGet(UINT32 bitmap) 
  2.     if (bitmap == 0) { 
  3.         return LOS_INVALID_BIT_INDEX; 
  4.     } 
  5.  
  6.     return (OS_BITMAP_MASK - CLZ(bitmap)); 

2.4 LOS_LowBitGet()獲取狀態字中為1的最低位

代碼其中CTZ(bitmap)是宏,展開為(__builtin_ctz(value)),這是編譯器內置的高效位運算的庫函數,ctz是count trailing zeros的縮寫,就是統計二進制數值中低位區結尾的全是0的數目,該結果就是狀態字中的1的最低位。

  1. UINT16 LOS_LowBitGet(UINT32 bitmap) 
  2.     if (bitmap == 0) { 
  3.         return LOS_INVALID_BIT_INDEX; 
  4.     } 
  5.  
  6.     return CTZ(bitmap); 

2.5 LOS_BitmapSetNBits()對狀態字的連續標志位進行置1操作

可以使用LOS_BitmapSetNBits()函數對狀態字的連續比特位進行置1操作,第一個參數是需要改變bit位內容的狀態字UINT32 *bitmap,第二個參數是需要置1的bit位開始數start,第三個參數是需要置1的數量numsSet。由于bit位開始數start并沒有限制在[0,31],所以實際上設置的可能是UINT32 *bitmap狀態字后面的狀態字,需要根據業務實際情況進行設置,避免覆寫其他內存。同樣,需要置1的數量numsSet也可能跨多個狀態字。如圖所示:

我們看下代碼,

⑴處計算出需要操作的狀態字,其中BITMAP_WORD(start)計算相對狀態字bitmap需要偏移的數量,如果start處于區間[0,31],BITMAP_WORD(start)等于0,操作的就是狀態字bitmap。如果start處于區間[32,63],BITMAP_WORD(start)等于1,操作的就是狀態字bitmap后面的第一個狀態字,以此類推。

⑵處size可以和bit位開始數start結合來理解,size就是需要置1的bit位結束位數。

⑶處需要置1操作的bit位的位數。

⑷是對應需要置1操作的bit位的掩碼。

⑸處如果條件成立,說明需要置1操作需要跨多個狀態字進行操作,代碼會一個狀態字處理完畢,再去處理下一個狀態字。

⑹處把當前狀態字的相應的bit位進行置1操作,然后執行⑺把剩余需要置1的位數減去已經置1的位數。

⑻處更新bitsToSet和maskToSet,然后指針p指向下一個狀態字。

⑼處如果需要置1的位數大于0,并且此時已經可以在一個狀態字內完成操作,執行⑽處計算需要置1操作的掩碼,從bit開始位到結束位需要進行置1。

⑾處代碼執行置1操作,完成對狀態字的連續標志位進行置1操作。

  1. VOID LOS_BitmapSetNBits(UINTPTR *bitmap, UINT32 start, UINT32 numsSet) 
  2. ⑴  UINTPTR *p = bitmap + BITMAP_WORD(start); 
  3. ⑵  const UINT32 size = start + numsSet; 
  4. ⑶  UINT16 bitsToSet = BITMAP_BITS_PER_WORD - (start % BITMAP_BITS_PER_WORD); 
  5. ⑷  UINTPTR maskToSet = BITMAP_FIRST_WORD_MASK(start); 
  6.  
  7. ⑸  while (numsSet > bitsToSet) { 
  8. ⑹      *p |= maskToSet; 
  9. ⑺      numsSet -= bitsToSet; 
  10. ⑻      bitsToSet = BITMAP_BITS_PER_WORD; 
  11.         maskToSet = OS_BITMAP_WORD_MASK; 
  12.         p++; 
  13.     } 
  14. ⑼  if (numsSet) { 
  15. ⑽      maskToSet &= BITMAP_LAST_WORD_MASK(size); 
  16.         *p |= maskToSet; 
  17.     } 

2.6 LOS_BitmapClrNBits()對狀態字的連續標志位進行清0操作

可以使用LOS_BitmapClrNBits()函數對狀態字的連續比特位進行清0操作,第一個參數是需要改變bit位內容的狀態字UINT32 *bitmap,第二個參數是需要清0的bit位開始數start,第三個參數是需要清0的數量numsClear。該函數是函數LOS_BitmapSetNBits()的反向操作,代碼解釋可以參考函數LOS_BitmapSetNBits()。

  1. VOID LOS_BitmapClrNBits(UINTPTR *bitmap, UINT32 start, UINT32 numsClear) 
  2.     UINTPTR *p = bitmap + BITMAP_WORD(start); 
  3.     const UINT32 size = start + numsClear; 
  4.     UINT16 bitsToClear = BITMAP_BITS_PER_WORD - (start % BITMAP_BITS_PER_WORD); 
  5.     UINTPTR maskToClear = BITMAP_FIRST_WORD_MASK(start); 
  6.  
  7.     while (numsClear >= bitsToClear) { 
  8.         *p &= ~maskToClear; 
  9.         numsClear -= bitsToClear; 
  10.         bitsToClear = BITMAP_BITS_PER_WORD; 
  11.         maskToClear = OS_BITMAP_WORD_MASK; 
  12.         p++; 
  13.     } 
  14.     if (numsClear) { 
  15.         maskToClear &= BITMAP_LAST_WORD_MASK(size); 
  16.         *p &= ~maskToClear; 
  17.     } 

2.7 LOS_BitmapFfz()獲取從最低有效位開始的第一個0的bit位

可以使用LOS_BitmapFfz()函數獲取從最低有效位開始的第一個0的bit位位數,第一個參數是需要改變bit位內容的狀態字UINT32 *bitmap,第二個參數numBits表示最大的位數,對返回值進行限制,需要在指定的位數內找到符合條件的位數,否則返回-1。

在看函數代碼之前,先了解下Ffz()函數,如下:調用內嵌函數__builtin_ffsl()可以獲取一個unsigned long類型數字的二進制形式的從左開始的第一個1的位數,這個位數從1開始計數。比如對于二進制數字0110,該函數會返回2。在下面的函數中,給函數__builtin_ffsl()傳入的參數進行了取反,并減去了1,所以Ffz()函數返回一個數字從左開始的第一個0的位數,這個位數從0開始計數。

  1. /* find first zero bit starting from LSB */ 
  2. STATIC INLINE UINT16 Ffz(UINTPTR x) 
  3.     return __builtin_ffsl(~x) - 1; 

我們接著看下函數LOS_BitmapFfz()的代碼。⑴處根據位數numBits計算出對應的狀態字的數量,然后依次循環每一個狀態字,⑵處如果狀態字全為1,則繼續循環,否則執行⑶。執行到⑶說明,,前面有i個狀態字的各個位全為1。i * BITMAP_BITS_PER_WORD + Ffz(bitmap[i])就表示各個狀態字的二進制位中,從左到右第一個0的位置。⑷處如果獲取的位數小于第二個參數,則返回獲取的位數,否則返回-1。如下圖所示:

源代碼如下:

  1. INT32 LOS_BitmapFfz(UINTPTR *bitmap, UINT32 numBits) 
  2.     INT32 bit, i; 
  3.  
  4. ⑴  for (i = 0; i < BITMAP_NUM_WORDS(numBits); i++) { 
  5. ⑵      if (bitmap[i] == OS_BITMAP_WORD_MASK) { 
  6.             continue
  7.         } 
  8. ⑶      bit = i * BITMAP_BITS_PER_WORD + Ffz(bitmap[i]); 
  9. ⑷      if (bit < numBits) { 
  10.             return bit
  11.         } 
  12.         return -1; 
  13.     } 
  14.     return -1; 

小結

本文帶領大家一起剖析了鴻蒙輕內核的位操作模塊的源代碼。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-05-12 09:45:20

鴻蒙HarmonyOS應用

2021-05-10 15:05:56

鴻蒙HarmonyOS應用

2021-04-30 15:06:34

鴻蒙HarmonyOS應用

2021-11-08 15:06:15

鴻蒙HarmonyOS應用

2022-03-11 20:23:14

鴻蒙源碼分析進程管理

2022-03-03 18:28:28

Harmony進程任務管理模塊

2022-04-13 11:02:12

鴻蒙事件模塊事件Event

2022-01-10 15:31:44

鴻蒙HarmonyOS應用

2022-01-12 10:50:23

鴻蒙HarmonyOS應用

2021-06-04 09:57:49

鴻蒙HarmonyOS應用

2021-11-05 15:00:33

鴻蒙HarmonyOS應用

2021-06-04 14:15:10

鴻蒙HarmonyOS應用

2021-05-17 09:28:59

鴻蒙HarmonyOS應用

2021-05-08 15:14:50

鴻蒙HarmonyOS應用

2022-04-13 11:12:43

鴻蒙輕內核信號量模塊操作系統

2021-10-20 16:08:57

鴻蒙HarmonyOS應用

2021-05-25 09:28:34

鴻蒙HarmonyOS應用

2021-12-01 15:59:22

鴻蒙HarmonyOS應用

2021-05-31 20:30:55

鴻蒙HarmonyOS應用

2022-03-31 16:26:49

鴻蒙源碼分析進程管理
點贊
收藏

51CTO技術棧公眾號

国产精品人成电影在线观看| 在线播放国产一区二区三区| 欧美成人高潮一二区在线看| 天天爱天天干天天操| 免播放器亚洲| 色狠狠久久aa北条麻妃| 日本人妻一区二区三区| 欧美黑人疯狂性受xxxxx野外| 欧美国产综合色视频| 91亚洲一区精品| 亚洲永久精品在线观看| 天天av综合| 亚洲韩国日本中文字幕| 中文字幕资源在线观看| 樱花草涩涩www在线播放| 中文字幕一区二区三区不卡 | 中文永久免费观看| 狠狠综合久久av一区二区老牛| 亚洲天堂网在线观看| 992tv人人草| 日韩成人高清| 精品久久久久久久久国产字幕| 影音先锋欧美资源| 青青青草网站免费视频在线观看| 国产一区二区三区精品视频| 全球成人中文在线| 久久久精品视频在线| 欧美午夜精彩| 亚洲美女性生活视频| 91成人在线观看喷潮蘑菇| 欧美啪啪网站| 在线中文字幕不卡| 亚洲午夜无码av毛片久久| dy888亚洲精品一区二区三区| 久久久久久99久久久精品网站| 国产精品免费区二区三区观看| 国产又黄又粗又硬| 日本中文字幕不卡| 欧日韩在线观看| 日韩精品无码一区二区| 在线观看的日韩av| 美女福利精品视频| 午夜精品福利在线视频| 久久影视一区| 精品国偷自产在线视频99| 亚欧精品视频一区二区三区| 国产99亚洲| 亚洲久久久久久久久久| 中文字幕狠狠干| 天堂俺去俺来也www久久婷婷| 亚洲黄色av女优在线观看| youjizz.com国产| 国产精品视频3p| 亚洲成av人片在线观看香蕉| 苍井空张开腿实干12次| 亚洲视频一起| 精品国产欧美一区二区| 2一3sex性hd| 亚欧洲精品视频在线观看| 日韩电影第一页| 中文字幕av网址| 国产一区不卡| 日韩中文在线视频| 欧美第一页在线观看| 国产综合精品| 性日韩欧美在线视频| 天堂网一区二区三区| 亚洲资源av| 国产精品久久久久久久午夜| 亚洲天堂一二三| 国产一区在线视频| 高清视频在线观看一区| 欧美视频一二区| 久久综合丝袜日本网| 日韩高清在线播放| 九色porny在线| 亚洲一区二区三区精品在线| 精品久久久久久久久久中文字幕| 日本久久免费| 制服丝袜亚洲播放| 娇妻高潮浓精白浆xxⅹ| 先锋影音国产精品| 日韩一区二区av| 九九热只有精品| 六月丁香综合| 成人乱色短篇合集| 亚洲欧美综合在线观看| 中文字幕乱码日本亚洲一区二区| 无码人妻精品一区二区蜜桃百度| 草草在线视频| 欧美喷水一区二区| 日本护士做爰视频| 日韩成人三级| 97久久超碰福利国产精品…| 中文字幕精品一区二区精| 国产成人av电影在线观看| 久久久影院一区二区三区| 蜜芽在线免费观看| 韩曰欧美视频免费观看| 99精品视频国产| 免费看av成人| 久久久久成人精品| 丰满熟女人妻一区二区三| 国产成a人无v码亚洲福利| 天天人人精品| 美女露胸视频在线观看| 日韩一区二区在线观看视频播放| 国产精品揄拍100视频| 欧美a级片网站| 国产精品爱啪在线线免费观看| 午夜精品久久久久久久爽 | 日本成人在线不卡视频| 国产日本一区二区三区| 欧美成年黄网站色视频| 91豆麻精品91久久久久久| 四虎精品一区二区| 亚洲一区欧美| 国产欧美日韩专区发布| 欧美孕妇性xxxⅹ精品hd| 一区二区三区波多野结衣在线观看| 熟女人妇 成熟妇女系列视频| 777久久精品| 久久久精品久久久| 中文字幕人妻丝袜乱一区三区| 91麻豆国产福利精品| 欧美国产综合在线| 免费欧美网站| 精品国产一区二区三区四区在线观看 | 成人激情免费在线| 超碰免费在线| 91国偷自产一区二区三区观看| 性色av蜜臀av浪潮av老女人| 欧美一区二区三区久久精品茉莉花| 国产精品久久久久77777| 欧美一区二区视频| 婷婷成人激情在线网| 精品1卡二卡三卡四卡老狼| 欧美成人一品| 亚洲一区二区三区香蕉| 国产原创精品视频| 91精品国产综合久久久久久久| 国产wwwwxxxx| 精品综合久久久久久8888| 一区二区精品在线| 91亚洲精品在看在线观看高清| 日韩专区在线观看| 96亚洲精品久久久蜜桃| 国产精品免费视频观看| 中文av一区二区三区| 青青一区二区三区| 国产欧美韩国高清| 看黄网站在线观看| 欧美一区二区免费观在线| 老妇女50岁三级| 国产91精品入口| av免费观看大全| 欧洲vs亚洲vs国产| 国产aⅴ夜夜欢一区二区三区 | 久久久久久欧美| 女人18毛片一区二区三区| 亚洲h精品动漫在线观看| 免费的av网站| 日韩—二三区免费观看av| 色之综合天天综合色天天棕色| 国产精品久久乐| 欧美精品在线第一页| 亚洲第一视频在线播放| 欧美色道久久88综合亚洲精品| 成人午夜福利一区二区| 老司机免费视频一区二区| 欧美一级特黄aaaaaa在线看片| 日韩精品一区二区三区中文| 韩国精品久久久999| 国产有码在线| 91精品国产一区二区| 日本一二三区不卡| 国产欧美一区二区精品久导航| 午夜免费福利视频在线观看| 欧美极品一区二区三区| 久久久久高清| 国产激情久久| 欧美激情久久久久| 丁香花免费高清完整在线播放| 欧美日韩国产丝袜另类| 亚洲精品国产精品国自| 国产91在线看| 国产情侣av自拍| 中文在线播放一区二区| 久久久久久国产精品mv| 久久女人天堂| 91精品国产高清自在线 | 精品在线播放| 91成人理论电影| 奇米777日韩| 欧美激情第6页| 岛国在线大片| 亚洲成人久久电影| 91福利在线观看视频| 欧美午夜无遮挡| 欧美黄片一区二区三区| 久久精品人人做人人爽人人| 超碰人人cao| 男人的j进女人的j一区| 霍思燕三级露全乳照| 久久精品国产68国产精品亚洲| 精品蜜桃一区二区三区| 91精品亚洲一区在线观看| 97国产在线观看| 国产在线激情| 在线成人激情视频| 亚洲 另类 春色 国产| 91精品国产综合久久久久久久久久| 亚洲欧美一区二区三区在线观看| 一区二区在线观看免费| 婷婷综合在线视频| 久久久久久久久岛国免费| 日本一区二区在线观看视频| 国产制服丝袜一区| 91极品视频在线观看| 香蕉精品999视频一区二区| 青草视频在线观看视频| 影视亚洲一区二区三区| 亚洲无玛一区| 成人黄色小视频| 欧美一区观看| 免费观看久久av| 九九九九九九精品| 超碰成人在线免费| 99re国产视频| 欧美一区在线观看视频| 亚洲japanese制服美女| 欧美视频精品| 国产色综合天天综合网| 91亚洲精品| 国产精品美女无圣光视频| 色老太综合网| 国产成人亚洲综合| 自拍偷拍欧美视频| 日本一区二区在线免费播放| 午夜伦理福利在线| 欧美亚洲激情视频| 英国三级经典在线观看| 欧美有码在线视频| 欧美xxx视频| 国产精品久久久久久久久久久久| 3d欧美精品动漫xxxx无尽| 日本久久精品视频| 免费欧美电影| 国产精品美女久久久免费| 日韩欧美2区| 国产日本欧美在线观看| www一区二区三区| 91免费视频网站| 视频二区欧美| 国产精品美女xx| 日韩人体视频| 日本一区二区在线视频观看| 欧美色图一区| 樱花www成人免费视频| 亚洲mv大片欧洲mv大片| www.在线观看av| 国产欧美一区二区三区国产幕精品| 91国视频在线| 日韩福利电影在线| 亚洲欧美日韩一二三区| 国产a区久久久| 欧美色图亚洲激情| 国产精品超碰97尤物18| 精品无码免费视频| 福利一区福利二区微拍刺激| 在线视频精品免费| 欧美一区二区三区影视| 人妻少妇精品无码专区| 亚洲最新av在线网站| 成人短视频在线观看| 97香蕉超级碰碰久久免费的优势| 成人开心激情| 亚洲综合av影视| 少妇精品导航| 精品少妇人妻av一区二区| 亚洲国产91| 91精品无人成人www| 丁香天五香天堂综合| 中文字幕第20页| 亚洲免费伊人电影| 日韩美一区二区| 日韩西西人体444www| 精品影院一区| 欧美激情精品久久久久久大尺度| jizz内谢中国亚洲jizz| 成人春色激情网| 美女视频亚洲色图| 亚洲乱码一区二区三区| 韩国亚洲精品| 国产成人综合一区| 国产一区免费电影| 亚洲熟妇一区二区三区| 亚洲精品欧美二区三区中文字幕| 欧美成欧美va| 欧美日韩在线播放| 污视频在线免费观看| 久久精品99久久香蕉国产色戒| 九九精品调教| 成人在线一区二区| 沈樵精品国产成av片| 97干在线视频| 国产一区二区影院| 美国黑人一级大黄| 色综合久久久久综合| 亚洲女同志亚洲女同女播放| 中文字幕av一区| 一二三四视频在线中文| 草莓视频一区| 亚洲最新色图| 亚洲国产高清av| 久久精品综合网| 日本道在线观看| 精品三级在线看| 成人黄色网址| 国产精品一区二区在线| 神马电影久久| 日韩精品一区二区三区色欲av| 成人精品一区二区三区四区| 亚洲不卡在线播放| 欧美日韩国产免费一区二区 | 欧美成人免费va影院高清| 成人在线观看免费播放| 日本a级片久久久| 亚洲综合二区| 右手影院亚洲欧美| 精品日本高清在线播放| 欧美 日韩 国产 在线| 欧美大片在线看免费观看| avtt久久| 色哟哟免费网站| 国产一区二区三区精品欧美日韩一区二区三区 | 日韩av不卡一区| 毛片在线播放视频| 成人免费高清在线| 日本五十路女优| 亚洲精品电影在线| 欧美freesex黑人又粗又大| 国内一区二区三区在线视频| 国产欧美综合一区二区三区| 少妇精品一区二区| 色综合一个色综合| 国产一区精品| 国产精品视频地址| 成人影院在线| 在线播放免费视频| 亚洲精品视频在线看| 亚洲成人久久精品| 性欧美在线看片a免费观看| 日韩免费电影在线观看| 久久久久久久激情| 国产欧美一区二区在线观看| 欧美成人一区二区视频| 日韩综合中文字幕| 精品一区二区三区免费看| 国产又粗又猛又爽又黄的网站| 成人动漫一区二区在线| 黄色片中文字幕| 中文字幕亚洲激情| 999精品视频在线观看| 国产精品三级一区二区| 99riav一区二区三区| 无码免费一区二区三区| 久久激情视频久久| 粉嫩久久久久久久极品| 男人透女人免费视频| 国产精品乱码一区二区三区软件| 国产又粗又大又爽视频| 欧美极度另类性三渗透| 精品在线手机视频| 性色av浪潮av| 日本韩国视频一区二区| 成人日韩欧美| 免费国产一区| 国产精品一色哟哟哟| 免费黄色网址在线| 日韩亚洲精品视频| 日韩激情网站| 国产精欧美一区二区三区白种人| 亚洲一区在线看| 国产三级视频在线播放线观看| 91在线精品播放| 久久av最新网址| 青娱乐国产盛宴| 亚洲天堂视频在线观看| 91夜夜蜜桃臀一区二区三区| 欧美精品第三页| 亚洲激情中文1区| www亚洲人| 久久福利电影| 国产一区二区伦理片| 男人天堂视频网| 国内精品小视频| 国产高清一区| 成人性生交大免费看| 欧美刺激午夜性久久久久久久|