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

Linux內存管理--高端內存映射與非連續內存分配

系統 Linux
返回頁框線性地址的頁分配函數對于高端內存是無效的,因為高端內存不會自動的映射到某個線性地址。內核可以采用三種方式來使用高端物理內存:永久內核映射,臨時內核映射和非連續內存分配。

對于32位的機器來說,高于896的物理內存在內核中屬于高端內存,并沒有對內存做一一的映射,系統保留了128M的線性地址空間來臨時映射這些高于896M的高端物理內存,該線性地址為3G+768m~4G。返回頁框線性地址的頁分配函數對于高端內存是無效的,因為高端內存不會自動的映射到某個線性地址。例如__get_free_pages(GFP_HIGH_MEM,0)函數分配高端內存頁框時,返回的是NULL;內核可以采用三種方式來使用高端物理內存:***內核映射,臨時內核映射和非連續內存分配。建立***內核映射可能會阻塞當前進程的執行,這發生在沒有高端內存沒有空閑的頁表項來做映射的情況下,因此在中斷等不能阻塞的代碼中不要使用***內核映射。臨時內核映射不會發生阻塞的情況,但必須保證沒有其他的內核路徑在使用同樣的臨時內核映射。


一、***內存映射

***內核映射使用的是內核主頁表中的一個專門的頁表,其地址存放在pkmap_page_table中,頁表的頁表項由宏LAST_PKMAP產生,頁表中包含512或者1024項。

該頁表映射的線性地址從PKMAP_BASE開始,pkmap_count數組包含了LAST_PKMAP個計數器,pkmap_page_table頁表中的每項都有對應一個計數值:

計數器為0:對應的頁表項是空閑可用的。

計數器為1:對應的頁表項沒有映射任何高端內存,但是它不能夠使用,因為自從***一次使用以來,其相應的TLB尚未被刷新。

計數器為n:有多個內核成分使用該頁表項所對應的頁框。

源碼分析:

  1. void fastcall *kmap_high(struct page *page) 
  2. unsigned long vaddr; 
  3.  
  4.  
  5. spin_lock(&kmap_lock); 
  6. //page->virtual記錄了頁框對應的線性地址 
  7. vaddr = (unsigned long)page_address(page); 
  8. //若頁框未被映射過,分配新的空閑頁表項 
  9. if (!vaddr) 
  10. vaddr = map_new_virtual(page); 
  11. //若是剛分配到了空閑頁表項的話,在map_new_virtual()中其count 
  12. //值被設置為了1,在這里再次++ 
  13. pkmap_count[PKMAP_NR(vaddr)]++; 
  14. BUG_ON(pkmap_count[PKMAP_NR(vaddr)] < 2); 
  15. spin_unlock(&kmap_lock); 
  16. return (void*) vaddr; 
  17. static inline unsigned long map_new_virtual(struct page *page) 
  18. unsigned long vaddr; 
  19. int count; 
  20.  
  21.  
  22. start: 
  23. count = LAST_PKMAP; 
  24. //尋找一個空的頁表項 
  25. for (;;) { 
  26. //從上一次找到的空閑頁表項的位置開始尋找 
  27. last_pkmap_nr = (last_pkmap_nr + 1) & LAST_PKMAP_MASK; 
  28. if (!last_pkmap_nr) { 
  29. flush_all_zero_pkmaps(); 
  30. count = LAST_PKMAP; 
  31. //找到一個未用的空閑頁表項 
  32. if (!pkmap_count[last_pkmap_nr]) 
  33. break;  /* Found a usable entry */ 
  34. //count變為0的話,意味著當前沒有空閑的頁表項 
  35. if (--count) 
  36. continue
  37. //沒有找到空閑的頁表項,將當前進程加入到等待隊列,進行調度,直到 
  38. //有空閑的頁表項或者該頁面被別人映射 
  39. DECLARE_WAITQUEUE(wait, current); 
  40.  
  41.  
  42. __set_current_state(TASK_UNINTERRUPTIBLE); 
  43. add_wait_queue(&pkmap_map_wait, &wait); 
  44. spin_unlock(&kmap_lock); 
  45. schedule(); 
  46. remove_wait_queue(&pkmap_map_wait, &wait); 
  47. spin_lock(&kmap_lock); 
  48. //有可能在該進程睡眠期間,有其它進程對該頁面做了內存映射 
  49. if (page_address(page)) 
  50. return (unsigned long)page_address(page); 
  51.  
  52.  
  53. /* Re-start */ 
  54. goto start; 
  55. //得到對應頁表項對應的線性地址 
  56. vaddr = PKMAP_ADDR(last_pkmap_nr); 
  57. //設置對應的頁表項 
  58. set_pte_at(&init_mm, vaddr, 
  59.   &(pkmap_page_table[last_pkmap_nr]), mk_pte(page, kmap_prot)); 
  60. //設置***內存映射數組的值 
  61. pkmap_count[last_pkmap_nr] = 1; 
  62. //將page->virtual的值設為vaddr,ok 
  63. set_page_address(page, (void *)vaddr); 
  64.  
  65.  
  66. return vaddr; 

二、臨時內核映射

臨時內核映射比較簡單,在內核中,為每個cpu都保存了一組頁表項,每個頁表項由一個特定的內核成分使用,需要注意的是,不同的內核控制路徑不應該同時使用一個頁表項,這樣的話,會使后一個內核控制路徑將前一個內核控制路徑設置頁表項給沖掉。

建立臨時內核映射使用kmap_atomic()函數。

  1. void *__kmap_atomic(struct page *page, enum km_type type) 
  2. enum fixed_addresses idx; 
  3. unsigned long vaddr; 
  4.  
  5.  
  6. //禁止內核搶占,以預防不同內核控制路徑使用同一頁表項 
  7. inc_preempt_count(); 
  8. //非高端內存,不用進行高端內存映射 
  9. if (!PageHighMem(page)) 
  10. return page_address(page); 
  11. //得到使用的頁表項的下表索引 
  12. idx = type + KM_TYPE_NR*smp_processor_id(); 
  13. //得到相關頁表項的線性地址 
  14. vaddr = __fix_to_virt(FIX_KMAP_BEGIN + idx); 
  15. //設置對應的頁表項 
  16. set_pte(kmap_pte-idx, mk_pte(page, kmap_prot)); 
  17. local_flush_tlb_one((unsigned long)vaddr); 
  18.  
  19.  
  20. return (void*) vaddr; 

三、非連續內存分配

下圖顯示了如何使用高于0xc0000000線性地址的線性地址空間:

  1. 內存區的開始部分包含的是對前896MB的RAM進行映射的線性地址,直接映射的物理內存的末尾的線性地址保存在high_memory變量中。
  2. 內存區的結尾位置包含的是固定映射的線性地址。
  3. 從PKMAP_BASE開始,是用于高端內存***映射的線性地址。
  4. 其余的線性地址用于非連續內存區,在物理內存映射和***個內存區間有一個8M的安全區,用于捕捉對內存的越界訪問,同樣道理,插入其它4KB大小的內存區來隔離非連續內存區。

非連續內存區描述符數據結構:

  1. struct vm_struct { 
  2. void     *addr;//內存區***個內存單元的線性地址 
  3. unsigned long    size;//內存區的大小加上4K,4K是用來檢查越界的內存 
  4. unsigned long     flags;//非連續內存的類型,VM_ALLOC表示使用vmalloc分配的內存,VM_MAP表示使用vmap分配的內存, 
  5.      //VM_IOREMAP表示用ioremap()分配的內存 
  6. struct page  **pages;//非連續內存的的物理頁數組 
  7. unsigned int     nr_pages;//非連續內存的物理頁的個數 
  8. unsigned long    phys_addr; 
  9. struct vm_struct    *next;//用來將各個非連續內存描述符串聯起來 
  10. }; 

1、分配非連續的內存區

分配函數主要是vmalloc(),vmap(),vmalloc()會去調用__vmalloc_node()函數:

  1. void *__vmalloc_node(unsigned long size, gfp_t gfp_mask, pgprot_t prot, 
  2. int node) 
  3. struct vm_struct *area; 
  4. //size要對其為4K的整數倍,因為非連續內存區域是將各個物理頁進行映射 
  5. size = PAGE_ALIGN(size); 
  6. if (!size || (size >> PAGE_SHIFT) > num_physpages) 
  7. return NULL; 
  8. //找到一塊空閑的線性地址區域,用來映射該非連續內存 
  9. area = get_vm_area_node(size, VM_ALLOC, node); 
  10. if (!area) 
  11. return NULL; 
  12.  
  13.  
  14. return __vmalloc_area_node(area, gfp_mask, prot, node); 
  15.  
  16.  
  17. void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask, 
  18. pgprot_t prot, int node) 
  19. struct page **pages; 
  20. unsigned int nr_pages, array_size, i; 
  21. //計算要映射的物理頁數 
  22. nr_pages = (area->size - PAGE_SIZE) >> PAGE_SHIFT; 
  23. //計算vm_struct中pages數組的數組元素個數 
  24. array_size = (nr_pages * sizeof(struct page *)); 
  25. //記錄下物理頁面的數目 
  26. area->nr_pages = nr_pages; 
  27. //為vm_struct中的pages數組分配內存 
  28. if (array_size > PAGE_SIZE) { 
  29. pages = __vmalloc_node(array_size, gfp_mask, PAGE_KERNEL, node); 
  30. area->flags |= VM_VPAGES; 
  31. else 
  32. pages = kmalloc_node(array_size, (gfp_mask & ~__GFP_HIGHMEM), node); 
  33. area->pages = pages; 
  34. if (!area->pages) { 
  35. remove_vm_area(area->addr); 
  36. kfree(area); 
  37. return NULL; 
  38. memset(area->pages, 0, array_size); 
  39. //為非連續內存進行頁面的分配,每次分配一個頁面,將其頁框指針記錄在pages數組中 
  40. for (i = 0; i < area->nr_pages; i++) { 
  41. if (node < 0) 
  42. area->pages[i] = alloc_page(gfp_mask); 
  43. else 
  44. area->pages[i] = alloc_pages_node(node, gfp_mask, 0); 
  45. if (unlikely(!area->pages[i])) { 
  46. /* Successfully allocated i pages, free them in __vunmap() */ 
  47. area->nr_pages = i; 
  48. goto fail; 
  49. //將各個物理頁框映射到分配好的空閑線性區里面去 
  50. if (map_vm_area(area, prot, &pages)) 
  51. goto fail; 
  52. return area->addr; 
  53.  
  54.  
  55. fail: 
  56. vfree(area->addr); 
  57. return NULL; 

__vmalloc_node()并不觸及當前進程的頁表,因此當內核態進程訪問非連續內存區時,會發生缺頁異常,因為對應的進程的相應地址對應的頁表項為空。當缺頁異常發生時,異常處理程序會到內核主頁表(init_mm.pgd頁全局目錄)中去查看是否有對應的頁表項,有的話,就會修改當前進程的頁表項,并繼續進程的執行。

2、釋放非連續的內存區

  1. void vfree(void *addr) 
  2. BUG_ON(in_interrupt()); 
  3. __vunmap(addr, 1); 
  4. void __vunmap(void *addr, int deallocate_pages) 
  5. struct vm_struct *area; 
  6.  
  7.  
  8. if (!addr) 
  9. return
  10. //釋放的地址應該是4k的整數倍 
  11. if ((PAGE_SIZE-1) & (unsigned long)addr) { 
  12. printk(KERN_ERR "Trying to vfree() bad address (%p)\n", addr); 
  13. WARN_ON(1); 
  14. return
  15. //移除對應的vm_area數據描述符,解除對各個物理頁面的頁面映射項 
  16. area = remove_vm_area(addr); 
  17. if (unlikely(!area)) { 
  18. printk(KERN_ERR "Trying to vfree() nonexistent vm area (%p)\n"
  19. addr); 
  20. WARN_ON(1); 
  21. return
  22.  
  23.  
  24. debug_check_no_locks_freed(addr, area->size); 
  25. //需要向伙伴系統歸還非連續的物理頁 
  26. if (deallocate_pages) { 
  27. int i; 
  28. //將各個物理頁面歸還給伙伴系統 
  29. for (i = 0; i < area->nr_pages; i++) { 
  30. BUG_ON(!area->pages[i]); 
  31. __free_page(area->pages[i]); 
  32.  
  33.  
  34. if (area->flags & VM_VPAGES) 
  35. vfree(area->pages); 
  36. else 
  37. kfree(area->pages); 
  38.  
  39.  
  40. kfree(area); 
  41. return

與vmalloc()一樣,該函數修改的是主內核頁全局目錄和它的頁表表項,內核永遠不會回收頁全局,頁上級,頁中間目錄,也不會回收頁表,而進程的頁表會指向這些表項。這樣的話,假設一個內核進程訪問已經釋放的非連續內存,最終就會訪問到已經被清空的頁表表項,從而引發缺頁異常,這就是一個錯誤。

責任編輯:奔跑的冰淇淋 來源: ChinaUnix博客
相關推薦

2009-10-19 09:45:06

linux內存存管理

2023-10-18 13:31:00

Linux內存

2018-05-18 09:07:43

Linux內核內存

2013-10-12 11:15:09

Linux運維內存管理

2013-10-11 17:32:18

Linux運維內存管理

2011-12-20 10:43:21

Java

2009-06-03 15:52:34

堆內存棧內存Java內存分配

2025-06-09 04:00:00

2021-07-14 10:00:32

Python內存測量

2018-07-23 09:26:08

iOS內存優化

2021-10-15 08:51:09

Linux內存 Kmalloc

2024-11-07 09:37:46

2009-06-16 11:11:07

Java內存管理Java內存泄漏

2021-04-27 13:56:49

內存.映射地址

2023-09-05 09:36:19

2025-07-01 02:25:00

2022-03-07 10:54:34

內存Linux

2017-05-18 16:30:29

Linux內存管理

2013-03-28 09:55:37

Java對象

2022-08-08 08:31:00

Linux內存管理
點贊
收藏

51CTO技術棧公眾號

日韩欧美一区电影| 国产精品无圣光一区二区| 欧美激情视频在线| 亚洲啪av永久无码精品放毛片 | 日本久久伊人| 亚洲国产精品久久久久婷婷884| 国产一区二区免费电影| 国产美女www| 午夜日韩福利| 亚洲精品日韩在线| 97人人爽人人| 国产精品论坛| 国产精品麻豆一区二区| 国产精品久久久久久久久婷婷| 日本三级一区二区| 91成人影院| 国产亚洲美女久久| 在线播放av网址| 亚洲www啪成人一区二区| 亚洲美女视频在线| 日本a级片久久久| 亚洲国产精品18久久久久久| 日韩制服丝袜av| 久久久久久亚洲精品不卡| 亚洲av无码国产精品麻豆天美| 日韩在线亚洲| 欧美亚洲日本一区| 69堂免费视频| av中文字幕在线观看| 久久久久久电影| 91麻豆国产精品| 久久久久久久久久一级| 亚洲毛片网站| 欧美美女18p| 国产精品麻豆一区| 国产a久久精品一区二区三区| 日韩视频在线一区二区| 在线观看国产福利| www成人在线视频| 午夜久久电影网| 国内自拍中文字幕| 巨大荫蒂视频欧美大片| 国产蜜臀97一区二区三区| 精品在线视频一区二区| 好吊色视频一区二区| 国产高清一区日本| 亚洲一区二区三区在线视频| 国产又粗又大又黄| 奇米777欧美一区二区| 欧美一级电影久久| 黄色一级片一级片| 欧美国产一级| 日韩一二三在线视频播| 中文天堂资源在线| 日韩精品网站| 日韩在线观看免费av| 国产大屁股喷水视频在线观看| 欧美精品一区二区久久| 亚洲三级av在线| 自拍偷拍亚洲天堂| 精品不卡一区| 深夜福利亚洲导航| 麻豆明星ai换脸视频| 一区二区三区网站 | 久久综合毛片| 黄色在线视频观看网站| 国产蜜臀97一区二区三区 | 欧美激情综合| 久久99精品久久久久久青青91| 欧美偷拍第一页| 先锋资源久久| 久久久久久久国产| 三级黄色在线视频| 日韩一区欧美二区| 成人福利视频在线观看| 国产成人毛毛毛片| aaa国产一区| 日本在线高清视频一区| 亚洲欧美视频一区二区| 自拍偷拍国产精品| 六月婷婷在线视频| 日韩在线影院| 在线电影欧美成精品| 精品人妻在线视频| 国产欧美日韩| 成年人精品视频| 精品在线视频观看| 久久亚洲不卡| 91在线观看免费网站| 日本精品999| 久久久www成人免费毛片麻豆| 一本一道久久a久久精品综合| 午夜成年人在线免费视频| 欧美性猛交xxxx乱大交极品| 亚洲少妇久久久| 亚洲精品观看| 亚洲人成网站777色婷婷| 亚洲最大的黄色网址| 亚洲区一区二| 成人免费观看a| 午夜视频在线播放| 1000部国产精品成人观看| 欧美精品一区二区三区三州| av高清一区| 亚洲精品在线观看视频| 亚洲精品成人av久久| 在线电影一区| 成人黄色短视频在线观看| 亚洲va欧美va| 国产精品国产三级国产aⅴ中文 | 欧美妇女性影城| 少妇一级淫片免费放播放| 欧美电影免费播放| 97在线视频免费观看| 亚洲中文字幕在线观看| 9l国产精品久久久久麻豆| 国产又粗又硬又长| 美女福利一区二区三区| 亚洲成人教育av| 日本激情视频一区二区三区| 国产农村妇女精品一二区| 亚洲一区精品电影| 1区2区3区在线观看| 天天综合色天天综合| 在线免费看污网站| 欧洲grand老妇人| 欧美一级片久久久久久久| 性猛交富婆╳xxx乱大交天津 | 欧美精品一区二区三| 亚洲人做受高潮| 日韩二区在线观看| 免费看污久久久| 蜜桃av.网站在线观看| 欧美一级久久久久久久大片| 99久久精品久久亚洲精品| 久久久久国产精品一区三寸| 国产欧美在线一区二区| 国产理论电影在线| 欧美一区永久视频免费观看| 久久久久麻豆v国产| 日韩av中文字幕一区二区三区| 久久久亚洲综合网站| 国产99在线观看| 亚洲国产精品久久久久| 国产 日韩 欧美 成人| 国产99久久精品| 成人短视频在线观看免费| 国产一区二区视频在线看| 久久综合久久美利坚合众国| 国产又粗又猛又色又| 亚洲天堂中文字幕| 五月激情婷婷在线| 日韩av久操| 成人h视频在线| 免费大片在线观看www| 欧美男男青年gay1069videost| 久久噜噜色综合一区二区| 久久99精品一区二区三区三区| 亚洲欧洲免费无码| 亚洲tv在线| 欧美精品在线播放| 国产18精品乱码免费看| 亚洲国产一区二区三区| 人妻激情偷乱频一区二区三区| 亚洲激情婷婷| 欧美激情第六页| 成人在线爆射| 日韩一区在线视频| www.桃色av嫩草.com| 亚洲国产精品久久艾草纯爱| 最新在线黄色网址| 日韩高清不卡一区二区三区| 性欧美18一19内谢| 风间由美性色一区二区三区四区 | 9191国产视频| 好吊妞国产欧美日韩免费观看网站 | 国产精品久久久视频| 国产乱理伦片在线观看夜一区| 国产精品无码电影在线观看| 亚洲第一福利专区| 国产欧美日韩免费| 欧洲中文在线| 亚洲图片欧美日产| 国产黄a三级三级三级| 欧美日韩国产一区二区三区| 69xxx免费| 大胆亚洲人体视频| 中文字幕国内自拍| 国产一区清纯| 日韩av电影免费在线观看| 国色天香久久精品国产一区| 88国产精品欧美一区二区三区| 国产天堂素人系列在线视频| 日韩免费视频一区| 亚洲天堂五月天| 一区二区三区四区视频精品免费| 国产传媒第一页| 精品无人码麻豆乱码1区2区 | 国模精品一区二区三区| 成人国产精选| 午夜欧美不卡精品aaaaa| 国产精品免费观看| 精品国产一区二区三区久久久蜜月 | 欧美a级在线| 欧美在线日韩精品| 2020国产精品极品色在线观看| 国产精品久久久av久久久| 五月花成人网| 久久久国产一区二区| 你懂得网站在线| 欧美成人艳星乳罩| 91成品人影院| 91黄色在线观看| 日产欧产va高清| 亚洲女同ⅹxx女同tv| 精品人妻一区二区三区四区| 99视频一区二区三区| 一二三av在线| 日本不卡视频在线| 男人操女人免费软件| 国内成人在线| 女同性恋一区二区| 久久激情电影| 日韩av电影免费在线观看| 免费看成人人体视频| 操一操视频一区| 国产一区二区av在线| 欧美孕妇性xx| 麻豆网站免费在线观看| 欧美国产第二页| 超碰在线无需免费| 久久久国产一区二区| 伊人在线视频| 日日狠狠久久偷偷四色综合免费| 午夜在线视频观看| 亚洲精品成人久久久| 三级在线观看网站| 精品久久久久久综合日本欧美| av中文在线观看| 欧美剧情电影在线观看完整版免费励志电影 | 成人av二区| 天堂精品一区二区三区| 国产成人调教视频在线观看 | 久青草国产在线| 亚洲男人天堂久| 免费黄色在线视频网站| 亚洲欧洲偷拍精品| 国产毛片av在线| 国产午夜精品视频| 91sp网站在线观看入口| 自拍偷拍亚洲区| 日本高清在线观看wwwww色| 亚洲偷熟乱区亚洲香蕉av| 成年人视频在线看| 日韩在线www| 91精品久久| 久久国产色av| av影院在线| 欧美中文字幕第一页| 日韩av超清在线观看| 成人精品久久久| 视频一区视频二区欧美| 国产精品高清一区二区三区| 黑人久久a级毛片免费观看| 久久狠狠久久综合桃花| av永久不卡| 国产日韩视频在线播放| 一区在线免费观看| 无码人妻h动漫| 蜜桃传媒麻豆第一区在线观看| 伊人精品视频在线观看| 不卡区在线中文字幕| 我和岳m愉情xxxⅹ视频| 国产精品蜜臀在线观看| 久久国产在线观看| 欧美日韩亚洲一区二区三区| 精品国产青草久久久久96| 欧美一区二区观看视频| 香蕉视频网站在线| 亚洲美女自拍视频| 毛片在线不卡| 久久久欧美一区二区| 欧美日韩视频免费观看| 91久久精品国产91性色| 精品国产乱子伦一区二区| 日韩国产精品一区二区| 亚洲人metart人体| 草草久久久无码国产专区| 美女网站一区二区| 欧洲熟妇的性久久久久久| 国产亚洲综合色| 国产稀缺精品盗摄盗拍| 午夜一区二区三区视频| 中文天堂在线资源| 亚洲成人中文字幕| 三区四区电影在线观看| 91精品国产高清久久久久久久久 | 色94色欧美sute亚洲线路二| 国产三级三级在线观看| 国产视频精品久久久| 浪潮av一区| 青青草成人在线| 久久综合给合| 日本一区二区视频| 亚洲久久在线| 丰满人妻一区二区三区53视频| 久久久久久久综合色一本| 久久久久久激情| 欧洲精品视频在线观看| 老牛影视av牛牛影视av| 久久精品免费播放| 日本精品网站| 免费精品视频一区| 亚洲福利电影| 黄色a级三级三级三级| 久久精品人人做人人爽人人| 国产主播在线播放| 欧美一区二区三区日韩| 99riav在线| 国产激情999| 婷婷国产精品| 国产手机免费视频| 国产真实精品久久二三区| 欧美性xxxx图片| 亚洲aaa精品| 精品久久久免费视频| 精品国产视频在线| 黄色成人在线观看网站| 日韩久久不卡| 久久国产精品99国产| 国产精品扒开腿做爽爽爽a片唱戏| 亚洲女人的天堂| 91精品人妻一区二区三区果冻| 在线观看国产成人av片| 亚洲黄色免费av| 久久亚洲综合网| 国产亚洲精品久久久久婷婷瑜伽| 性色av蜜臀av浪潮av老女人 | 可以免费在线观看的av| 精品国产91洋老外米糕| 免费在线国产视频| av噜噜色噜噜久久| 欧美激情四色| 免费黄视频在线观看| 亚洲综合一区在线| av在线免费在线观看| 欧美情侣性视频| 日韩一级淫片| 人妻互换免费中文字幕| 丁香六月久久综合狠狠色| 久草免费新视频| 亚洲第一区第一页| 密臀av在线播放| 欧美日韩综合另类| 免费在线欧美视频| 欧美激情精品久久久久久免费| 91精品国产高清一区二区三区蜜臀| 黄色网在线免费看| 99久久国产免费免费| 91久久亚洲| 国内精品久久99人妻无码| 日韩欧美亚洲一二三区| 高清在线观看av| 国产日韩中文字幕在线| 欧美激情综合色综合啪啪| 在线黄色免费网站| 在线视频一区二区三区| 日本免费中文字幕在线| yellow视频在线观看一区二区| 亚洲欧洲日本mm| 五月天精品视频| 欧美日韩一区二区三区四区五区| 二区在线播放| 国产日韩精品一区观看| 噜噜爱69成人精品| 人妻无码一区二区三区免费| 日韩午夜av一区| 亚洲天堂资源| 一本一道久久a久久精品综合| 国产精品77777竹菊影视小说| 久久不卡免费视频| 久久精品亚洲94久久精品| heyzo欧美激情| 免费在线观看日韩视频| 亚洲欧洲99久久| 天天综合天天综合| 国产精品中文字幕久久久| 合欧美一区二区三区| 一级黄色片网址| 日韩精品一区二区三区中文精品 | 影音先锋一区| 色欲狠狠躁天天躁无码中文字幕| 91精品国产色综合久久| 忘忧草在线日韩www影院| 欧美日韩在线免费观看视频| 91偷拍与自偷拍精品| 国产一区二区三区成人| 欧美亚洲在线视频| 亚洲成人三区| 精品欧美一区二区久久久|