精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美激情啪啪| 91社区在线观看| 在线亚洲观看| 亚洲性xxxx| 在线观看免费视频污| 国产精品69xx| 亚洲国产精品传媒在线观看| 91夜夜未满十八勿入爽爽影院 | 二区三区精品| 亚洲成人av一区| 亚洲看片网站| 肥臀熟女一区二区三区| 日韩高清一区二区| 久久久久久久999| 成人激情五月天| 高清日韩欧美| 5566中文字幕一区二区电影| 黄色一级片播放| 求av网址在线观看| 久久亚洲影视婷婷| 99久久免费国| 一区二区三区播放| 蜜桃视频一区| 韩国19禁主播vip福利视频| 国产馆在线观看| 日韩人体视频| 欧美不卡激情三级在线观看| 一级黄色特级片| www.成人影院| 婷婷一区二区三区| 免费观看中文字幕| 超碰免费97在线观看| 99re8在线精品视频免费播放| 成人黄色免费网站在线观看| 中文字幕天堂在线| 性色av一区二区怡红| 欧美高清视频在线播放| 少妇高潮在线观看| 欧美一区2区| 亚洲欧美变态国产另类| 国产精品成人99一区无码 | 日韩欧美国产激情| av日韩一区二区三区| 肉肉视频在线观看| 亚洲免费在线观看视频| 大桥未久一区二区| 男人影院在线观看| 国产精品久99| 亚洲va韩国va欧美va精四季| 国产乱子伦三级在线播放 | 在线看片中文字幕| 精品国产91乱码一区二区三区四区 | 亚洲自拍偷拍另类| 蜜臂av日日欢夜夜爽一区| 国产精品久久久久久中文字| 国产精品无码一区| 热久久久久久久| 国产精品色视频| 国产精品高清无码| 经典一区二区三区| 亚洲精品日韩激情在线电影| 国产内射老熟女aaaa∵| 国产精品自拍av| 成人免费视频观看视频| 粉嫩小泬无遮挡久久久久久| 成人激情免费网站| 精品欧美国产| 黄上黄在线观看| 亚洲国产高清在线观看视频| 亚洲激情一区二区| 好了av在线| 亚洲国产一区二区视频| 日本网站免费在线观看| 91精品影视| 6080国产精品一区二区| 日韩精品――色哟哟| 欧美成人精品一级| 亚洲国产婷婷香蕉久久久久久| 捆绑裸体绳奴bdsm亚洲| 久久综合影院| www.亚洲男人天堂| 免费无码毛片一区二区app| 激情综合电影网| 91国自产精品中文字幕亚洲| 国产男人搡女人免费视频| 精品制服美女久久| 俄罗斯精品一区二区三区| 深夜福利免费在线观看| 中文字幕精品一区二区三区精品| 国产成人免费高清视频| 妞干网免费在线视频| 欧美性感一类影片在线播放| 中文字幕剧情在线观看| 欧美午夜寂寞| 色爱av美腿丝袜综合粉嫩av| 免费一级片在线观看| 国产精品人人爽人人做我的可爱| 国产精品久久久久aaaa九色| 国产成人三级在线播放| 91色九色蝌蚪| 99精品一区二区三区的区别| 日韩电影免费看| 欧美日韩高清一区| 免费黄色三级网站| 欧美电影一二区| 97福利一区二区| 在线观看国产黄| av网站免费线看精品| 日韩色妇久久av| 51漫画成人app入口| 在线观看三级视频欧美| 欧美双性人妖o0| 999国产精品视频| 4p变态网欧美系列| 精品国产无码一区二区三区| 国产日韩欧美一区二区三区综合| 免费观看国产视频在线| 怡红院成人在线| 亚洲第一福利网| 国产一区二区播放| 日本不卡高清视频| 久久riav| 国产后进白嫩翘臀在线观看视频| 欧美日韩小视频| 久久久久久久久久久久| 亚洲第一在线| 91沈先生播放一区二区| 毛片在线不卡| 欧美亚洲动漫另类| 91精品人妻一区二区三区| 亚洲激情一区| 成人av免费电影| 国产原创视频在线观看| 欧美日韩一区精品| 国产三级av在线播放| 先锋影音久久久| 久久精品国产99精品国产亚洲性色| 羞羞电影在线观看www| 制服丝袜亚洲播放| 91麻豆精品久久毛片一级| 日韩激情一区二区| 奇米视频888战线精品播放| 蜜桃av.网站在线观看| 精品国产乱码久久久久久久久| av成人免费网站| 国产又黄又大久久| 浴室偷拍美女洗澡456在线| 亚洲国产91视频| www.日韩免费| 国产丰满美女做爰| 亚洲精品v日韩精品| 在线观看你懂的视频| 欧美大片一区| 国产精品对白刺激久久久| 大黄网站在线观看| 欧美精品一区二区蜜臀亚洲| 香蕉视频一区二区| 成人免费看的视频| 久久久999免费视频| 亚洲精品亚洲人成在线观看| 人妖精品videosex性欧美| 国内在线精品| 欧美年轻男男videosbes| 国产激情无码一区二区三区| 国产一区二区成人久久免费影院| 国产免费内射又粗又爽密桃视频| 99精品国产高清一区二区麻豆| 欧美激情区在线播放| 天天操天天干天天| 色婷婷亚洲综合| 中文字幕第69页| 国产精品456露脸| 777av视频| 精品福利久久久| 91老司机在线| 九九精品调教| 亚洲精品自拍视频| 最近中文字幕在线视频| 亚洲色图丝袜美腿| 亚洲精品乱码久久久久久久| 日韩中文字幕麻豆| 4444在线观看| 亚洲都市激情| 成人免费观看a| xxx性欧美| 一本色道久久综合亚洲精品小说 | aa国产成人| 国产亚洲在线播放| 国产富婆一级全黄大片| 午夜精品福利视频网站| 精品人妻无码一区| 国产福利一区在线| 18岁视频在线观看| 欧美在线亚洲| 欧美午夜免费| 精品国产乱码一区二区三区 | 免费看av软件| 日本午夜精品久久久| 成人国产精品久久久| 免费一二一二在线视频| 久久香蕉频线观| 男操女在线观看| 日韩欧美成人激情| 欧美性受xxx黑人xyx性爽| 一区二区在线看| 成人激情五月天| 99久久免费国产| www.色就是色.com| 久久精品电影| 一本久道高清无码视频| 91精品一区国产高清在线gif| 精品福利影视| 日本精品视频| 国产欧洲精品视频| japanese23hdxxxx日韩| 久久久久九九九九| 黄色网页网址在线免费| 一区二区三区天堂av| 日韩一级片免费观看| 欧美一区二区在线免费播放| 国产成人自拍偷拍| 欧美午夜视频一区二区| 国产午夜小视频| 亚洲视频免费观看| 东京热无码av男人的天堂| 91啪亚洲精品| 国产又粗又猛又色| 国产91对白在线观看九色| 福利视频999| 麻豆精品一区二区av白丝在线| 日本wwww视频| 中文亚洲字幕| 日本www在线视频| 国产精品地址| 成人小视频在线观看免费| 欧美xxxxx视频| 亚洲日本欧美在线| 成人三级视频| 水蜜桃亚洲一二三四在线| 国产亚洲第一伦理第一区| 欧美午夜精品理论片a级大开眼界 欧美午夜精品久久久久免费视 | 成人久久久久爱| 日韩专区视频| 成人激情视频免费在线| 色成人综合网| 国产在线观看91精品一区| 久久亚洲国产精品尤物| 国产精品一区二区3区| 欧美色片在线观看| 国产精品视频xxx| yiren22亚洲综合| 国产精品久久久久久亚洲调教| 国产第一亚洲| 国产精品自产拍在线观看| 免费成人毛片| 3d动漫啪啪精品一区二区免费| 激情视频亚洲| 97超碰人人看人人| 黄色成人美女网站| 鲁丝一区二区三区免费| 精品久久视频| 亚洲一区bb| 欧美aa国产视频| 免费拍拍拍网站| 老鸭窝91久久精品色噜噜导演| 欧美v在线观看| 奇米综合一区二区三区精品视频| 无限资源日本好片| 国产剧情在线观看一区二区| 亚洲av无码专区在线播放中文| 99精品国产99久久久久久白柏| 少妇特黄一区二区三区| 欧美国产97人人爽人人喊| 黄色录像一级片| 亚洲国产色一区| 99精品人妻国产毛片| 欧美日韩一区在线观看| 亚洲精品成人区在线观看| 亚洲国产中文字幕在线观看| 国产青青草在线| 久久成人人人人精品欧| 国产高清视频色在线www| 国产精品狠色婷| 日韩在线观看中文字幕| 女同一区二区| 久久人人88| r级无码视频在线观看| 日韩主播视频在线| 国产精品久久久久野外| 久久这里只有精品首页| 天天操夜夜操av| 激情成人在线视频| 91福利免费视频| 日韩精品极品在线观看播放免费视频| 国产精品ⅴa有声小说| 欧美成年人视频| 欧美粗大gay| av色综合网| 日韩欧美一区二区三区免费看| 日韩欧美猛交xxxxx无码| 日本不卡视频在线观看| 在线天堂www在线国语对白| 国产精品毛片无遮挡高清| 91蜜桃视频在线观看| 91精品中文字幕一区二区三区| 四虎精品在线| 欧美风情在线观看| 欧美视频免费看| 开心色怡人综合网站| 国产精品vip| xxxx在线免费观看| 久久精品夜色噜噜亚洲aⅴ| 国产精品6666| 91精品国产全国免费观看| 国产高清视频在线播放| 88国产精品欧美一区二区三区| 国产精品一区免费在线| 亚洲精品9999| 三级一区在线视频先锋 | 国产视频亚洲色图| 国产无码精品视频| 欧美一区二区精品在线| 国产高清一区在线观看| 琪琪亚洲精品午夜在线| 国产一区二区三区亚洲| 超碰超碰超碰超碰超碰| 久久精品国产网站| 久久久久无码精品国产sm果冻 | 蜜臀99久久精品久久久久小说| 日韩精品中午字幕| 国产二区三区在线| 成人免费黄色网| 午夜激情久久| 久久黄色片网站| 国产精品国产三级国产普通话99 | 欧美一级久久久| 麻豆视频在线免费观看| 国产美女精品视频| 日韩www.| 激情视频免费网站| 国产精品网站在线播放| 国内av在线播放| 在线播放国产一区二区三区| 欧美在线va视频| 日韩精品不卡| 日韩中文字幕不卡| 久久午夜福利电影| 欧美日韩一区不卡| 日本在线观看| 国产精品专区h在线观看| 日韩视频在线观看| 特黄视频免费观看| 亚洲精品videosex极品| 欧美 日韩 国产 成人 在线 | 欧美特大特白屁股xxxx| 欧美视频观看一区| 蜜桃精品视频在线观看| 精品人妻伦九区久久aaa片| 欧美一级在线观看| wwww亚洲| 免费看成人片| 日本视频在线一区| 老熟妻内射精品一区| 日韩欧美高清dvd碟片| 超级白嫩亚洲国产第一| 欧美1o一11sex性hdhd| 日本午夜精品一区二区三区电影| 欧美特黄一级片| 亚洲成人av资源网| 欧美大胆性生话| 在线无限看免费粉色视频| 国产成人啪免费观看软件 | 欧美日免费三级在线| 蜜桃视频网站在线观看| 国产区一区二区| 日韩电影在线一区二区三区| 日韩在线视频免费看| 精品国产一区久久| 精品国模一区二区三区| 中文字幕免费在线不卡| 成人一区二区三区视频 | 手机精品视频在线观看| 亚洲女人久久久| 亚洲国产精品高清久久久| 精品成人av| 红桃一区二区三区| 久久亚洲综合色| 99在线小视频| 欧美诱惑福利视频| 久久久久久美女精品| 疯狂揉花蒂控制高潮h| 欧美日韩视频在线一区二区| 精品精品导航| 先锋影音亚洲资源| 成人涩涩免费视频| 亚洲一区二区三区高清视频| 欧美高清视频在线播放| 日韩国产在线| 国产不卡一二三| 69久久夜色精品国产69蝌蚪网|