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

Linux驅動技術(一) _內存申請

系統 Linux 系統運維
內核程序也需要動態的分配內存,不同的是,內核進程可以控制分配的內存是在用戶空間還是內核空間,前者可以用于給用戶空間的堆區分配內存,eg,用戶進程的用戶空間的malloc最終就會通過系統調用回調內核空間的內存分配函數,此時該內存分配函數就屬于該用戶進程,可以給在該用戶進程的堆區分配空間并返回,最終使得一個用會進程在自己的用戶空間獲得內存分配;后者只在內核空間分配,所以用戶進程不能直接訪問該空間,所以多用在滿足內核程序自身的內存需求。

先上基礎,下圖是Linux的內存映射模型

  • 每一個進程都有自己的進程空間,進程空間的0-3G是用戶空間,3G-4G是內核空間
  • 每個進程的用戶空間不在同一個物理內存頁,但是所有的進程的內核空間對應同樣的物理地址
  • vmalloc分配的地址可以高端內存,也可以是低端內存
  • 0-896MB的物理地址是線性映射到物理映射區的。  

Linux的內存映射模型 

內存動態申請

和應用層一樣,內核程序也需要動態的分配內存,不同的是,內核進程可以控制分配的內存是在用戶空間還是內核空間,前者可以用于給用戶空間的堆區分配內存,eg,用戶進程的用戶空間的malloc最終就會通過系統調用回調內核空間的內存分配函數,此時該內存分配函數就屬于該用戶進程,可以給在該用戶進程的堆區分配空間并返回,最終使得一個用會進程在自己的用戶空間獲得內存分配;后者只在內核空間分配,所以用戶進程不能直接訪問該空間,所以多用在滿足內核程序自身的內存需求,下面是Linux內核空間申請內存常用API:

kmalloc - kfree

kmalloc申請的內存在物理內存上是連續的,他們與真實的物理地址只有一個固定的偏移,因此存在簡單的轉換關系。這個API 多用來申請不到一個page大小的內存。kmalloc的底層需要調用__get_free_pages,參數中表示內存類型的gtp_t flags正是這個函數的縮寫,常用的內存類型有GFP_USER,GFP_KERNEL,GFP_ATOMIC幾種。

  • GFP_USER表示為用戶空間頁分配內存,可以阻塞;
  • GFP_KERNEL是最常用的flag,注意,使用這個flag來申請內存時,如果暫時不能滿足,會引起進程阻塞,So,一定不要在中斷處理函數,tasklet和內核定時器等非進程上下文中使用GFP_KERNEL!!!
  • GFP_ATOMIC就可以用于上述三種情境,這個flag表示如果申請的內存不能用,則立即返回。
  1. /** 
  2.  * kmalloc - allocate memory 
  3.  * @size: how many bytes of memory are required. 
  4.  * @flags: the type of memory to allocate. 
  5.  * The @flags argument may be one of
  6.  * %GFP_USER - Allocate memory on behalf of user.  May sleep. 
  7.  * %GFP_KERNEL - Allocate normal kernel ram.  May sleep. 
  8.  * %GFP_ATOMIC - Allocation will not sleep.  May use emergency pools. 
  9.  *  
  10.  * For example, use this inside interrupt handlers. 
  11.  */ 
  12. void *kmalloc(size_t size, gfp_t flags); 
  13. /** 
  14.  * kfree - free previously allocated memory 
  15.  * @objp: pointer returned by kmalloc. 
  16.  * If @objp is NULLno operation is performed. 
  17.  */ 
  18. void kfree(const void *objp);  

同系列API還有

  1. void *kzalloc(size_t size, gfp_t flags)     

__get_free_pages - free_pages

__get_free_pages()與kmalloc()一樣是物理連續的內存,這一系列函數是Linux內核中***層的用于獲取空閑內存的方法,因為底層的buddy算法都是以(2^n)×PAGE_SIZE來管理內存的,所以他們總是以頁為單位分配內存的

  1. unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)  void free_pages(unsigned long addr, unsigned int order)  

同系列API還有

  1. unsigned long __get_free_page(gfp_t gfp)        unsigned long get_zeroed_page(gfp_t gfp_mask)    struct page *alloc_pages(gfp_t gfp_mask, unsigned int order
  1. void free_page(unsigned long addr) 

vmalloc - vfree

vmalloc在虛擬內存空間給出一塊連續的內存區,實質上,這片連續的虛擬內存在物理內存中并不一定連續,所以vmalloc申請的虛擬內存和物理內存之間也就沒有簡單的換算關系,正因如此,vmalloc()通常用于分配遠大于__get_free_pages()的內存空間,它的實現需要建立新的頁表,此外還會調用使用GFP_KERN的kmalloc,so,一定不要在中斷處理函數,tasklet和內核定時器等非進程上下文中使用vmalloc!

  1. /**      
  2.  * vmalloc  -  allocate virtually contiguous memory 
  3.  * @size:          allocation size 
  4.  * Allocate enough pages to cover @size from the page level allocator and map them into contiguous kernel virtual space
  5.  */void *vmalloc(unsigned long size)   /** 
  6.  *      vfree  -  release memory allocated by vmalloc() 
  7.  *      @addr:          memory base address 
  8.  */void vfree(const void *addr)   

同系列的API還有

  1. /** 
  2.  * vmalloc_32  -  allocate virtually contiguous memory (32bit addressable) 
  3.  * @size:          allocation size 
  4.  * Allocate enough 32bit PA addressable pages to cover @size from the page level allocator and map them into contiguous kernel virtual space
  5.  */void *vmalloc_32(unsigned long size)   

slab緩存

我們知道,頁是內存映射的基本單位,但內核中很多頻繁創建的對象所需內存都不到一頁,此時如果仍然按照頁映射的方式,頻繁的進行分配和釋放就會造成資源的浪費,同時也會降低系統性能。為了解決的這樣的問題,內核引入了slab機制,使對象在前后兩次被使用時被分配在同一塊內存或同一類內存空間,且保留了基本的數據結構,就可以大大提高效率。kmalloc的底層即是使用slab算法管理分配的內存的。注意,slab依然是以頁為單位進行映射,只是映射之后分割這些頁為相同的更小的單元,從而節省了內存。slab分配的單元不能小于32B或大于128K。

  1. /** 
  2.  * kmem_cache_create - 創建slab緩存對象 
  3.  * @name:slab緩存區名字, 
  4.  * @size:slab分配的緩存區的每一個單元的大小 
  5.  * @align:緩存區內存的對齊方式,一般給0 
  6.  * @flags:控制分配的位掩碼, 
  7.  * %SLAB_POISON - Poison the slab with a known test pattern (a5a5a5a5) to catch references to uninitialised memory. 
  8.  * %SLAB_RED_ZONE - Insert `Red' zones around the allocated memory to check for buffer overruns. 
  9.  * %SLAB_HWCACHE_ALIGN - Align the objects in this cache to a hardware cacheline.  This can be beneficial if you're counting cycles as closely as davem. 
  10.  * %SLAB_CACHE_DMA - Use GFP_DMA memory 
  11.  * %SLAB_STORE_USER - Store the last owner for bug hunting 
  12.  *define SLAB_PANIC - Panic if kmem_cache_create() fails  
  13.  */struct kmem_cache *kmem_cache_create(const char *name, size_t size, size_t align,unsigned long flags, void (*ctor)(void *))/** 
  14.  * kmem_cache_alloc - Allocate an object from this cache.  
  15.  * @cachep: The cache to allocate from
  16.  * @flags: See kmalloc(). 
  17.  * The flags are only relevant if the cache has no available objects. 
  18.  */void *kmem_cache_alloc(struct kmem_cache *cachep, gfp_t flags)  /** 
  19.  * kmem_cache_free - Deallocate an object 
  20.  * @cachep: The cache the allocation was from
  21.  * @objp: The previously allocated object. 
  22.  * Free an object which was previously allocated from this cache. 
  23.  */void kmem_cache_free(struct kmem_cache *cachep, void *objp)  void kmem_cache_destroy(struct kmem_cache *s)   

范例

  1. //創建slab對象 
  2.  
  3. struct kmem_cache_t *xj_sbcache; 
  4. xj_sbcache = kmem_cache_create("xjslab",sizeof(struct xj_unit_t),0,SLAB_CACHE_DMA|SLAB_PANIC,NULL,NULL);//分配slab緩存 
  5.  
  6. struct xj_unit_t *xj_unit; 
  7. xj_unit = kmem_cache_alloc(xj_sbcache,GFP_KERNEL); 
  8. /* 使用slab緩存 */ 
  9. /* 釋放slab緩存 */ 
  10.  
  11. kmem_cache_free(xj_sbcache, xj_unit); 
  12. /* 銷毀slab緩存 */ 
  13.  
  14. kmem_cache_destroy(xj_sbcache);  

內存池

除了slab機制,內核還提供了傳統的內存池機制來管理小塊內存的分配。內存池主要是用來解決可能出現的內存不足的情況,因為一個內存池在創建的時候就已經分配好了一內存,當我們用mempool_alloc向一個已經創建好的內存池申請申請內存時,該函數首先會嘗試回調內存池創建時的分配內存函數,如果已經沒有內存可以分配,他就會使用內存池創建時預先分配的內存,這樣就可以避免因為無內存分配而陷入休眠,當然,如果預分配的內存也已經使用完畢,還是會陷入休眠。slab機制的目的是提高內存使用率以及內存管理效率,內存池的目的是避免內存的分配失敗。下面是內核中提供的關于內存池的API 

  1. /**      
  2.  * mempool_create - create a memory pool 
  3.  * @min_nr:    the minimum number of elements guaranteed to be  allocated for this pool. 
  4.  * @alloc_fn:  user-defined element-allocation function
  5.  * @free_fn:   user-defined element-freeing function
  6.  * @pool_data: optional private data available to the user-defined functions. 
  7.  *               
  8.  * this function creates and allocates a guaranteed size, preallocated memory pool. The pool can be used from the mempool_alloc() and mempool_free() functions.  
  9.  * This function might sleep. Both the alloc_fn() and the free_fn() functions might sleep - as long as the mempool_alloc() function is not called from IRQ contexts. 
  10.  */ 
  11. mempool_t *mempool_create(int min_nr, mempool_alloc_t *alloc_fn, mempool_free_t *free_fn, void *pool_data) 
  12.  
  13. /**      
  14.  * mempool_alloc - allocate an element from a specific memory pool 
  15.  * @pool:pointer to the memory pool which was allocated via mempool_create(). 
  16.  * @gfp_mask:  the usual allocation bitmask. 
  17.  * this function only sleeps if the alloc_fn() function sleeps or returns NULL. Note that due to preallocation, this function never* fails when called from process contexts. (it might fail if called from an IRQ context.) 
  18.  */      
  19. void * mempool_alloc(mempool_t *pool, gfp_t gfp_mask)     
  20.  
  21. /** 
  22.  * mempool_free - return an element to the pool. 
  23.  * @element:   pool element pointer. 
  24.  * @pool:pointer to the memory pool which was allocated via mempool_create(). 
  25.  * 
  26.  * this function only sleeps if the free_fn() function sleeps. 
  27.  */      
  28. void mempool_free(void *element, mempool_t *pool)     
  29.  
  30. /** 
  31.  * mempool_destroy - deallocate a memory pool 
  32.  * @pool:pointer to the memory pool which was allocated via mempool_create(). 
  33.  * 
  34.  * Free all reserved elements in @pool and @pool itself.  This function only sleeps if the free_fn() function sleeps. 
  35.  */      
  36. void mempool_destroy(mempool_t *pool)   

 

責任編輯:龐桂玉 來源: 嵌入式Linux中文站
相關推薦

2017-03-01 12:36:15

Linux驅動技術內存

2022-07-10 20:47:39

linux中虛擬內存

2017-03-01 14:46:53

Linux驅動技術異步通知技術

2017-02-28 17:46:15

Linux驅動技術并發控制

2019-03-20 14:29:46

Linux虛擬內存

2017-03-01 13:06:39

Linux驅動技術DMA編程

2022-05-10 08:49:46

設備驅動Linux

2017-03-01 16:40:12

Linux驅動技術設備阻塞

2021-04-12 12:00:13

Linux運維Linux系統

2020-06-28 09:30:37

Linux內存操作系統

2012-09-29 09:00:25

2021-11-12 11:28:01

Linux 內核驅動Linux 系統

2012-05-28 15:49:06

Linux凱迪拉克

2025-01-02 11:06:22

2025-06-09 04:00:00

2021-01-18 08:23:23

內存時底層CPU

2012-01-11 11:07:04

JavaJVM

2021-11-22 08:14:23

Linux Linux驅動Linux 系統

2021-05-12 18:22:36

Linux 內存管理

2018-10-10 14:14:51

Linux內存映射
點贊
收藏

51CTO技術棧公眾號

制服.丝袜.亚洲.中文.综合懂| 国产999精品| 激情成人在线观看| 最新黄网在线观看| 国产精品自拍三区| 81精品国产乱码久久久久久| 免费视频91蜜桃| 欧美h版在线观看| 黑人狂躁日本妞一区二区三区| 奇米精品在线| 国产夫绿帽单男3p精品视频| 国产精品久久国产愉拍| 日韩中文在线视频| 亚洲最大视频网| 日韩色淫视频| 五月天一区二区| 亚洲视频在线二区| 久草免费在线观看视频| 欧美三级自拍| 欧美一区二区三区不卡| 久久精品午夜福利| 日本在线观看高清完整版| 久久久亚洲欧洲日产国码αv| 91在线高清免费观看| 亚洲 欧美 中文字幕| 欧美激情视频一区二区三区免费| 亚洲欧美日韩中文在线| 久久久久久久久久影视| 欧美黄色网络| 午夜激情一区二区| 国产美女永久无遮挡| 一区二区高清不卡| 国产日韩欧美综合在线| 国产在线精品二区| 黄色一级大片在线免费看国产| 久久电影国产免费久久电影| 国产91精品最新在线播放| 国产精彩视频在线| 欧美日韩一卡| 久久天天躁狠狠躁夜夜爽蜜月| 精品欧美一区二区久久久| 精品一区二区男人吃奶| 亚洲成人久久网| 精品国产鲁一鲁一区二区三区| www.久久.com| 欧美影片第一页| 日本久久精品一区二区| 精品免费av在线 | 国产日韩在线一区二区三区| 国产理论视频在线观看| 精品亚洲成a人| 国产日韩在线观看av| 亚洲天堂avav| 久久99热这里只有精品| 国产美女高潮久久白浆| 探花国产精品一区二区| 蜜臀av国产精品久久久久| 国产精品爱啪在线线免费观看| 男人天堂2024| 日韩国产一区二| 国产精品久久久久久影视| 中文字幕 国产精品| 日韩高清在线观看| 国产精品专区一| 国产精品视频第一页| 国内精品在线播放| 成人综合av网| 图片区 小说区 区 亚洲五月| 91色porny蝌蚪| 视频在线99| 黄色网在线免费看| 亚洲一区二区三区四区五区中文| 丝袜人妻一区二区三区| 亚洲一区站长工具| 欧美在线观看一二区| 岛国av免费在线| a看欧美黄色女同性恋| 欧美成人a∨高清免费观看| 欧美夫妇交换xxx| 国产成人av| 久久久www成人免费精品| 欧美人与禽zozzo禽性配| 一区二区三区国产盗摄 | 国产黄网在线观看| 蜜臀91精品一区二区三区 | 亚洲另类第一页| 亚洲大奶少妇| 亚洲欧洲视频在线| 日韩成人短视频| aa亚洲婷婷| 国产精品美女久久久免费| 精品久久在线观看| 久久久久久久免费视频了| 日本成人性视频| 黄频免费在线观看| 欧美精品乱码久久久久久按摩| 久久精品aⅴ无码中文字字幕重口| 欧美亚洲tv| 久久视频精品在线| 男人午夜免费视频| 国产一区二区91| 欧美一区二区三区四区在线观看地址| 成在在线免费视频| 亚洲一区国产视频| 天堂av在线网站| 美女主播精品视频一二三四| 日韩视频欧美视频| 51国产偷自视频区视频| 国产成人综合亚洲91猫咪| 久久99精品久久久久久久青青日本| 免费在线观看黄色网| 欧美午夜www高清视频| 极品人妻一区二区| 久久视频在线| 亲爱的老师9免费观看全集电视剧| 国产日韩一级片| 国产欧美精品一区aⅴ影院 | 国产视频久久久久| 麻豆影视在线播放| 久久97超碰色| 日韩在线观看电影完整版高清免费| 日本一本在线免费福利| 欧美精品一卡两卡| 亚洲一二三精品| 久久精品系列| 精品国产乱码久久久久久蜜柚| a视频在线播放| 欧美精品自拍偷拍动漫精品| 亚洲精品成人无码| 国产精品一二| 精品国产电影| 嗯啊主人调教在线播放视频| 亚洲精品一区二区三区在线观看| 特一级黄色录像| 美女精品自拍一二三四| 日韩欧美亚洲日产国| 自由日本语热亚洲人| 日韩成人xxxx| av大片免费观看| 成人小视频在线| 国产亚洲精品久久久久久久| 粉嫩av国产一区二区三区| 日韩在线视频免费观看高清中文| 精品国产青草久久久久96| 久久久www免费人成精品| 日韩视频第二页| 欧美激情在线免费| 国产精品国产亚洲伊人久久 | 孩xxxx性bbbb欧美| 色偷偷在线观看| 图片区日韩欧美亚洲| 国产乱了高清露脸对白| 男人的天堂成人在线| 日本一区二区高清视频| 欧美成人黑人| 国产亚洲精品日韩| 国产精品成人久久久| 国产精品萝li| 永久看看免费大片| 欧美亚洲不卡| 国产精品乱子乱xxxx| 极品美鲍一区| 亚洲三级黄色在线观看| 中文字幕视频一区二区| 国产精品成人免费在线| 亚洲一区二区图片| 影音先锋在线一区| 就去色蜜桃综合| 99久久精品一区二区成人| www.午夜精品| 成人爽a毛片一区二区| 午夜不卡在线视频| 久久久久久国产免费a片| 久88久久88久久久| 久久精品无码中文字幕| 亚洲人和日本人hd| 成人黄色在线观看| 97超碰免费在线| 亚洲一级片在线看| av网站在线免费看| 色偷偷久久一区二区三区| 亚洲a∨无码无在线观看| 国产精品羞羞答答xxdd| 91精品91久久久中77777老牛| 成人激情视频| 99re国产视频| 欧美黄色网页| 欧美国产极速在线| 九色在线视频蝌蚪| 欧美一区二区黄| 日韩一级在线视频| 一区二区三区四区av| 小早川怜子久久精品中文字幕| 精品在线亚洲视频| 欧美一级在线看| 国产精品久久久久久麻豆一区软件 | 成年人视频在线免费看| 亚洲视频每日更新| 在线免费观看麻豆| 成人综合在线视频| 伊人成人222| 午夜一区不卡| 久久观看最新视频| 成人久久电影| 久久99精品久久久久久秒播放器 | 久久一区二区视频| 日本xxxx免费| 九九视频精品免费| 黄色一级二级三级| 99av国产精品欲麻豆| 大地资源第二页在线观看高清版| 日韩精品a在线观看91| 亚洲一区二区日本| jizzyou欧美16| 日本韩国在线不卡| av资源网在线播放| 精品中文字幕在线| 欧美激情免费| 自拍偷拍亚洲在线| 可以直接在线观看的av| 亚洲国产精品久久久久秋霞不卡| 国产视频aaa| 欧美二区三区91| 欧美另类高清videos的特点| 国产麻豆xxxvideo实拍| 丝袜亚洲另类欧美| 精品少妇人欧美激情在线观看| 日韩在线视屏| 欧美精品一区二区三区在线看午夜| 日韩精品一区二区三区中文字幕| 国产精品久久久久国产a级| 免费成人在线电影| 欧美激情视频网| 黄色av电影在线播放| 伊人久久免费视频| 你懂的在线观看视频网站| 亚洲福利视频网站| 亚洲爆乳无码一区二区三区| 9191成人精品久久| 最近中文字幕在线观看视频| 日韩欧美在线第一页| 青青青在线观看视频| 精品国产中文字幕第一页| 久久精品久久精品国产大片| 国产福利一区二区精品秒拍| av成人观看| a级日韩大片| 国产三区二区一区久久| 欧美1区2区3区4区| 久久视频在线观看中文字幕| 色先锋久久影院av| 欧美日韩成人一区二区三区| 免费电影一区二区三区| 日本不卡高清视频一区| 欧美伦理在线视频| 在线视频不卡一区二区| 先锋资源久久| www婷婷av久久久影片| 欧美暴力喷水在线| av无码久久久久久不卡网站| 在线观看的日韩av| 好吊妞无缓冲视频观看| 99热免费精品在线观看| 欧美日韩在线不卡视频| 青草国产精品久久久久久| 亚洲一级片免费| 国产一区二区网址| 无码av免费精品一区二区三区| 99久久伊人网影院| 无码少妇一区二区| 亚洲三级免费观看| 久久精品女人毛片国产| 欧美日韩中文字幕综合视频| а中文在线天堂| 欧美绝品在线观看成人午夜影视| 精品国产无码一区二区| 亚洲国产黄色片| 成年人视频在线免费观看| 久久亚洲私人国产精品va| gogo高清在线播放免费| 国产成人久久久精品一区| 伊人国产精品| 久久久久国产精品视频| 久久中文字幕二区| 成人免费视频91| 全国精品久久少妇| 精品国产aⅴ一区二区三区东京热| 97se亚洲国产综合自在线不卡| 日本一卡二卡在线播放| 一区二区三区四区亚洲| 国产黄色免费视频| 日韩欧美区一区二| 黄色av网址在线免费观看| 欧美精品在线视频观看| 深夜成人影院| 成人羞羞视频免费| 精品国产91久久久久久浪潮蜜月| 国产香蕉一区二区三区| 天堂一区二区在线免费观看| 99999精品| 国产日韩欧美亚洲| 日韩成年人视频| 日韩一区二区中文字幕| 国产午夜精品一区理论片| 欧美黑人极品猛少妇色xxxxx| 午夜av成人| 九九九九久久久久| 国产精品av一区二区| 日韩大片一区二区| 26uuu成人网一区二区三区| 日韩a级片在线观看| 欧美三级三级三级爽爽爽| 天天干,夜夜操| 久久97精品久久久久久久不卡| 成人日韩精品| 久久精品国产综合精品| 亚洲第一黄色| 人妻换人妻仑乱| 国产精品你懂的| 无码一区二区三区| 亚洲精品成a人在线观看| 性网站在线观看| 91九色国产在线| 成人直播大秀| 91视频免费版污| 91丨porny丨首页| 欧美精品亚洲精品日韩精品| 精品毛片乱码1区2区3区| 免费黄色在线| 国产综合色香蕉精品| 欧美一区三区| 三级视频中文字幕| 久久久.com| 韩国av中国字幕| 亚州一区二区三区| 蜜桃麻豆www久久国产精品| 欧美fxxxxxx另类| 五月婷婷六月丁香激情| 国产欧美一区二区精品秋霞影院| 国产91精品一区| 麻豆精品网站| 久久国产精品无码一级毛片| 一区二区三区成人在线视频| 国产丝袜在线视频| 久久精品国产99国产精品澳门| 成人综合网站| 亚洲一区二区三区在线观看视频| 奇米影视7777精品一区二区| 精品一区二区三区蜜桃在线| 91成人免费在线视频| 国产在线小视频| 国产裸体写真av一区二区 | 久草在线视频网站| 国产乱码精品一区二区三区卡| 激情六月综合| 最新在线黄色网址| 欧美综合色免费| 暖暖日本在线观看| 91久色国产| 亚洲国产日本| 成人午夜剧场视频网站| 欧美性感一区二区三区| 黄色一级片在线观看| 福利视频一区二区三区| 亚洲一卡久久| 69精品无码成人久久久久久| 欧美日本在线播放| 蜜乳av一区| 久久资源亚洲| 精品在线观看免费| 青娱乐91视频| 日韩精品中文字幕久久臀| 91亚洲视频| www.男人天堂网| 久久综合色之久久综合| 亚洲综合视频在线播放| 欧美极品欧美精品欧美视频| 中文字幕精品影院| 小泽玛利亚视频在线观看| 一区二区三区在线视频观看58| 先锋av资源站| 国产伦精品免费视频| 亚洲经典三级| 国产又色又爽又高潮免费| 精品福利一二区| 日韩欧美一区二区三区免费观看| 日本不卡一区二区三区四区| 99r精品视频| 国产精品视频久久久久久| 热99久久精品| 在线精品视频在线观看高清| 成人乱码一区二区三区av| 欧美一级二级三级蜜桃| 国产日韩另类视频一区| 国产精品视频二| 国产精品久久久久久户外露出| 狠狠躁夜夜躁av无码中文幕| 国产欧美在线观看| 欧美一级一区| 妺妺窝人体色www在线下载|