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

手把手教你分析 Linux 啟動流程

系統 Linux
本文主要講解當從 bootloader 跳轉到 Linux 系統的啟動函數 start_kernel 后,此函數對系統初始化的流程。

[[424755]]

下載 Linux 內核網址:

https://www.kernel.org/

最新 Linux 內核是 5.15 版本。現在常用 Linux 內核源碼為4.14、4.19、4.9 等版本,其中 4.14 版本源碼壓縮包大概 90+M,解壓后 700+M,合計 61350 個文件。如此眾多的文件,用 source insight 或者 VSCode 查看都會比較卡,所以可以采用在線查看的方式。

在線查看 Linux 內核源碼網址:

https://elixir.bootlin.com/linux/latest/source

在線查看 Android 源碼:

http://androidxref.com/

Android系統是基于Linux 內核的,最底層為Linux內核,源碼量翻很多倍。所以用軟件看安卓源碼更卡,可以使用在線網址看源碼。

我們知道,Linux 系統的啟動,前面有一個啟動引導程序 bootloader,比如常用的 uboot,本文不分析 uboot 的啟動,只放一張流程圖:

本文主要講解當從 bootloader 跳轉到 Linux 系統的啟動函數 start_kernel 后,此函數對系統初始化的流程。

在 linux4.14/arch/arm/kernel/head.S 文件中,是最后匯編階段的初始化,而后會跳轉到 main.c 文件的 start_kernel 函數,在此做 Linux 啟動初始化,在這個函數中會調用將近100個函數去完成 Linux 系統的初始化,調用函數如下(不同內核版本,順序和細節有變化):

linux4.14/init/main.c,start_kernel 函數。

  1. asmlinkage __visible void __init start_kernel(void) 
  2.  char *command_line; 
  3.  char *after_dashes; 
  4.  
  5.  set_task_stack_end_magic(&init_task); 
  6.  smp_setup_processor_id(); 
  7.  debug_objects_early_init(); 
  8.  
  9.  cgroup_init_early(); 
  10.  
  11.  local_irq_disable(); 
  12.  early_boot_irqs_disabled = true
  13.  /* 
  14.   * Interrupts are still disabled. Do necessary setups, then 
  15.   * enable them. 
  16.   */ 
  17.  boot_cpu_init(); 
  18.  page_address_init(); 
  19.  pr_notice("%s", linux_banner); 
  20.  setup_arch(&command_line); 
  21.  /* 
  22.   * Set up the the initial canary and entropy after arch 
  23.   * and after adding latent and command line entropy. 
  24.   */ 
  25.  add_latent_entropy(); 
  26.  add_device_randomness(command_line, strlen(command_line)); 
  27.  boot_init_stack_canary(); 
  28.  mm_init_cpumask(&init_mm); 
  29.  setup_command_line(command_line); 
  30.  setup_nr_cpu_ids(); 
  31.  setup_per_cpu_areas(); 
  32.  smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */ 
  33.  boot_cpu_hotplug_init(); 
  34.  
  35.  build_all_zonelists(NULL); 
  36.  page_alloc_init(); 
  37.  
  38.  pr_notice("Kernel command line: %s\n", boot_command_line); 
  39.  /* parameters may set static keys */ 
  40.  jump_label_init(); 
  41.  parse_early_param(); 
  42.  after_dashes = parse_args("Booting kernel"
  43.       static_command_line, __start___param, 
  44.       __stop___param - __start___param, 
  45.       -1, -1, NULL, &unknown_bootoption); 
  46.  if (!IS_ERR_OR_NULL(after_dashes)) 
  47.   parse_args("Setting init args", after_dashes, NULL, 0, -1, -1, 
  48.       NULL, set_init_arg); 
  49.  /* 
  50.   * These use large bootmem allocations and must precede 
  51.   * kmem_cache_init() 
  52.   */ 
  53.  setup_log_buf(0); 
  54.  pidhash_init(); 
  55.  vfs_caches_init_early(); 
  56.  sort_main_extable(); 
  57.  trap_init(); 
  58.  mm_init(); 
  59.  
  60.  ftrace_init(); 
  61.  
  62.  /* trace_printk can be enabled here */ 
  63.  early_trace_init(); 
  64.  /* 
  65.   * Set up the scheduler prior starting any interrupts (such as the 
  66.   * timer interrupt). Full topology setup happens at smp_init() 
  67.   * time - but meanwhile we still have a functioning scheduler. 
  68.   */ 
  69.  sched_init(); 
  70.  /* 
  71.   * Disable preemption - early bootup scheduling is extremely 
  72.   * fragile until we cpu_idle() for the first time
  73.   */ 
  74.  preempt_disable(); 
  75.  if (WARN(!irqs_disabled(), 
  76.    "Interrupts were enabled *very* early, fixing it\n")) 
  77.   local_irq_disable(); 
  78.  radix_tree_init(); 
  79.  /* 
  80.   * Allow workqueue creation and work item queueing/cancelling 
  81.   * early.  Work item execution depends on kthreads and starts after 
  82.   * workqueue_init(). 
  83.   */ 
  84.  workqueue_init_early(); 
  85.  
  86.  rcu_init(); 
  87.  
  88.  /* Trace events are available after this */ 
  89.  trace_init(); 
  90.  
  91.  context_tracking_init(); 
  92.  /* init some links before init_ISA_irqs() */ 
  93.  early_irq_init(); 
  94.  init_IRQ(); 
  95.  tick_init(); 
  96.  rcu_init_nohz(); 
  97.  init_timers(); 
  98.  hrtimers_init(); 
  99.  softirq_init(); 
  100.  timekeeping_init(); 
  101.  time_init(); 
  102.  sched_clock_postinit(); 
  103.  printk_safe_init(); 
  104.  perf_event_init(); 
  105.  profile_init(); 
  106.  call_function_init(); 
  107.  WARN(!irqs_disabled(), "Interrupts were enabled early\n"); 
  108.  early_boot_irqs_disabled = false
  109.  local_irq_enable(); 
  110.  
  111.  kmem_cache_init_late(); 
  112.  /* 
  113.   * HACK ALERT! This is early. We're enabling the console before 
  114.   * we've done PCI setups etc, and console_init() must be aware of 
  115.   * this. But we do want output early, in case something goes wrong. 
  116.   */ 
  117.  console_init(); 
  118.  if (panic_later) 
  119.   panic("Too many boot %s vars at `%s'", panic_later, 
  120.         panic_param); 
  121.  
  122.  lockdep_info(); 
  123.  /* 
  124.   * Need to run this when irqs are enabled, because it wants 
  125.   * to self-test [hard/soft]-irqs on/off lock inversion bugs 
  126.   * too: 
  127.   */ 
  128.  locking_selftest(); 
  129.  /* 
  130.   * This needs to be called before any devices perform DMA 
  131.   * operations that might use the SWIOTLB bounce buffers. It will 
  132.   * mark the bounce buffers as decrypted so that their usage will 
  133.   * not cause "plain-text" data to be decrypted when accessed. 
  134.   */ 
  135.  mem_encrypt_init(); 
  136.  
  137. #ifdef CONFIG_BLK_DEV_INITRD 
  138.  if (initrd_start && !initrd_below_start_ok && 
  139.      page_to_pfn(virt_to_page((void *)initrd_start)) < min_low_pfn) { 
  140.   pr_crit("initrd overwritten (0x%08lx < 0x%08lx) - disabling it.\n"
  141.       page_to_pfn(virt_to_page((void *)initrd_start)), 
  142.       min_low_pfn); 
  143.   initrd_start = 0; 
  144.  } 
  145. #endif 
  146.  kmemleak_init(); 
  147.  debug_objects_mem_init(); 
  148.  setup_per_cpu_pageset(); 
  149.  numa_policy_init(); 
  150.  if (late_time_init) 
  151.   late_time_init(); 
  152.  calibrate_delay(); 
  153.  pidmap_init(); 
  154.  anon_vma_init(); 
  155.  acpi_early_init(); 
  156. #ifdef CONFIG_X86 
  157.  if (efi_enabled(EFI_RUNTIME_SERVICES)) 
  158.   efi_enter_virtual_mode(); 
  159. #endif 
  160.  thread_stack_cache_init(); 
  161.  cred_init(); 
  162.  fork_init(); 
  163.  proc_caches_init(); 
  164.  buffer_init(); 
  165.  key_init(); 
  166.  security_init(); 
  167.  dbg_late_init(); 
  168.  vfs_caches_init(); 
  169.  pagecache_init(); 
  170.  signals_init(); 
  171.  proc_root_init(); 
  172.  nsfs_init(); 
  173.  cpuset_init(); 
  174.  cgroup_init(); 
  175.  taskstats_init_early(); 
  176.  delayacct_init(); 
  177.  
  178.  check_bugs(); 
  179.  
  180.  acpi_subsystem_init(); 
  181.  arch_post_acpi_subsys_init(); 
  182.  sfi_init_late(); 
  183.  
  184.  if (efi_enabled(EFI_RUNTIME_SERVICES)) { 
  185.   efi_free_boot_services(); 
  186.  } 
  187.  /* Do the rest non-__init'ed, we're now alive */ 
  188.  rest_init(); 
  189.  
  190.  prevent_tail_call_optimization(); 

其中有七個函數較為重要,分別為:

  1. setup_arch(&command_line); 
  2.  
  3. mm_init(); 
  4.  
  5. sched_init(); 
  6.  
  7. init_IRQ(); 
  8.  
  9. console_init(); 
  10.  
  11. vfs_caches_init(); 
  12.  
  13. rest_init(); 

1、setup_arch(&command_line)

此函數是系統架構初始化函數,處理 uboot 傳遞進來的參數,不同的架構進行不同的初始化,也就是說每個架構都會有一個 setup_arch 函數。

linux4.14/arch/arm/kernel/setup.c

2、mm_init

內存初始化函數

linux4.14/init/main.c

3、sched_init

核心進程調度器初始化。Linux 內核實現了四種調度方式,一般是采用 CFS 調度方式。作為一個普適性的操作系統,必須考慮各種需求,我們不能只按照中斷優先級或者時間輪轉片來規定進程運行的時間。作為一個多用戶操作系統,必須考慮到每個用戶的公平性。不能因為一個用戶沒有高級權限,就限制他的進程的運行時間,要考慮每個用戶擁有公平的時間。

linux4.14/kernel/sched/core.c

4、init_IRQ

中斷初始化函數,這個很好理解,大家都用過中斷。

linux4.14/arch/arm/kernel/irq.c

5、console_init

在這個函數初始化之前,你所有寫的內核打印函數 printk 都打印不出東西。在這個函數初始化之前,所有打印都會存在 buf 里,此函數初始化以后,會將 buf里面的數據打印出來,你才能在終端看到 printk 打印的東西。

tty 是 Linux 中的終端, _con_initcall_start 和_con_initcall_end 這兩句的意思是執行所有兩者之間的 initcall 函數。

linux4.14/kernel/printk/printk.c

6、vfs_caches_init

虛擬文件系統初始化,比如 sysfs,根文件系統等,就是在這一步進行掛載,proc 是內核虛擬的,用來輸出內核數據結構信息,不算在這里。

vfs虛擬文件系統,屏蔽了底層硬件的不同,提供了統一了接口,方便系統的移植和使用。使用戶在不用更改應用代碼的情況下直接移植代碼到其他平臺。

linux4.14/fs/dcache.c

這里的掛載主要在mnt_init()函數中:

linux4.14/fs/namespace.c

7、rest_init

這個函數可以算是 start_kernel函數調用的最后一個函數,在這里產生了最重要的兩個內核進程 kernel_init 和 kthreadd,kernel_init后面會從內核空間跳轉到用戶空間,變成用戶空間的 init 進程,PID=1,而 kthreadd ,PID=2,是內核進程,專門用來監聽創建內核進程的請求,它維護了一個鏈表,如果有創建內核進程的需求,就會在鏈表上創建。

至此,用戶空間最重要的 init 進程已經出來,后面用戶空間的進程都由 init進程來 fork。如果是安卓系統,init 進程會 fork 出一個 zygote 進程,他是所有安卓系統進程的父進程。

linux4.14/init.main.c

上圖,400 行創建了 kernel_init 進程,412 行創建了 kthreadd 進程,這兩個都是內核進程。426 行通知 kernel_init 進程 kthreadd 已經創建完畢。也就是說,實際上是 kthreadd 先運行,kernel_init 再運行。

其余的函數大家可以參照下面的文章去理解:

https://www.cnblogs.com/andyfly/p/9410441.html

https://www.cnblogs.com/lifexy/p/7366782.html 

https://www.cnblogs.com/yanzs/p/13910344.html#radix_tree:init

本文轉載自微信公眾號「嵌入式Linux系統開發」

 

責任編輯:姜華 來源: 嵌入式Linux系統開發
相關推薦

2021-09-22 08:51:34

Android

2011-01-10 14:41:26

2020-04-14 10:20:12

MySQL數據庫死鎖

2024-10-16 11:40:47

2022-01-17 07:50:37

Linux Patch項目

2021-07-14 09:00:00

JavaFX開發應用

2011-05-03 15:59:00

黑盒打印機

2025-05-07 00:31:30

2017-05-18 12:45:35

數據分析數據理解數據

2009-06-15 16:58:57

Java安裝Linux

2020-06-01 16:25:43

WindowsLinux命令

2023-04-26 12:46:43

DockerSpringKubernetes

2022-01-08 20:04:20

攔截系統調用

2022-12-07 08:42:35

2022-03-14 14:47:21

HarmonyOS操作系統鴻蒙

2022-07-27 08:16:22

搜索引擎Lucene

2022-11-06 14:46:28

腳本windows文件

2025-02-26 07:40:25

運營分析體系運營策略

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口
點贊
收藏

51CTO技術棧公眾號

国产精品乱人伦中文| 欧美专区一区二区三区| 欧美一区二区免费视频| 国产玉足脚交久久欧美| 天堂av在线播放| 免费高清视频精品| 欧美激情视频在线| 亚洲自拍偷拍图| 日本一区影院| 欧洲一区在线电影| www.国产在线视频| 在线观看黄av| 99久久久免费精品国产一区二区| 国产精品三级久久久久久电影| 中文字幕另类日韩欧美亚洲嫩草| 亚洲美女久久| 日韩三级.com| www.com黄色片| 免费在线小视频| 亚洲精品中文字幕乱码三区| 欧美性xxxx69| 日韩中文字幕免费在线观看| 久久99精品久久久久久| 欧美在线国产精品| 久久久精品国产sm调教| 欧美午夜精品一区二区三区电影| 亚洲国产欧美精品| 中文字幕人妻熟女人妻a片| 91超碰碰碰碰久久久久久综合| 亚洲午夜三级在线| 无码人妻aⅴ一区二区三区日本| 国产美女视频一区二区三区 | 91精品国产91久久久久久久久| 精品人体无码一区二区三区| 日日天天久久| 精品国产麻豆免费人成网站| 先锋资源在线视频| 爱情电影网av一区二区| 欧美午夜理伦三级在线观看| 国产日韩一区二区在线| 精品丝袜在线| 亚洲v中文字幕| 亚洲精品国产suv一区88| 午夜在线视频播放| 欧美激情一区二区在线| 日本午夜精品一区二区| 日本福利在线观看| 91年精品国产| 欧美日韩在线播放一区二区| 日本成人一区| 久久久久久免费网| 欧美18视频| 青青草视频在线观看| 92精品国产成人观看免费| 国产嫩草一区二区三区在线观看| www.好吊色| 国产成人aaa| 粉嫩av四季av绯色av第一区| 亚洲第一成年人网站| 大桥未久av一区二区三区中文| 成人片在线免费看| 人人妻人人玩人人澡人人爽| 99精品欧美一区| 欧美日韩免费高清| 69久久精品| 最新日韩av在线| 日本a在线天堂| av白虎一区| 欧美日韩在线视频一区| 日本中文字幕片| 成人国产网站| 日韩午夜激情电影| 欧美在线一级片| 国产在线观看91一区二区三区| 中文在线不卡视频| 欧美精品久久久久久久久46p| 欧美69视频| 97av在线影院| 亚洲网站免费观看| 国产高清不卡二三区| 国产亚洲精品久久飘花| 国产有码在线| 一区二区在线观看av| 大伊香蕉精品视频在线| 欧美黑人一区| 4438成人网| 欧美无人区码suv| 欧美久久综合网| 久久69精品久久久久久久电影好| 中日韩黄色大片| 免费在线观看一区二区三区| 亚洲永久在线观看| 青青草在线免费观看| 亚洲欧美在线另类| 欧美视频第一区| 亚洲ww精品| 国产午夜精品麻豆| 老妇女50岁三级| 日韩电影在线观看电影| 2014亚洲精品| 免费黄网站在线观看| 亚洲男人的天堂av| 毛葺葺老太做受视频| 成人污污视频| 国产亚洲精品va在线观看| 久久国产精品波多野结衣av| 日本午夜精品一区二区三区电影| av一本久道久久波多野结衣| av在线日韩国产精品| 亚洲va欧美va国产va天堂影院| 日韩肉感妇bbwbbwbbw| 国产成人aa在线观看网站站| 日韩中文在线视频| 国产精品久免费的黄网站| 国产精品一卡二| 亚洲 日韩 国产第一区| 久热在线观看视频| 日韩精品一区二区三区视频播放 | 亚洲人成网站在线| 黄色一级大片在线观看| 国产精品白丝av嫩草影院| xvideos国产精品| 欧美一级淫片免费视频黄| 成人一级片在线观看| 在线天堂一区av电影| 欧美性xxx| 亚洲精品福利视频| 久久婷婷一区二区| 国产一区二区视频在线| 亚洲最大色综合成人av| 天天综合网天天| 亚洲精品一区二区久| 国产精品变态另类虐交| 国产成人在线电影| 精品视频在线观看一区二区| 国产精品一区二区三区av| 中文字幕精品在线| 一区二区乱子伦在线播放| 久久综合视频网| 97国产精东麻豆人妻电影| 哺乳挤奶一区二区三区免费看| 久久久99久久精品女同性| 一级片一区二区三区| 国产清纯在线一区二区www| 黑人糟蹋人妻hd中文字幕| 久久aimee| 88xx成人精品| 天堂а√在线8种子蜜桃视频| 亚洲香肠在线观看| 91精品小视频| 免费亚洲视频| 欧美在线播放一区| 91精品国产经典在线观看| 自拍偷拍亚洲一区| 亚洲综合免费视频| 一区二区三区在线观看视频 | 亚洲中文字幕无码爆乳av | 欧美日韩在线高清| 欧美大片1688网站| 久久激情视频久久| wwwav网站| 亚洲高清不卡在线| 一本色道综合久久欧美日韩精品 | 国产精品对白刺激| 91短视频版在线观看www免费| 欧美三级三级三级爽爽爽| 成年人视频软件| 久草在线在线精品观看| 麻豆传媒网站在线观看| 国产伦乱精品| 国产成人一区二区三区小说| 成年人在线观看视频| 欧美另类久久久品| 久久久久久天堂| 久久婷婷色综合| 天天干天天操天天做| 欧美jizzhd精品欧美巨大免费| 国产精品久久九九| 樱桃视频成人在线观看| 日韩一级黄色av| 人妻丰满熟妇av无码区hd| 色88888久久久久久影院按摩| 网站永久看片免费| 成人av中文字幕| 九九热免费精品视频| 欧美三级免费| 日本一区视频在线| 精品中文字幕一区二区三区四区| 国内外成人免费激情在线视频 | 欧美日韩一区二区三区在线电影 | 日韩美女啊v在线免费观看| 国产乱国产乱老熟300部视频| 久久精品电影| 国产乱子伦精品无码专区| 国产成人高清| 国产精选一区二区| 日韩欧国产精品一区综合无码| 久久久久久久久久久免费精品| 国产黄色免费在线观看| 亚洲高清福利视频| 国产精品伊人久久| 色婷婷亚洲一区二区三区| 美女视频黄免费| 国产精品福利在线播放| 菠萝菠萝蜜网站| 国产成人在线视频免费播放| 黑鬼大战白妞高潮喷白浆| 欧美三级特黄| aaa免费在线观看| 国产免费久久| 久久国产精品免费一区| 免费观看在线一区二区三区| 国产精品日日做人人爱| 天堂av在线网| 97国产精品视频人人做人人爱| 黄色av电影在线观看| 国产一区二区av| 日本高清中文字幕二区在线| 精品噜噜噜噜久久久久久久久试看| 在线观看xxxx| 在线观看av一区| 黄色一级视频免费看| 亚洲高清一区二区三区| 男人的天堂久久久| 国产精品黄色在线观看| 影音先锋制服丝袜| 久久久久久久久久久久久女国产乱| 国产日韩视频一区| 国产成人在线视频播放| 中文字幕在线观看视频www| 久久99久久99小草精品免视看| 国产精品无码专区av在线播放| 国产精品亚洲综合色区韩国| 久久久亚洲精品无码| 欧美黄色免费| 日本大胆人体视频| 欧美日韩网址| 男人添女人下部视频免费| 欧美搞黄网站| 免费观看亚洲视频| 欧美日韩三区| 国产精品一线二线三线| 亚洲一级特黄| 人人干视频在线| 久久成人在线| 无码人妻丰满熟妇区毛片| 久久精品官网| 精品日韩久久久| 久草在线在线精品观看| 激情图片中文字幕| 国产98色在线|日韩| 99免费观看视频| 99久久99久久精品免费观看| 日本三级日本三级日本三级极| 成人av在线影院| 免费a在线观看播放| 久久午夜老司机| 制服丨自拍丨欧美丨动漫丨| 中文字幕亚洲一区二区va在线| 国产真实乱在线更新| 亚洲黄色录像片| 日韩精品国产一区二区| 色综合久久88色综合天天免费| 日本成人一级片| 91精品国产91久久久久久一区二区 | 久久99亚洲网美利坚合众国| 97精品国产97久久久久久| 吞精囗交69激情欧美| 成人xvideos免费视频| 日韩精品一区国产| 久久久久久九九九九| 日韩成人精品一区| 久久福利一区二区| 天堂久久久久va久久久久| 久久国产精品国产精品| 国产成人午夜电影网| av在线网站观看| 一区在线中文字幕| 日韩不卡视频在线| 欧美日韩激情在线| 日韩在线观看视频网站| 中文字幕日本精品| www.超碰在线| 国产中文字幕日韩| 成人精品毛片| 亚洲一区二区三区加勒比| 国内精品久久久久久久影视蜜臀| aⅴ在线免费观看| 国产大陆a不卡| 欧美 日韩 成人| 亚洲影院久久精品| 亚洲免费视频二区| 亚洲激情视频在线| 国产区av在线| 午夜美女久久久久爽久久| 欧美日韩国产网站| 国产伦精品一区二区三毛| 欧美裸体在线版观看完整版| 欧美a级免费视频| 美女一区二区视频| 三级男人添奶爽爽爽视频| 亚洲日本va在线观看| 无码无套少妇毛多18pxxxx| 精品国产亚洲在线| 欧美r级在线| 欧美有码在线观看| 伊人www22综合色| 亚洲一区三区在线观看| 亚洲主播在线| 日本黄色大片在线观看| 亚洲欧洲日韩av| 最近国语视频在线观看免费播放| 亚洲第一偷拍网| 伊人影院在线视频| 成人免费视频网址| 国产欧美日韩精品一区二区免费| 欧美精品久久久久久久自慰| 精品一二线国产| 女人裸体性做爰全过| 91成人免费电影| 美女欧美视频在线观看免费| 欧美精品激情在线| caoporn成人| 青青视频免费在线| 国产自产v一区二区三区c| jizz18女人高潮| 日本道色综合久久| 男人的天堂在线免费视频| 97人人模人人爽人人喊中文字| 亚洲视频三区| 国产成人亚洲综合无码| 久久精品免费观看| 人妻无码一区二区三区免费| 欧美亚洲国产bt| av资源种子在线观看| 国产精品69av| 欧美三级情趣内衣| 一区二区成人网| 国产色婷婷亚洲99精品小说| 人人草在线观看| 亚洲一品av免费观看| 暖暖成人免费视频| 欧美日韩在线高清| 欧美96一区二区免费视频| 午夜影院黄色片| 欧美日韩不卡在线| 成人毛片av在线| 99re国产视频| 国产日韩精品视频一区二区三区| 在线视频 日韩| 欧美性猛交视频| 搞黄视频免费在线观看| 国产综合久久久久| 伊人久久大香线蕉综合四虎小说| 两性午夜免费视频| 亚洲一区二区黄色| 亚洲 欧美 激情 另类| 日本韩国欧美精品大片卡二| 精品视频免费| theporn国产精品| 一区二区三区日本| 无码精品一区二区三区在线| 国产97免费视| 性欧美69xoxoxoxo| 国产精品久久久久野外| 亚洲高清久久久| 国产www.大片在线| 91精品美女在线| 亚洲高清免费| 亚洲激情视频小说| 欧美日产国产精品| 密臀av在线| 午夜精品视频在线观看一区二区| 国产在线播放一区三区四| 四虎成人精品永久免费av| 国产婷婷成人久久av免费高清| 精品美女一区| 欧洲精品一区二区三区久久| 国产色产综合产在线视频| 国产美女主播在线观看| 性欧美长视频免费观看不卡 | 黄色一级片国产| 久久久91精品国产一区二区精品 | **在线精品| 视频一区二区视频| 久久久国产精品不卡| 国产视频手机在线观看| 日本91av在线播放| 一区二区三区午夜探花| 国产全是老熟女太爽了| 日韩三区在线观看| 日韩av首页| 夜夜添无码一区二区三区| 中文字幕中文字幕在线一区| 欧美在线精品一区二区三区| 国产精品爽爽爽| 亚洲一区二区毛片| 久久久久久久久久久久国产| 国产午夜一区二区| 久久夜色电影|