日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Pie源码阅读 -----深入理解init(一)

發布時間:2024/3/13 Android 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Pie源码阅读 -----深入理解init(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

在閱讀源碼之前,我們應要熟悉整個Android的系統架構,在針對某一層進行深入理解,否則東看西看沒有方向沒有目標會導致思緒紊亂,這樣讀源碼的效果不佳

這篇文章主要參考gityuan閱讀Android 7.0的源碼,順著他的思路我理了一遍Android 9.0的代碼,如果有地方理解錯了,謝謝指出!!


?Android整體系統框架

?


?Linux 內核


Android 平臺的基礎是 Linux 內核。這一層包含Linux內核和一些驅動模塊(比如USB驅動、Camera驅動等)

硬件抽象層 (HAL)


硬件抽象層 (HAL) 提供標準界面,向更高級別的 Java API 框架顯示設備硬件功能。HAL 包含多個庫模塊,其中每個模塊都為特定類型的硬件組件實現一個界面,例如相機或藍牙模塊。當框架 API 要求訪問設備硬件時,Android 系統將為該硬件組件加載庫模塊。

Android Runtime


對于運行 Android 5.0(API 級別 21)或更高版本的設備,每個應用都在其自己的進程中運行,并且有其自己的 Android Runtime (ART) 實例。ART 編寫為通過執行 DEX 文件在低內存設備上運行多個虛擬機,DEX 文件是一種專為 Android 設計的字節碼格式,經過優化,使用的內存很少。編譯工具鏈(例如 Jack)將 Java 源代碼編譯為 DEX 字節碼,使其可在 Android 平臺上運行。

ART 的部分主要功能包括:

預先 (AOT) 和即時 (JIT) 編譯
優化的垃圾回收 (GC)
更好的調試支持,包括專用采樣分析器、詳細的診斷異常和崩潰報告,并且能夠設置監視點以監控特定字段

在 Android 版本 5.0(API 級別 21)之前,Dalvik 是 Android Runtime。如果您的應用在 ART 上運行效果很好,那么它應該也可在 Dalvik 上運行,但反過來不一定。

?原生 C/C++ 庫?


許多核心 Android 系統組件和服務(例如 ART 和 HAL)構建自原生代碼,需要以 C 和 C++ 編寫的原生庫。Android 平臺提供 Java 框架 API 以向應用顯示其中部分原生庫的功能。例如,您可以通過 Android 框架的 Java OpenGL API 訪問 OpenGL ES,以支持在應用中繪制和操作 2D 和 3D 圖形。

Java API 框架


您可通過以 Java 語言編寫的 API 使用 Android OS 的整個功能集。這些 API 形成創建 Android 應用所需的構建塊,它們可簡化核心模塊化系統組件和服務的重復使用,這一點也是我們常用到的一塊地方

系統應用?


Android 隨附一套用于電子郵件、短信、日歷、互聯網瀏覽和聯系人等的核心應用。平臺隨附的應用與用戶可以選擇安裝的應用一樣,沒有特殊狀態。因此第三方應用可成為用戶的默認網絡瀏覽器、短信 Messenger 甚至默認鍵盤(有一些例外,例如系統的“設置”應用)。

**所以我們這次就先從Native C/C++這一邊開始看,這里面有許多核心的Android系統組件和服務,接下來我們先下載源碼 platform-system-core-pie-release,從這邊開始就進入Native源碼的世界了**
?
這個源碼里的官方提供的文檔有這么一句話:

/init.rc is the primary .rc file and is loaded by the init executable at the beginning of its execution. ?It is responsible for the initial set up of the system.?

init這個函數負責系統的初始化,所以接下來也會從這個點切入。

?
? ?1.init概述


? init是Android系統中用戶空間的第一個進程,它的進程號是1。我們肯能經常聽到過zygote,那么這個zygote是如何被創建的呢,init的屬性服務又是如何提供的。
??


? ? ?2.init分析


以下代碼很長,請保持耐心!
在下面代碼我會將一些函數標記為log n ,大家可以通過log1等去快速查找相應函數所代表的含義

?2.1main函數


首先看入口函數main的代碼

?

int main(int argc, char** argv) {...(將文件屬性設置為077權限)// 第一階段bool is_first_stage = (getenv("INIT_SECOND_STAGE") == nullptr);if (is_first_stage) {?boot_clock::time_point start_time = boot_clock::now();// Clear the umask.?umask(0); //umask()函數:設置建立新文件時的權限遮罩clearenv(); ?//清除所有的環境變量setenv("PATH", _PATH_DEFPATH, 1); //設置環境變量// Get the basic filesystem setup we need put together in the initramdisk// on / and then we'll let the rc file figure out the rest.mount("tmpfs", "/dev", "tmpfs", MS_NOSUID, "mode=0755");mkdir("/dev/pts", 0755);mkdir("/dev/socket", 0755);mount("devpts", "/dev/pts", "devpts", 0, NULL);#define MAKE_STR(x) __STRING(x)mount("proc", "/proc", "proc", 0, "hidepid=2,gid=" MAKE_STR(AID_READPROC));// Don't expose the raw commandline to unprivileged processes.chmod("/proc/cmdline", 0440);gid_t groups[] = { AID_READPROC };setgroups(arraysize(groups), groups);mount("sysfs", "/sys", "sysfs", 0, NULL);mount("selinuxfs", "/sys/fs/selinux", "selinuxfs", 0, NULL);mknod("/dev/kmsg", S_IFCHR | 0600, makedev(1, 11));if constexpr (WORLD_WRITABLE_KMSG) {mknod("/dev/kmsg_debug", S_IFCHR | 0622, makedev(1, 11));}mknod("/dev/random", S_IFCHR | 0666, makedev(1, 8));mknod("/dev/urandom", S_IFCHR | 0666, makedev(1, 9));// Mount staging areas for devices managed by vold// See storage config details at http://source.android.com/devices/storage/mount("tmpfs", "/mnt", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV,"mode=0755,uid=0,gid=1000");// /mnt/vendor is used to mount vendor-specific partitions that can not be// part of the vendor partition, e.g. because they are mounted read-write.mkdir("/mnt/vendor", 0755);// Now that tmpfs is mounted on /dev and we have /dev/kmsg, we can actually// talk to the outside world...InitKernelLogging(argv); // log2//以上掛載一些文件(掛載:它指將一個設備(通常是存儲設備)掛接到一個已存在的目錄上。)LOG(INFO) << "init first stage started!";//log2if (!DoFirstStageMount()) {LOG(FATAL) << "Failed to mount required partitions early ...";}SetInitAvbVersionInRecovery();// Enable seccomp if global boot option was passed (otherwise it is enabled in zygote).global_seccomp();// Set up SELinux, loading the SELinux policy.// 安裝SELinuxSelinuxSetupKernelLogging();SelinuxInitialize();// We're in the kernel domain, so re-exec init to transition to the init domain now// that the SELinux policy has been loaded.if (selinux_android_restorecon("/init", 0) == -1) {PLOG(FATAL) << "restorecon failed of /init failed";}setenv("INIT_SECOND_STAGE", "true", 1);static constexpr uint32_t kNanosecondsPerMillisecond = 1e6;uint64_t start_ms = start_time.time_since_epoch().count() / kNanosecondsPerMillisecond;setenv("INIT_STARTED_AT", std::to_string(start_ms).c_str(), 1);char* path = argv[0];char* args[] = { path, nullptr };execv(path, args);// execv() only returns if an error happened, in which case we// panic and never fall through this conditional.PLOG(FATAL) << "execv(\"" << path << "\") failed";}//此時我們處于init的第二階段InitKernelLogging(argv);LOG(INFO) << "init second stage started!";// Set up a session keyring that all processes will have access to. It will hold things like FBE encryption keys. No process should override its session keyring.//設置所有進程都可以訪問的會話密匙環。它將保存FBE加密密鑰之類的東西。任何進程都不應覆蓋其會話密鑰環。keyctl_get_keyring_ID(KEY_SPEC_SESSION_KEYRING, 1);// Indicate that booting is in progress to background fw loaders, etc.//指示正在引導到后臺fw加載器,等等。close(open("/dev/.booting", O_WRONLY | O_CREAT | O_CLOEXEC, 0000));property_init();// If arguments are passed both on the command line and in DT,// properties set in DT always have priority over the command-line ones.如果參數同時在命令行和DT中傳遞,// DT中設置的屬性總是優先于命令行屬性。process_kernel_dt();process_kernel_cmdline();// Propagate the kernel variables to internal variables// used by init as well as the current required properties.//將內核變量傳播到內部變量//用于init以及當前所需的屬性。export_kernel_boot_props();// Make the time that init started available for bootstat to log.//讓init啟動的時間可供bootstat進行日志記錄。property_set("ro.boottime.init", getenv("INIT_STARTED_AT"));property_set("ro.boottime.init.selinux", getenv("INIT_SELINUX_TOOK"));// Set libavb version for Framework-only OTA match in Treble build.const char* avb_version = getenv("INIT_AVB_VERSION");if (avb_version) property_set("ro.boot.avb_version", avb_version);// Clean up our environment.//將libavb版本設置為只有框架的OTA匹配。unsetenv("INIT_SECOND_STAGE");unsetenv("INIT_STARTED_AT");unsetenv("INIT_SELINUX_TOOK");unsetenv("INIT_AVB_VERSION");// Now set up SELinux for second stage.//現在為第二階段設置SELinux。SelinuxSetupKernelLogging();SelabelInitialize();SelinuxRestoreContext();epoll_fd = epoll_create1(EPOLL_CLOEXEC);if (epoll_fd == -1) {PLOG(FATAL) << "epoll_create1 failed";}sigchld_handler_init();if (!IsRebootCapable()) {// If init does not have the CAP_SYS_BOOT capability, it is running in a container.// In that case, receiving SIGTERM will cause the system to shut down.//如果init沒有CAP_SYS_BOOT功能,它將在容器中運行。 //在這種情況下,接收SIGTERM將導致系統關閉。InstallSigtermHandler();}property_load_boot_defaults();export_oem_lock_status();start_property_service();set_usb_controller();const BuiltinFunctionMap function_map;Action::set_function_map(&function_map);subcontexts = InitializeSubcontexts();ActionManager& am = ActionManager::GetInstance();ServiceList& sm = ServiceList::GetInstance();LoadBootScripts(am, sm);// Turning this on and letting the INFO logging be discarded adds 0.2s to// Nexus 9 boot time, so it's disabled by default.if (false) DumpState();am.QueueEventTrigger("early-init");// Queue an action that waits for coldboot done so we know ueventd has set up all of /dev...//隊列一個等待冷啟動完成的動作,這樣我們就知道ueventd已經設置了所有/dev…am.QueueBuiltinAction(wait_for_coldboot_done_action, "wait_for_coldboot_done");// ... so that we can start queuing up actions that require stuff from /dev./// /……這樣我們就可以開始對需要/dev中的內容的操作進行排隊。am.QueueBuiltinAction(MixHwrngIntoLinuxRngAction, "MixHwrngIntoLinuxRng");am.QueueBuiltinAction(SetMmapRndBitsAction, "SetMmapRndBits");am.QueueBuiltinAction(SetKptrRestrictAction, "SetKptrRestrict");am.QueueBuiltinAction(keychord_init_action, "keychord_init");am.QueueBuiltinAction(console_init_action, "console_init");//log3// Trigger all the boot actions to get us started.//觸發所有啟動操作,讓我們開始。am.QueueEventTrigger("init");// Repeat mix_hwrng_into_linux_rng in case /dev/hw_random or /dev/random// wasn't ready immediately after wait_for_coldboot_doneam.QueueBuiltinAction(MixHwrngIntoLinuxRngAction, "MixHwrngIntoLinuxRng");// Don't mount filesystems or start core system services in charger mode.//不要在充電器模式下安裝文件系統或啟動核心系統服務。std::string bootmode = GetProperty("ro.bootmode", "");if (bootmode == "charger") {am.QueueEventTrigger("charger");} else {am.QueueEventTrigger("late-init");}// Run all property triggers based on current state of the properties.//根據屬性的當前狀態運行所有屬性觸發器。am.QueueBuiltinAction(queue_property_triggers_action, "queue_property_triggers");while (true) {// By default, sleep until something happens.//默認情況下,睡眠直到一些事情觸發。int epoll_timeout_ms = -1;if (do_shutdown && !shutting_down) {do_shutdown = false;if (HandlePowerctlMessage(shutdown_command)) {shutting_down = true;}}if (!(waiting_for_prop || Service::is_exec_service_running())) {am.ExecuteOneCommand();//循環遍歷事件隊列,直到有一個操作要執行}if (!(waiting_for_prop || Service::is_exec_service_running())) {if (!shutting_down) {auto next_process_restart_time = RestartProcesses();?// If there's a process that needs restarting, wake up in time for that.//如果有一個過程需要重新啟動,及時醒來。?if (next_process_restart_time) {epoll_timeout_ms = std::chrono::ceil<std::chrono::milliseconds>(*next_process_restart_time - boot_clock::now()).count();if (epoll_timeout_ms < 0) epoll_timeout_ms = 0;}}// If there's more work to do, wake up again immediately.if (am.HasMoreCommands()) epoll_timeout_ms = 0;}epoll_event ev;// 循環等待事件發生int nr = TEMP_FAILURE_RETRY(epoll_wait(epoll_fd, &ev, 1, epoll_timeout_ms));if (nr == -1) {PLOG(ERROR) << "epoll_wait failed";} else if (nr == 1) {((void (*)()) ev.data.ptr)();}}


??
?2.2 log2: InitKernelLogging(argv) Log() log系統
??


? includer log.h
??

#define KLOG_ERROR_LEVEL ? 3 #define KLOG_WARNING_LEVEL 4 #define KLOG_NOTICE_LEVEL ?5 #define KLOG_INFO_LEVEL ? ?6 #define KLOG_DEBUG_LEVEL ? 7


??
?2.3 log3:QueueBuiltinAction ?對內容的一系列操作

?am.QueueBuiltinAction(MixHwrngIntoLinuxRngAction, "MixHwrngIntoLinuxRng");am.QueueBuiltinAction(SetMmapRndBitsAction, "SetMmapRndBits");am.QueueBuiltinAction(SetKptrRestrictAction, "SetKptrRestrict");am.QueueBuiltinAction(keychord_init_action, "keychord_init");am.QueueBuiltinAction(console_init_action, "console_init");


?3 init重點分析

?

接下來,解讀init的main方法中的4大塊核心知識點:信號處理、rc文件語法、啟動服務以及屬性服務

?

?3.1信號處理

? sigchld_handler_init();


? 首先看下這個函數做了什么事
??
? [-> sigchld_handler.cpp]
??
?

void sigchld_handler_init() {// 為SIGCHLD創建一個信令機制。int s[2];if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0, s) == -1) {PLOG(FATAL) << "socketpair failed in sigchld_handler_init";}signal_write_fd = s[0];signal_read_fd = s[1];// 如果我們捕獲了SIGCHLD,則寫入signal_write_fd。struct sigaction act;memset(&act, 0, sizeof(act));act.sa_handler = SIGCHLD_handler;// SA_NOCLDSTOP使init進程只有在其子進程終止時才會受到SIGCHLD信號act.sa_flags = SA_NOCLDSTOP;sigaction(SIGCHLD, &act, 0);//進入waitpid來處理子進程是否退出的情況ReapAnyOutstandingChildren();//register_epoll_handler(signal_read_fd, handle_signal); }


??
? 每個進程在處理其他進程發送的signal信號時都需要先注冊,當進程的運行狀態改變或終止時會產生某種signal信號,init進程是所有用戶空間進程的父進程,當其子進程終止時產生sigchld信號,傳遞參數給sigaction結構體,便完成信號處理的過程。
? 這里看下2個重要函數:
??
?
?

//寫入數據static void SIGCHLD_handler(int) {if (TEMP_FAILURE_RETRY(write(signal_write_fd, "1", 1)) == -1) {PLOG(ERROR) << "write(signal_write_fd) failed";} }//讀取數據 static void handle_signal() {// Clear outstanding requests.char buf[32];//讀取signal_read_fd中的數據,并放入bufread(signal_read_fd, buf, sizeof(buf));ReapAnyOutstandingChildren(); }


??
我們繼續看下 ReapAnyOutstandingChildren()函數,里面的ReapOneProcess()又是一個很長的函數

void ReapAnyOutstandingChildren() {while (ReapOneProcess()) {} }static bool ReapOneProcess() {siginfo_t siginfo = {};// This returns a zombie pid or informs us that there are no zombies left to be reaped.// It does NOT reap the pid; that is done below.if (TEMP_FAILURE_RETRY(waitid(P_ALL, 0, &siginfo, WEXITED | WNOHANG | WNOWAIT)) != 0) {PLOG(ERROR) << "waitid failed";return false;}auto pid = siginfo.si_pid;if (pid == 0) return false;// At this point we know we have a zombie pid, so we use this scopeguard to reap the pid// whenever the function returns from this point forward.// We do NOT want to reap the zombie earlier as in Service::Reap(), we kill(-pid, ...) and we// want the pid to remain valid throughout that (and potentially future) usages.auto reaper = make_scope_guard([pid] { TEMP_FAILURE_RETRY(waitpid(pid, nullptr, WNOHANG)); });std::string name;std::string wait_string;Service* service = nullptr;if (PropertyChildReap(pid)) {name = "Async property child";} else if (SubcontextChildReap(pid)) {name = "Subcontext";} else {service = ServiceList::GetInstance().FindService(pid, &Service::pid);if (service) {name = StringPrintf("Service '%s' (pid %d)", service->name().c_str(), pid);if (service->flags() & SVC_EXEC) {auto exec_duration = boot_clock::now() - service->time_started();auto exec_duration_ms =std::chrono::duration_cast<std::chrono::milliseconds>(exec_duration).count();wait_string = StringPrintf(" waiting took %f seconds", exec_duration_ms / 1000.0f);}} else {name = StringPrintf("Untracked pid %d", pid);}}if (siginfo.si_code == CLD_EXITED) {LOG(INFO) << name << " exited with status " << siginfo.si_status << wait_string;} else {LOG(INFO) << name << " received signal " << siginfo.si_status << wait_string;}if (!service) return true;service->Reap(siginfo);if (service->flags() & SVC_TEMPORARY) {ServiceList::GetInstance().RemoveService(*service);}return true; }


? 這篇還未完成,等之后在完善下,給各位帶來不便。
??
?

總結

以上是生活随笔為你收集整理的Android Pie源码阅读 -----深入理解init(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产色视频网站 | h动漫中文字幕 | 香蕉久草 | 婷婷色网址| 日韩欧美网址 | 97在线精品| 免费看的黄色 | 国产成人免费av电影 | 国产精品久久久久一区二区国产 | 久久系列| 亚洲丁香久久久 | 韩国一区二区在线观看 | 久久99热这里只有精品国产 | 日韩一区二区三区免费电影 | 欧美在线free| 99久久精品免费看国产四区 | 天天操天天操天天操天天操天天操 | 中文字幕一区二区三区四区久久 | 97在线超碰 | 91大片成人网 | 欧美另类成人 | 中文国产成人精品久久一 | 狠狠色丁香婷婷综合久久片 | 天天爱天天色 | 天天操天天射天天插 | 精品一区二区在线播放 | 91在线视频一区 | 99爱在线 | 在线视频 一区二区 | www.日韩免费 | 久久看片网站 | 国产午夜精品一区二区三区在线观看 | 97在线免费视频 | 久久综合桃花 | 国产福利精品在线观看 | 亚洲狠狠婷婷综合久久久 | 久久久国产精品网站 | 久久久久高清毛片一级 | 超碰人人在| 日韩免费高清在线 | 999成人网| 精品亚洲视频在线观看 | 香蕉视频国产在线 | 国产精品久久久久久久久免费看 | 天堂va在线高清一区 | 精品播放 | 久久久久女教师免费一区 | 国产高清在线精品 | 婷婷久久综合网 | 狠狠狠干| 探花视频免费观看高清视频 | 亚洲欧美国产日韩在线观看 | 日韩免费福利 | 人人爽人人射 | 免费观看第二部31集 | 天天干天天想 | 久久久国产精华液 | 最新成人av | 成人av网站在线播放 | 天天插综合 | 一本一本久久aa综合精品 | 美女免费黄视频网站 | 少妇精69xxtheporn | 少妇搡bbbb搡bbb搡69 | 免费在线看成人av | 亚洲精品玖玖玖av在线看 | 国产精品1000 | 白丝av在线| 成年人免费看片网站 | 国产91九色蝌蚪 | 国产精品久久一区二区三区, | 日韩欧美xxxx | 一区二区三区日韩视频在线观看 | 国内精品久久天天躁人人爽 | 久久精品牌麻豆国产大山 | 人人澡人 | 亚洲精品一区二区三区新线路 | 91精品国自产拍天天拍 | 激情影音 | 国内揄拍国产精品 | 91精品一区国产高清在线gif | 欧美日韩亚洲第一页 | 黄色91免费观看 | 91九色porny在线| 99精品在线免费视频 | 成人欧美亚洲 | 水蜜桃亚洲一二三四在线 | 999ZYZ玖玖资源站永久 | 色一级片| 国产分类视频 | 中文免费 | 少妇搡bbbb搡bbb搡忠贞 | 黄色亚洲| 一级黄色av | 啪啪精品 | 干狠狠| 亚洲国产精品久久久久 | 特级aaa毛片 | 激情丁香婷婷 | 久久综合亚洲鲁鲁五月久久 | 奇米网8888| 综合激情 | 日韩精品免费在线观看 | 日韩中文久久 | 国产成人精品一二三区 | 国产特级毛片aaaaaa高清 | 日女人免费视频 | 黄色av观看| 最新99热 | 2022中文字幕在线观看 | 人人看黄色| 免费大片av | 国产在线传媒 | 国产精品二区在线 | 日本不卡一区二区三区在线观看 | 成人免费共享视频 | 国产精品96久久久久久吹潮 | 日韩欧美精选 | a天堂最新版中文在线地址 久久99久久精品国产 | 国产偷v国产偷∨精品视频 在线草 | 日本深夜福利视频 | www久久国产 | 黄av免费 | 521色香蕉网站在线观看 | 一级片黄色片网站 | 成人毛片100免费观看 | 成人欧美一区二区三区在线观看 | 国产日韩欧美在线影视 | 91在线公开视频 | 深爱激情五月综合 | 99热官网| 国产在线免费观看 | 狠狠操电影网 | 日韩激情一二三区 | 国产精品免费麻豆入口 | 久久69av| 国产黄色片网站 | 国产精品va最新国产精品视频 | 日韩在线观看一区二区 | 国产精品久久久久久一区二区三区 | 青青河边草观看完整版高清 | 成人av.com| 国产淫片免费看 | 国产一区二区在线看 | 国产精品久久久久av免费 | 国产一级片一区二区三区 | 国产成人在线免费观看 | 九九九免费视频 | 欧美精品久久久久久 | zzijzzij日本成熟少妇 | av天天干 | 三级av片| 99久久婷婷国产一区二区三区 | 91av电影在线| av免费观看高清 | 五月婷香蕉久色在线看 | 国产破处在线播放 | 中文字幕视频播放 | a级国产乱理伦片在线观看 亚洲3级 | 激情五月亚洲 | 九九爱免费视频在线观看 | 国产日韩中文在线 | 久久免费视频观看 | 亚洲 欧美变态 另类 综合 | 超碰97在线资源站 | 超碰最新网址 | 日免费视频 | 又黄又爽又色无遮挡免费 | 日本久久成人 | 婷婷丁香狠狠爱 | 97福利视频| 色综合天天狠天天透天天伊人 | 在线播放精品一区二区三区 | 99久久久久成人国产免费 | 狠狠躁夜夜a产精品视频 | 精品久久一区二区三区 | 婷婷夜夜 | 久久精品一区八戒影视 | 99免费精品视频 | 91在线视频观看免费 | 99在线视频播放 | 好看av在线| 在线看不卡av| 五月天久久精品 | 色婷在线 | 久久综合久久八八 | 日日日日日 | 毛片无卡免费无播放器 | 亚洲精品成人av在线 | 99视频免费在线观看 | 国产一二三区在线观看 | 色丁香婷婷 | 国产手机在线观看视频 | 日韩精品中文字幕有码 | 久久婷婷久久 | 夜夜夜夜夜夜操 | 久久免费看a级毛毛片 | 日韩欧美在线视频一区二区三区 | 久久久精品国产免费观看一区二区 | 色鬼综合网 | 香蕉91视频 | 亚洲精品午夜一区人人爽 | 久久免费精品一区二区三区 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 91香蕉视频在线下载 | 亚洲成人麻豆 | 日本一区二区不卡高清 | 国产精品久久嫩一区二区免费 | 国产精品久久久久久久久久久久午夜 | 久久99精品久久久久久秒播蜜臀 | 久久成人国产精品一区二区 | 国产又粗又猛又黄视频 | 久久任你操 | www.天天草| 手机成人av在线 | 黄色大片免费播放 | 欧美成人一区二区 | 成人免费观看在线视频 | www.色五月| www.com黄色 | 中文字幕在线观看一区 | 日韩免费在线视频 | 91视频在线免费 | 国产三级在线播放 | 国产美女在线精品免费观看 | 亚洲乱码国产乱码精品天美传媒 | 国产一级做a | 免费久久99精品国产婷婷六月 | 国产精品一区二区三区久久 | 亚洲 精品在线视频 | 黄网站色| 天海翼一区二区三区免费 | av经典在线 | 天天干天天干天天干天天干天天干天天干 | 毛片无卡免费无播放器 | 91av资源在线 | 91av视频导航 | 日日爽日日操 | 香蕉在线观看 | 黄网站a | 国产精品免费视频观看 | 九九久久久久久久久激情 | 日韩精品免费在线播放 | 99视频国产精品免费观看 | 国产日韩亚洲 | 久久精品视频在线观看 | 狠狠色伊人亚洲综合网站色 | 成人资源在线观看 | 看全黄大色黄大片 | 日韩精品字幕 | 婷婷国产在线 | 久久精品三 | 国产97在线视频 | 久久综合日 | 国产亚洲精品精品精品 | 国内久久久久久 | 又粗又长又大又爽又黄少妇毛片 | 亚洲精品一区二区网址 | 欧美黄色特级片 | 国产中文字幕在线观看 | 亚洲一区二区视频 | 国产精品一区二区免费看 | 亚洲在线网址 | 又粗又长又大又爽又黄少妇毛片 | 东方av在线免费观看 | 免费在线观看av网站 | 亚洲日本欧美在线 | 亚洲国产成人高清精品 | 91人人澡人人爽人人精品 | ,午夜性刺激免费看视频 | 久久精品亚洲国产 | 日韩精品久久久免费观看夜色 | 99色在线| 91精品综合在线观看 | 少妇bbb搡bbbb搡bbbb | 亚洲黄色一级电影 | 精品91 | 干天天| 超碰在线观看av.com | 中文字幕永久免费 | 日韩电影一区二区三区在线观看 | 成年人三级网站 | 丁香高清视频在线看看 | 91成人亚洲 | 成人观看 | 久久色视频 | 狠狠色狠狠色终合网 | 日本中文在线 | 精品国模一区二区三区 | 波多野结衣最新 | 国产啊v在线观看 | 久久久久久久免费观看 | 婷婷在线视频观看 | 视频精品一区二区三区 | 成人手机在线视频 | 就要色综合 | 国产欧美日韩精品一区二区免费 | 香蕉视频国产在线观看 | 国产福利在线免费 | 久久久久黄 | v片在线播放 | 97国产在线 | 麻豆传媒在线视频 | 在线播放 日韩专区 | www.色午夜 | 国产精品 欧美 日韩 | 亚洲精品综合一二三区在线观看 | 国产成人精品久久二区二区 | 久久午夜影院 | av中文天堂在线 | 免费人成在线观看网站 | 国内99视频 | 中文字幕一区二区三区久久 | 中文字幕在线播放日韩 | 久久超级碰视频 | 麻豆 videos | 人人干干人人 | 99久久久久久 | 一区二区三区韩国免费中文网站 | 色爱成人网 | 在线观av| 91在线免费播放 | 99久久国产免费看 | 久久香蕉电影网 | 国产91精品欧美 | 久久精品2 | 亚洲第一区在线观看 | 久久爱资源网 | 午夜精品久久久99热福利 | 欧美a在线免费观看 | 久久国产精品二国产精品中国洋人 | 日韩美av在线 | 天天操天天爱天天爽 | 久久久久久久久久久免费 | 亚洲波多野结衣 | 免费观看国产精品视频 | 国产精品自在线 | 亚洲人成在线电影 | 欧美a√大片 | 欧美大片大全 | 国产精久久久久久妇女av | 一区二区三区久久精品 | 欧美日韩在线观看一区 | 国产精品久久久久久久久久直播 | 噜噜色官网 | 国产免费精彩视频 | 亚洲精品 在线视频 | 欧美日韩国产综合一区二区 | 波多野结衣在线观看一区二区三区 | 99精品国产视频 | 日韩欧美高清在线 | a天堂一码二码专区 | 欧美一级高清片 | 亚洲午夜精品在线观看 | 国产日女人| 人人澡人| 成年人在线观看 | 婷婷在线色 | 九九免费在线观看 | 免费成人av网站 | 国内少妇自拍视频一区 | 激情网第四色 | 国内精品久久久久影院优 | 色成人亚洲 | 国产流白浆高潮在线观看 | 欧美最猛性xxxx | 亚洲三级毛片 | 日本九九视频 | av色影院| 天天干天天操天天射 | 精品一区精品二区 | 日日干干夜夜 | 亚洲激情在线观看 | 欧美性超爽 | 亚洲精品国产拍在线 | 久久婷婷综合激情 | 人人看人人做人人澡 | 国产麻豆果冻传媒在线观看 | 五月婷婷爱| 国产成人福利在线 | 亚洲黄色片一级 | 国产免费久久精品 | 国产成人精品在线播放 | 看黄色91 | 久久99亚洲网美利坚合众国 | 色婷婷国产 | 免费看片成年人 | 久久久免费毛片 | 久久蜜桃av | 日韩在线网 | 香蕉影院在线播放 | 国产精品热视频 | 香蕉免费在线 | 国产精品毛片久久久久久久 | 天天爱天天操天天干 | 久久精品www人人爽人人 | 99久久精品免费看国产四区 | 精品国产乱码 | 欧美日本啪啪无遮挡网站 | 国内毛片毛片 | 国产精品免费久久久久影院仙踪林 | 久久精品福利 | 麻豆国产精品一区二区三区 | 亚洲国产日韩一区 | 91精品小视频 | 成人91在线 | 草久电影 | 亚洲专区中文字幕 | 久久看视频 | 人人干在线观看 | 一区 在线 影院 | 成人国产精品久久久久久亚洲 | 91在线免费视频观看 | 色老板在线视频 | 国产精品美乳一区二区免费 | 久久在线观看视频 | 午夜精品一区二区三区免费 | 久久婷婷五月综合色丁香 | 久久九九免费视频 | 国产精品 视频 | 一区二区三区高清在线观看 | 欧美日韩性视频在线 | 中文字幕第一页在线 | 91最新中文字幕 | 亚洲精品视频第一页 | 成人免费网站视频 | 草久视频在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 欧美另类交人妖 | 欧美性猛片, | 97成人资源| 亚洲天堂网站 | 日韩伦理一区二区三区av在线 | 亚洲欧洲中文日韩久久av乱码 | 欧美日性视频 | 在线观看视频一区二区三区 | 亚洲精品国产精品国产 | 久久久人| 亚洲手机av| 97超碰中文| 久久免费电影网 | 日韩字幕| 欧美精品首页 | 亚洲成人黄| 亚洲 在线| 日韩一区二区三免费高清在线观看 | 看片的网址 | 欧美成人精品欧美一级乱黄 | 欧美精品久久久久 | 精品在线观看视频 | 欧美一级视频免费 | 精品久久美女 | 992tv成人免费看片 | 免费av电影网站 | av大片网址 | 精品福利视频在线观看 | 婷婷在线五月 | 99国内精品 | 午夜精品一区二区国产 | 一二三四精品 | 成人免费91 | 免费看十八岁美女 | 最新国产精品拍自在线播放 | 麻豆va一区二区三区久久浪 | 国产在线高清 | 国产人免费人成免费视频 | 色多多视频在线观看 | 亚洲国产精品va在线看黑人动漫 | av网站在线观看播放 | 性色大片在线观看 | 国产69精品久久久久9999apgf | 日日夜夜精品免费 | 国产成人1区 | 亚洲成人精品久久 | 黄色特一级 | 久久久久国产一区二区 | 国产黄av | 国产在线中文字幕 | 在线视频99| 国产精品一区二区免费在线观看 | 国产精品一区二区三区久久 | www.com在线观看 | 在线观看国产一区二区 | 久久久久久久久久久高潮一区二区 | 亚洲区色 | 精品自拍sae8—视频 | 丁香婷五月 | 国产剧情一区二区 | 国产日韩欧美在线 | 亚洲国产福利视频 | 美女福利视频网 | 亚欧洲精品视频在线观看 | 日韩av在线网站 | 九九久久国产 | 免费成人av网站 | 日韩中文字幕免费看 | 国产精品免费久久久久久 | 一区二区三区免费看 | 欧美综合色在线图区 | 日韩免费电影 | 丁香婷婷电影 | 精品国产福利在线 | 久久免费精品一区二区三区 | 欧美性做爰猛烈叫床潮 | 三级黄色片子 | 中文字幕一区二区三区久久 | 天天操操操操操操 | 日韩啪视频 | 亚洲禁18久人片 | 男女激情麻豆 | 午夜视频在线观看一区二区 | 狠狠色丁香婷婷综合久小说久 | 久久免费在线视频 | 国产精品麻豆欧美日韩ww | 国产男女爽爽爽免费视频 | 日韩中文字幕在线不卡 | 九九九热精品免费视频观看网站 | 日本黄色a级大片 | 亚洲黄色在线观看 | 免费热情视频 | 久久一区二区三区四区 | 久久国产精彩视频 | 中文字幕日韩有码 | www.狠狠操.com | 91热这里只有精品 | 91最新地址永久入口 | 国模精品在线 | 亚洲黄色av | 超碰在线94 | 国产精品自在线拍国产 | 亚洲成人软件 | 国内精品久久久久影院一蜜桃 | 中文在线免费一区三区 | 国产一级片在线播放 | 99re久久资源最新地址 | 久久综合久色欧美综合狠狠 | 91午夜精品 | 国产成人精品电影久久久 | 免费99| 天天干天天在线 | 久久久久国产精品免费 | 久草在线免费新视频 | 狠狠地日 | 午夜精品久久久久 | 99久久久国产免费 | 国产中文字幕免费 | 色偷偷网站视频 | 911亚洲精品第一 | 日韩精品专区在线影院重磅 | 国产欧美中文字幕 | 亚洲综合小说电影qvod | 免费一级片在线观看 | 中文字幕资源在线观看 | 天天操天天爱天天爽 | 激情av五月婷婷 | 免费看搞黄视频网站 | 久久国产经典 | 7777xxxx| 黄色国产精品 | 精品国产a | 久草免费在线 | 91精品国产一区二区三区 | 久久xxxx| 天天射天天搞 | 国产群p| 国产精品精品 | 国产 日韩 欧美 中文 在线播放 | 探花视频在线观看免费版 | 日韩av手机在线观看 | 久久 亚洲视频 | 久青草国产在线 | 中文字幕在线观看一区 | 二区三区精品 | 91精品国产成 | av在线网站大全 | 999在线视频| 日日操日日 | 综合在线观看 | 免费国产在线观看 | 夜色成人网 | 欧美巨乳网 | 日韩专区一区二区 | 欧美少妇18p | 国产在线观看国语版免费 | 99久久这里只有精品 | 日韩在线欧美在线 | 91你懂的| 99精品国产99久久久久久97 | 国产成人精品久久久久 | 96视频免费在线观看 | 亚洲精品成人在线 | av黄色在线| 成人在线免费看视频 | 日韩精品一区二区在线视频 | 亚洲在线成人精品 | 国产成人三级三级三级97 | 天天色天天操天天爽 | 欧美精品一区二区三区四区在线 | 亚洲午夜久久久久久久久电影网 | 成人黄视频 | 日韩免费福利 | 在线国产福利 | 精品在线视频一区二区三区 | 日韩丝袜在线观看 | 狠狠操导航| 美国人与动物xxxx | 香蕉在线视频播放网站 | www.av免费| 4p变态网欧美系列 | 日韩网站免费观看 | 久久99热国产 | a特级毛片 | 久久久久久久久久久久久久av | 99色在线| 伊人超碰在线 | 黄色片视频免费 | 97视频一区 | 久久亚洲二区 | 欧美一级电影免费观看 | 狠狠色伊人亚洲综合网站野外 | 特级免费毛片 | 精品久久久久久久久久久院品网 | 久久99精品久久久久久久久久久久 | 色婷婷综合成人av | 丁香视频在线观看 | 在线观看中文字幕一区 | 在线观看免费黄视频 | 91成人精品一区在线播放 | 91精品第一页 | 国产糖心vlog在线观看 | 人人添人人澡 | wwwwww国产 | 97成人资源 | 国产1区在线观看 | 久久精品1区 | 麻豆视频免费入口 | 久草在线高清 | 91喷水 | 亚洲综合色激情五月 | 国产成人亚洲在线观看 | 91福利专区 | 最新国产在线 | 久久久免费观看完整版 | 一区三区视频在线观看 | 97国产大学生情侣白嫩酒店 | 伊人五月婷 | 综合网天天色 | 成人在线黄色电影 | 一级黄色大片在线观看 | 国产精品成人a免费观看 | 999久久久久久久久6666 | 在线观看中文字幕视频 | 狠狠操导航 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 狠狠躁夜夜躁人人爽超碰97香蕉 | av在线播放国产 | 午夜av不卡 | 91av99| 国产精品 美女 | 免费看特级毛片 | 亚洲一级片在线观看 | 91视频链接 | 99re亚洲国产精品 | 最近能播放的中文字幕 | 精品国产视频在线 | 国产激情电影综合在线看 | 国产91精品一区二区麻豆亚洲 | 午夜精品久久久久久久99水蜜桃 | 十八岁免进欧美 | 久久综合给合久久狠狠色 | 日韩高清一区在线 | 色片网站在线观看 | 国产麻豆视频免费观看 | 国产在线观看你懂的 | 婷婷午夜激情 | 九九九热 | 日本久久精品视频 | 色综合五月天 | 精品免费久久久久 | 92中文资源在线 | 国产成人区 | 国产麻豆精品久久一二三 | 国产精品久久久久久久久久久杏吧 | 天天草天天草 | 免费观看一级成人毛片 | 亚洲情感电影大片 | 96精品视频 | 最新中文字幕视频 | 韩日精品中文字幕 | 久久国产综合视频 | 日本精品视频免费 | 国产精品18久久久久久久久久久久 | www.久久视频 | 午夜av在线播放 | 色偷偷网站视频 | 久久久久久久久久网站 | 久亚洲精品 | 中文字幕在线免费看 | 国产黄大片在线观看 | 中文字幕丝袜一区二区 | 午夜av在线 | 日韩激情视频在线 | 日韩在线免费高清视频 | 天天操天天摸天天干 | 国产不卡在线看 | 国产精品久久久久一区二区国产 | 91香蕉视频污在线 | 婷婷在线色 | 丝袜美女在线 | 免费在线观看视频a | 91在线免费观看网站 | 亚洲精品资源在线观看 | 西西人体www444 | 国产精品美女久久久网av | 狠狠色狠狠色合久久伊人 | 国产99在线 | 日韩在线视频看看 | 久久久久国产精品免费网站 | 国产欧美综合在线观看 | 在线观看亚洲视频 | 成 人 a v天堂 | 高清中文字幕av | 亚洲精品国产免费 | 亚洲黄色免费在线 | 一区二区三区在线电影 | 日韩r级在线 | 视频国产在线观看18 | av黄色在线观看 | 国产在线观看国语版免费 | 久久综合久久综合九色 | 男女啪啪免费网站 | 免费a视频| www.天天草| 成年人视频在线观看免费 | 天天天色综合 | 一区二区三区高清在线 | 99在线高清视频在线播放 | 99久久精品一区二区成人 | 欧美日韩成人 | 干天天 | 国产精品一区二区免费看 | 婷婷中文字幕在线观看 | 日本特黄一级片 | 色停停五月天 | 91爱看片 | av三级在线播放 | 六月婷婷色 | 99久久精品无码一区二区毛片 | 日本一区二区免费在线观看 | 色婷婷电影网 | 91精品国产综合久久福利 | 在线观看中文字幕视频 | 夜色成人av | 国产黄色精品 | 亚洲视频免费在线看 | 五月色婷 | 亚洲国产日韩精品 | 91高清视频免费 | 久久99久久99久久 | 欧洲成人av | 日韩欧美亚洲 | 精品一二三四视频 | 日韩精品 在线视频 | 亚洲国产免费 | 色综合久久中文综合久久牛 | 久草香蕉在线视频 | 日韩国产欧美在线播放 | 玖玖视频 | 干综合网| 999日韩| 亚洲国产精品成人av | 国产aaa免费视频 | 欧美成人视 | 免费网站黄色 | 日韩欧美一区二区不卡 | 91热| 一区二区成人国产精品 | 色插综合 | 国产成人一区二 | 天天色天天干天天色 | 久久国产女人 | 国产精品私人影院 | 久久成人免费 | 久久观看最新视频 | 欧美日韩视频在线观看免费 | avcom在线 | 91在线观| 久久久久久久久久久久影院 | 麻豆视频国产精品 | 国产精品69av | 国产在线观看,日本 | 不卡精品视频 | 在线精品亚洲一区二区 | 精品久久久久一区二区国产 | 亚洲午夜不卡 | 婷婷四房综合激情五月 | 国产伦精品一区二区三区无广告 | 中文字幕资源网 | 69视频永久免费观看 | 国产成人一区在线 | 蜜臀91丨九色丨蝌蚪老版 | 99中文字幕视频 | 国产精品一区欧美 | 色婷婷激情网 | 亚洲国产精品va在线 | 怡红院久久 | 亚州黄色一级 | 在线免费av播放 | 久久黄网站 | 99福利片| 精品不卡av | 成人精品久久久 | 精品a视频| 色鬼综合网 | 久久久久国产a免费观看rela | 精品国产美女 | 亚洲成人资源 | 日韩理论在线观看 | 中文字幕在线字幕中文 | 国产精品久久久久一区二区国产 | 久久综合免费 | 国产日韩精品一区二区三区在线 | 丁香av | 日韩日韩日韩日韩 | 国产精品免费观看视频 | 特级免费毛片 | 亚洲精品在线资源 | 三级av网 | 久久亚洲成人网 | 美女免费黄网站 | 91片网| 天天天天干 | 天天操夜夜操国产精品 | 九九99| 亚洲婷婷综合色高清在线 | 欧美日韩高清在线一区 | 黄色亚洲在线 | 亚洲视频 一区 | 久草网首页 | 久草在线综合网 | 亚洲天堂视频在线 | 在线观看色网站 | 91精品国产九九九久久久亚洲 | 久草在线高清视频 | 免费看v片网站 | 91激情视频在线观看 | 国产精品久久久久久久久久免费看 | 精品国偷自产国产一区 | 日韩av中文字幕在线免费观看 | 国产精品成人自产拍在线观看 | 久久国精品 | 国产欧美在线一区二区三区 | 99视频精品视频高清免费 | 人人揉人人揉人人揉人人揉97 | 日韩v在线91成人自拍 | 国产精品自产拍在线观看中文 | 999视频网站 | 免费看在线看www777 | 激情综合啪 | 97人人人人 | 国内精品视频在线 | 一区二区三区播放 | 成年人在线视频观看 | 这里只有精彩视频 | 欧洲视频一区 | 久久国产经典视频 | 人人狠狠| 国内精品久久久久久久久久清纯 | 日韩一三区 | 国产精品乱码在线 | 91色欧美| 99热都是精品 | 欧美国产不卡 | 欧美日韩精品在线播放 | 国产精品入口传媒 | 在线www色 | 国产精品一区二区免费 | 福利区在线观看 | 久香蕉| 久久精品免费看 | 中文字幕在线观看一区 | 国产一区二区三区四区大秀 | 免费aa大片| 水蜜桃亚洲一二三四在线 | 国产精品一区二区吃奶在线观看 | 在线免费观看黄色 | 国产精品理论片 | 在线黄网站 | 久久久久成人精品亚洲国产 | 一区二区视频电影在线观看 | 天天做夜夜做 | 国产在线v| www.天天色| 国产色黄网站 | 91av视频在线免费观看 | 国产日韩在线看 | 日韩69av | a天堂免费 | 天天操天天操天天操天天 | 一区二区三区视频网站 | 婷婷色在线视频 | 日韩欧美高清免费 | 天堂在线成人 | 国产视频手机在线 | 久草在线视频资源 | 黄色www在线观看 | 精品久久久久国产 | 久久久久亚洲精品成人网小说 | 国产精品欧美激情在线观看 | 日韩精品视频免费专区在线播放 | 天天干天天拍天天操 | 国产免费又黄又爽 | 天天操天天操天天操天天操天天操 | 中文永久免费观看 | 99久精品视频| 色资源中文字幕 | 精品久久久久久久久久久久久久久久久久 | 中文字幕a∨在线乱码免费看 | 久久国产精品一区二区三区四区 | 成人a视频片观看免费 | 欧美日韩国产精品一区二区 | 国产免费一区二区三区最新 | 在线观看完整版 | 欧美精品在线视频 | 伊人欧美| 精品一区二区在线观看 | 免费在线看v | 国产无遮挡猛进猛出免费软件 | 狠狠色噜噜狠狠 | 久久精品一二三 | 在线观看视频一区二区三区 | 狠狠的干 | 日本成人中文字幕在线观看 | 免费网站观看www在线观看 | 久久成人精品 | 中文字幕一区三区 | 国产精品激情 | 亚洲一区二区三区在线看 | 一本一本久久a久久精品牛牛影视 | 日韩av在线网站 | 亚洲激情在线视频 | 日本精品一区二区在线观看 | 日日干夜夜爱 | 久久国产网站 | www.狠狠干 | 激情婷婷亚洲 | 麻豆精品国产传媒 | 黄色大全视频 | 婷婷久久综合网 | 国产一区二区中文字幕 | 国产精品久久久久久久久岛 | 在线播放一区 | 美女网站在线观看 | 99国产精品久久久久久久久久 | 中文字幕视频一区 | 日韩极品视频在线观看 | 高清不卡毛片 | 国产精品久久久久aaaa九色 | 天堂av最新网址 | 在线激情影院一区 | 国产亚洲视频在线 | 在线激情网 | 中文字幕在线日亚洲9 | a v在线视频 | 激情五月播播久久久精品 | 国语精品免费视频 | 国产视频观看 | 亚洲更新最快 | 国产精品久久久久永久免费 | 日本中文字幕网 | 国产精品欧美日韩在线观看 | 国产精品久久久久久一二三四五 | 91国内在线 | 美女免费黄视频网站 | 国产又粗又硬又爽的视频 | 国产69久久 | 一区二区久久久久 | 欧美精品九九 | 麻豆果冻剧传媒在线播放 | 久久久免费看 | 综合色中色 | 国产在线91在线电影 | 中文字幕在线观看你懂的 | 亚洲欧美少妇 | 亚洲精品日韩一区二区电影 | 亚洲涩涩一区 | 在线国产视频观看 | 99久久99久久| 久久中文字幕视频 | 91资源在线免费观看 | 999久久久久久久久 69av视频在线观看 | 深夜福利视频一区二区 | 国内精品在线看 | 日韩免费视频线观看 | 四虎影视成人精品 | av中文字幕电影 | 国产成人精品午夜在线播放 | 亚洲精品国产综合99久久夜夜嗨 |