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

歡迎訪問 生活随笔!

生活随笔

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

Android

android关机分区卸载,Android关机重启流程(二)

發布時間:2023/12/20 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android关机分区卸载,Android关机重启流程(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、回顧

先回顧下上部分得分析,從最開始的PM.reboot(),經過層層調用,最終調用

SystemProperties.set(“sys.powerctl”, “reboot,” + reason);

二、重啟流程

aosp/system/core/init/property_service.cpp

aosp/system/core/init/reboot.cpp

aosp/system/core/init/reboot_utils.cpp

aosp/system/core/init/init.cpp

PM.reboot最終也就是setprop?sys.powerctl,那么誰來監聽sys.powerctl 值呢,肯定是init了,接下來就也就引入本節得重點,

init監聽?sys.powerctl?處理關機后半部流程

2.1?HandlePropertySet

[->property_service.cpp]

// This returns one of the enum of PROP_SUCCESS or PROP_ERROR*.

uint32_t HandlePropertySet(const std::string& name, const std::string& value,

const std::string& source_context, const ucred& cr, std::string* error) {

...

// sys.powerctl is a special property that is used to make the device reboot. We want to log

// any process that sets this property to be able to accurately blame the cause of a shutdown.

//此時會記錄到logcat中,那個進程設置sys.powerctl得以及原因

if (name == "sys.powerctl") {

std::string cmdline_path = StringPrintf("proc/%d/cmdline", cr.pid);

std::string process_cmdline;

std::string process_log_string;

if (ReadFileToString(cmdline_path, &process_cmdline)) {

// Since cmdline is null deliminated, .c_str() conveniently gives us just the process

// path.

process_log_string = StringPrintf(" (%s)", process_cmdline.c_str());

}

LOG(INFO) << "Received sys.powerctl='" << value << "' from pid: " << cr.pid

<< process_log_string;

}

...

return PropertySet(name, value, error); //設置屬性值

}

2.2?HandlePropertySet

[->property_service.cpp]

static uint32_t PropertySet(const std::string& name, const std::string& value, std::string* error) {

...

property_changed(name, value);// 會通知init property值改變

return PROP_SUCCESS;

}

2.3? property_changed

[->init.cpp]

void property_changed(const std::string& name, const std::string& value) {

// If the property is sys.powerctl, we bypass the event queue and immediately handle it.

// This is to ensure that init will always and immediately shutdown/reboot, regardless of

// if there are other pending events to process or if init is waiting on an exec service or

// waiting on a property.

// In non-thermal-shutdown case, 'shutdown' trigger will be fired to let device specific

// commands to be executed.

if (name == "sys.powerctl") { //當init檢測到某個進程設置 sys.powerctl時,會把do_shutdown 置true,init主循環會執行關機動作 見2.3節

// Despite the above comment, we can't call HandlePowerctlMessage() in this function,

// because it modifies the contents of the action queue, which can cause the action queue

// to get into a bad state if this function is called from a command being executed by the

// action queue. Instead we set this flag and ensure that shutdown happens before the next

// command is run in the main init loop.

// TODO: once property service is removed from init, this will never happen from a builtin,

// but rather from a callback from the property service socket, in which case this hack can

// go away.

shutdown_command = value;

do_shutdown = true;

}

if (property_triggers_enabled) ActionManager::GetInstance().QueuePropertyChange(name, value);

if (waiting_for_prop) {

if (wait_prop_name == name && wait_prop_value == value) {

LOG(INFO) << "Wait for property took " << *waiting_for_prop;

ResetWaitForProp();

}

}

}

2.4?SecondStageMain

[->init.cpp]

int SecondStageMain(int argc, char** argv) {

...

while (true) {

// By default, sleep until something happens.

auto epoll_timeout = std::optional<:chrono::milliseconds>{};

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_action_time = HandleProcessActions();

// If there's a process that needs restarting, wake up in time for that.

if (next_process_action_time) {

epoll_timeout = std::chrono::ceil<:chrono::milliseconds>(

*next_process_action_time - boot_clock::now());

if (*epoll_timeout < 0ms) epoll_timeout = 0ms;

}

}

// If there's more work to do, wake up again immediately.

if (am.HasMoreCommands()) epoll_timeout = 0ms;

}

if (auto result = epoll.Wait(epoll_timeout); !result) {

LOG(ERROR) << result.error();

}

}

return 0;

}

2.5 HandlePowerctlMessage

[->reboot.cpp]

bool HandlePowerctlMessage(const std::string& command) {

unsigned int cmd = 0;

std::vector<:string> cmd_params = Split(command, ",");

std::string reboot_target = "";

bool run_fsck = false;

bool command_invalid = false;

if (cmd_params.size() > 3) {

command_invalid = true;

} else if (cmd_params[0] == "shutdown") {

cmd = ANDROID_RB_POWEROFF;

if (cmd_params.size() == 2) {

if (cmd_params[1] == "userrequested") {

// The shutdown reason is PowerManager.SHUTDOWN_USER_REQUESTED.

// Run fsck once the file system is remounted in read-only mode.

run_fsck = true;

} else if (cmd_params[1] == "thermal") {

// Turn off sources of heat immediately.

TurnOffBacklight();

// run_fsck is false to avoid delay

cmd = ANDROID_RB_THERMOFF;

}

}

} else if (cmd_params[0] == "reboot") {

cmd = ANDROID_RB_RESTART2;

if (cmd_params.size() >= 2) {

reboot_target = cmd_params[1];

// adb reboot fastboot should boot into bootloader for devices not

// supporting logical partitions.

if (reboot_target == "fastboot" &&

!android::base::GetBoolProperty("ro.boot.dynamic_partitions", false)) {

reboot_target = "bootloader";

}

// When rebooting to the bootloader notify the bootloader writing

// also the BCB.

if (reboot_target == "bootloader") {

std::string err;

if (!write_reboot_bootloader(&err)) {//會把bootloader寫到kernel,重啟使用

LOG(ERROR) << "reboot-bootloader: Error writing "

"bootloader_message: "

<< err;

}

} else if (reboot_target == "sideload" || reboot_target == "sideload-auto-reboot" ||

reboot_target == "fastboot") {

std::string arg = reboot_target == "sideload-auto-reboot" ? "sideload_auto_reboot"

: reboot_target;

const std::vector<:string> options = {

"--" + arg,

};

std::string err;

if (!write_bootloader_message(options, &err)) {//會把recovery寫到kernel,重啟使用

LOG(ERROR) << "Failed to set bootloader message: " << err;

return false;

}

reboot_target = "recovery";

}

// If there is an additional parameter, pass it along

if ((cmd_params.size() == 3) && cmd_params[2].size()) {

reboot_target += "," + cmd_params[2];

}

}

} else {

command_invalid = true;

}

if (command_invalid) {

LOG(ERROR) << "powerctl: unrecognized command '" << command << "'";

return false;

}

LOG(INFO) << "Clear action queue and start shutdown trigger";

ActionManager::GetInstance().ClearQueue();

// Queue shutdown trigger first

ActionManager::GetInstance().QueueEventTrigger("shutdown");//處理init.rc中shutdown部分,依次關閉各個模塊

// Queue built-in shutdown_done

auto shutdown_handler = [cmd, command, reboot_target, run_fsck](const BuiltinArguments&) {

DoReboot(cmd, command, reboot_target, run_fsck); //reboot 流程核心,見下節

return Success();

};

ActionManager::GetInstance().QueueBuiltinAction(shutdown_handler, "shutdown_done");//設置中shutdown_done部分,shutdown執行完會執行DoReboot

// Skip wait for prop if it is in progress

ResetWaitForProp();

// Clear EXEC flag if there is one pending

for (const auto& s : ServiceList::GetInstance()) {

s->UnSetExec();

}

return true;

}

2.6 DoReboot

[->reboot.cpp]

//* Reboot / shutdown the system.

// cmd ANDROID_RB_* as defined in android_reboot.h

// reason Reason string like "reboot", "shutdown,userrequested"

// rebootTarget Reboot target string like "bootloader". Otherwise, it should be an

// empty string.

// runFsck Whether to run fsck after umount is done.

//

static void DoReboot(unsigned int cmd, const std::string& reason, const std::string& rebootTarget,

bool runFsck) {

Timer t;

LOG(INFO) << "Reboot start, reason: " << reason << ", rebootTarget: " << rebootTarget;

// Ensure last reboot reason is reduced to canonical

// alias reported in bootloader or system boot reason.

size_t skip = 0;

std::vector<:string> reasons = Split(reason, ",");

if (reasons.size() >= 2 && reasons[0] == "reboot" &&

(reasons[1] == "recovery" || reasons[1] == "bootloader" || reasons[1] == "cold" ||

reasons[1] == "hard" || reasons[1] == "warm")) {

skip = strlen("reboot,");

}

property_set(LAST_REBOOT_REASON_PROPERTY, reason.c_str() + skip);//設置reboot 重啟原因到persist.sys.boot.reason,重啟后可以查看

sync();

bool is_thermal_shutdown = cmd == ANDROID_RB_THERMOFF;

auto shutdown_timeout = 0ms;

if (!SHUTDOWN_ZERO_TIMEOUT) {

constexpr unsigned int shutdown_timeout_default = 6;

constexpr unsigned int max_thermal_shutdown_timeout = 3;

auto shutdown_timeout_final = android::base::GetUintProperty("ro.build.shutdown_timeout",

shutdown_timeout_default);

if (is_thermal_shutdown && shutdown_timeout_final > max_thermal_shutdown_timeout) {

shutdown_timeout_final = max_thermal_shutdown_timeout;

}

shutdown_timeout = std::chrono::seconds(shutdown_timeout_final);

}

LOG(INFO) << "Shutdown timeout: " << shutdown_timeout.count() << " ms";

// keep debugging tools until non critical ones are all gone.

const std::set<:string> kill_after_apps{"tombstoned", "logd", "adbd"};

// watchdogd is a vendor specific component but should be alive to complete shutdown safely.

const std::set<:string> to_starts{"watchdogd"};

for (const auto& s : ServiceList::GetInstance()) {

if (kill_after_apps.count(s->name())) {

s->SetShutdownCritical();

} else if (to_starts.count(s->name())) {

if (auto result = s->Start(); !result) {

LOG(ERROR) << "Could not start shutdown 'to_start' service '" << s->name()

<< "': " << result.error();

}

s->SetShutdownCritical();

} else if (s->IsShutdownCritical()) {

// Start shutdown critical service if not started.

if (auto result = s->Start(); !result) {

LOG(ERROR) << "Could not start shutdown critical service '" << s->name()

<< "': " << result.error();

}

}

}

// remaining operations (specifically fsck) may take a substantial duration

if (cmd == ANDROID_RB_POWEROFF || is_thermal_shutdown) {

TurnOffBacklight();

}

Service* bootAnim = ServiceList::GetInstance().FindService("bootanim");

Service* surfaceFlinger = ServiceList::GetInstance().FindService("surfaceflinger");

if (bootAnim != nullptr && surfaceFlinger != nullptr && surfaceFlinger->IsRunning()) {

// will not check animation class separately

for (const auto& service : ServiceList::GetInstance()) {

if (service->classnames().count("animation")) service->SetShutdownCritical();

}

}

// optional shutdown step

// 1. terminate all services except shutdown critical ones. wait for delay to finish

//終止除shutdown關鍵之外的所有服務。 等待完成

if (shutdown_timeout > 0ms) {

LOG(INFO) << "terminating init services";

// Ask all services to terminate except shutdown critical ones.

for (const auto& s : ServiceList::GetInstance().services_in_shutdown_order()) {

if (!s->IsShutdownCritical()) s->Terminate();

}

int service_count = 0;

// Only wait up to half of timeout here

auto termination_wait_timeout = shutdown_timeout / 2;

while (t.duration() < termination_wait_timeout) {

ReapAnyOutstandingChildren();

service_count = 0;

for (const auto& s : ServiceList::GetInstance()) {

// Count the number of services running except shutdown critical.

// Exclude the console as it will ignore the SIGTERM signal

// and not exit.

// Note: SVC_CONSOLE actually means "requires console" but

// it is only used by the shell.

if (!s->IsShutdownCritical() && s->pid() != 0 && (s->flags() & SVC_CONSOLE) == 0) {

service_count++;

}

}

if (service_count == 0) {

// All terminable services terminated. We can exit early.

break;

}

// Wait a bit before recounting the number or running services.

std::this_thread::sleep_for(50ms);

}

LOG(INFO) << "Terminating running services took " << t

<< " with remaining services:" << service_count;

}

// minimum safety steps before restarting

// 2. kill all services except ones that are necessary for the shutdown sequence.

//2. 關閉所有得服務

for (const auto& s : ServiceList::GetInstance().services_in_shutdown_order()) {

if (!s->IsShutdownCritical()) s->Stop();

}

SubcontextTerminate();

ReapAnyOutstandingChildren();

// 3. send volume shutdown to vold

// 3. 關閉vold

Service* voldService = ServiceList::GetInstance().FindService("vold");

if (voldService != nullptr && voldService->IsRunning()) {

ShutdownVold();

voldService->Stop();

} else {

LOG(INFO) << "vold not running, skipping vold shutdown";

}

// logcat stopped here

for (const auto& s : ServiceList::GetInstance().services_in_shutdown_order()) {

if (kill_after_apps.count(s->name())) s->Stop();

}

// 4. sync, try umount, and optionally run fsck for user shutdown

//4. 同步,卸載分區,

{

Timer sync_timer;

LOG(INFO) << "sync() before umount...";

sync();

LOG(INFO) << "sync() before umount took" << sync_timer;

}

UmountStat stat = TryUmountAndFsck(runFsck, shutdown_timeout - t.duration());

// Follow what linux shutdown is doing: one more sync with little bit delay

{

Timer sync_timer;

LOG(INFO) << "sync() after umount...";

sync();

LOG(INFO) << "sync() after umount took" << sync_timer;

}

if (!is_thermal_shutdown) std::this_thread::sleep_for(100ms);

LogShutdownTime(stat, &t);

// Reboot regardless of umount status. If umount fails, fsck after reboot will fix it.

RebootSystem(cmd, rebootTarget); //重啟系統

abort();

}

2.7?RebootSystem

[->reboot_utils.cpp]

void __attribute__((noreturn)) RebootSystem(unsigned int cmd, const std::string& rebootTarget) {

LOG(INFO) << "Reboot ending, jumping to kernel";

if (!IsRebootCapable()) {

// On systems where init does not have the capability of rebooting the

// device, just exit cleanly.

exit(0);

}

//下面就是reboot的system call進入內核空間了:

switch (cmd) {

case ANDROID_RB_POWEROFF:

reboot(RB_POWER_OFF); //調用reboot函數執行關機

break;

case ANDROID_RB_RESTART2:

syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2,

LINUX_REBOOT_CMD_RESTART2, rebootTarget.c_str());//調用syscall函數執行重啟

break;

case ANDROID_RB_THERMOFF:

reboot(RB_POWER_OFF);//調用reboot函數執行重啟

break;

}

// In normal case, reboot should not return.

PLOG(ERROR) << "reboot call returned";

abort();

}

三、總結

一句話總結,從 設置屬性sys.powerctrl,最終重啟調用libc庫得? reboot或syscall, 也就意味這reboot下一步流程到達內核空間,

內核空間部分留著下一節繼續。

總結

以上是生活随笔為你收集整理的android关机分区卸载,Android关机重启流程(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

99国产精品免费网站 | 亚洲综合色视频在线观看 | 麻花豆传媒mv在线观看 | 一区二区视频欧美 | 久久综合五月天婷婷伊人 | 天天插日日射 | 久久激五月天综合精品 | 欧美性大战 | 91网在线观看 | 成年人免费在线观看网站 | 亚洲精品久久久久中文字幕二区 | 国产一区二区免费 | 亚洲高清资源 | 免费在线播放av电影 | 最新在线你懂的 | 涩涩色亚洲一区 | 狠狠色噜噜狠狠 | 在线91精品| 日韩精品一二三 | 国产精品久久久久9999 | 中文字幕在线播出 | 特黄免费av | 国产黄色网 | 日日骑| 91亚洲精品久久久蜜桃 | 九色精品| 欧美日韩xxx | 久草免费在线 | 射九九| 国产91综合一区在线观看 | 久久精品站 | 午夜.dj高清免费观看视频 | 精品在线免费视频 | 色婷婷六月天 | av在线播放免费 | 一区二区视频在线免费观看 | 99热精品国产 | 中国一级片免费看 | 97人人澡人人爽人人模亚洲 | 久久九九国产视频 | 久久成人国产精品免费软件 | 人人要人人澡人人爽人人dvd | 日韩av成人免费看 | 91成人免费电影 | 国产精品中文字幕在线 | 欧美成人精品三级在线观看播放 | 欧洲精品码一区二区三区免费看 | 五月天电影免费在线观看一区 | 97超碰免费 | 国产女人免费看a级丨片 | 91av大全| 在线观看视频免费播放 | 国产成人精品一区二区三区福利 | 中文字幕成人在线观看 | 色网站在线免费 | 国产精品视频免费看 | 狠狠干我 | 亚洲精品成人 | 一区二区三区在线不卡 | 毛片永久新网址首页 | 日女人电影 | 成人黄色在线看 | 在线精品一区二区 | 99在线精品视频观看 | 97在线观看视频免费 | 欧美精品一区二区蜜臀亚洲 | 免费看色的网站 | 国产精品久久一卡二卡 | 色综合色综合色综合 | 日韩精品一区在线观看 | v片在线播放 | 精品在线观看一区二区三区 | 91精品国产99久久久久久久 | 黄色在线视频网址 | 国产精品久久网站 | 97超在线| 五月婷婷导航 | 国内少妇自拍视频一区 | 国产精品免费大片视频 | 色综合久久精品 | 18pao国产成视频永久免费 | 国产精品激情偷乱一区二区∴ | av蜜桃在线 | 欧美日韩国产一区二区三区 | 国产xvideos免费视频播放 | 久久久久久久99精品免费观看 | av在观看 | 日韩在线观看视频中文字幕 | 综合色站导航 | 伊人影院在线观看 | 在线欧美小视频 | 黄色www免费 | 久久久久久久久久影视 | 国产精品毛片久久久久久久久久99999999 | 在线视频观看国产 | 91亚洲精品乱码久久久久久蜜桃 | 99在线热播精品免费99热 | 免费日韩一区二区三区 | 亚洲精品小区久久久久久 | 亚洲激情国产精品 | 99久久99久久精品国产片果冰 | 99久热精品 | 日韩av网页| 在线国产一区 | 国产精品久久久久久久电影 | 国产一区自拍视频 | 日韩免费久久 | 久久日韩精品 | 91精品久久久久久综合五月天 | 久久综合九色综合97_ 久久久 | 99中文字幕视频 | 免费看污黄网站 | 99在线视频观看 | 中文字幕在线人 | 亚洲成av人片一区二区梦乃 | 综合色综合色 | 精品亚洲免费 | 午夜一级免费电影 | 天天做夜夜做 | 97在线免费视频观看 | 日韩高清在线看 | 一级黄色片毛片 | 国产小视频福利在线 | 国产在线视频一区 | av在线网站观看 | 国产精久久久 | 亚洲永久精品在线 | 欧美最猛性xxxxx(亚洲精品) | 久草 | 久热只有精品 | 色com| 狠狠色香婷婷久久亚洲精品 | 深爱激情婷婷网 | 日韩一区视频在线 | 99在线免费视频 | 黄色精品网站 | 国产不卡精品视频 | 天海翼一区二区三区免费 | 欧美国产91 | 久久躁日日躁aaaaxxxx | 日日日天天天 | 国产资源在线观看 | 国产在线播放一区 | 正在播放久久 | 中国一级片在线播放 | 在线电影 一区 | 国产福利91精品张津瑜 | 狠狠网亚洲精品 | 久久久久国产精品午夜一区 | 国产精品久久久久9999吃药 | 成人在线免费观看网站 | 在线观看91久久久久久 | 中文字幕亚洲综合久久五月天色无吗'' | 欧美另类交在线观看 | 天天干天天干天天射 | 成人免费视频网站 | 国产精品久久久久久久久久妇女 | 久久夜夜爽 | 亚洲国产成人精品电影在线观看 | 国产一区二区三区免费在线观看 | 精品视频免费久久久看 | 麻豆你懂的 | 成人免费亚洲 | 亚洲第一区在线播放 | 久久99精品久久久久久秒播蜜臀 | 欧美激情精品久久久久久免费 | 成人啊 v | 免费在线黄色av | 伊人网综合在线观看 | 亚洲精品中文字幕视频 | 在线不卡视频 | 欧美精品中文字幕亚洲专区 | 亚洲精品综合一区二区 | 国产精品激情 | 精品久久亚洲 | 91视频在线播放视频 | 亚洲精品美女久久久久 | 亚洲经典视频在线观看 | 成人av片免费观看app下载 | 国产亚洲情侣一区二区无 | www.午夜色.com | 欧美视频99 | 亚洲爱视频 | 久草久草视频 | 免费久久久久久 | 中文字幕免费观看全部电影 | 91精品黄色 | 欧美激情在线网站 | 高清国产在线一区 | 99精品热视频只有精品10 | 久久精品亚洲综合专区 | 色吊丝av中文字幕 | 日韩精品一区二区三区水蜜桃 | 久久97视频 | 国产精品麻豆果冻传媒在线播放 | 国产91精品看黄网站在线观看动漫 | 三级黄色在线观看 | www夜夜操com | 亚洲五月 | 一级片观看| 天天干天天干天天 | 久久国产二区 | 日韩欧美在线综合网 | 日操干| 国产成人精品在线观看 | 日韩成人在线免费观看 | www.伊人色.com| 国产精品久久久久久模特 | 日日操夜夜操狠狠操 | 中文久草| 奇米网444| av福利第一导航 | 久久久亚洲电影 | 99精品视频在线免费观看 | 欧美日韩18| 国产资源网站 | 亚洲区另类春色综合小说校园片 | 欧美亚洲专区 | 亚洲网站在线看 | 999久久国精品免费观看网站 | 久久久久福利视频 | 午夜精品福利一区二区三区蜜桃 | 中文字幕中文字幕 | 狠狠操电影网 | 蜜桃视频日本 | 天天天天天天天操 | 国产精品视频永久免费播放 | av一本久道久久波多野结衣 | 99精品欧美一区二区蜜桃免费 | 99色在线播放 | 中文字幕免费观看视频 | 亚洲欧洲成人精品av97 | 亚洲精品资源 | 亚洲成人av在线播放 | 日韩精品欧美视频 | 中文字幕在线影院 | 日韩在线| 亚洲激情影院 | 免费看一及片 | 亚洲精品午夜久久久久久久 | 日韩精品一区二区三区在线视频 | 国产精品一区二区久久国产 | 激情综合网五月 | 在线观看91av | 碰超在线 | 精品国产乱码久久久久久久 | 亚洲国产一二三 | 精品成人a区在线观看 | 超碰在线人人爱 | 欧美精品v国产精品v日韩精品 | 国产字幕在线看 | 婷婷丁香六月天 | 中文字幕国产 | 亚洲人毛片 | 成人手机在线视频 | 亚洲综合色激情五月 | 一区二区三区国产欧美 | 五月婷久久| 免费高清在线视频一区· | 免费美女av | 夜又临在线观看 | 国产视频在线播放 | 午夜a区 | 久久久一本精品99久久精品 | 久久99久国产精品黄毛片入口 | 月丁香婷婷 | 在线观看www91| 九九热只有精品 | 伊人五月天婷婷 | 久久dvd| 中文字幕免费 | 五月激情在线 | 久久99免费观看 | 99亚洲精品在线 | www国产在线 | 国产一区二区不卡视频 | 91九色最新地址 | 久久兔费看a级 | 美腿丝袜av | 91最新地址永久入口 | 久久精品视频4 | 菠萝菠萝在线精品视频 | 日韩在线高清 | 日本少妇高清做爰视频 | 久久精品国产一区二区三 | 91丨九色丨高潮 | 久草网站在线观看 | av手机在线播放 | 国产一级在线免费观看 | 日韩视频专区 | 日韩av播放在线 | 色偷偷人人澡久久超碰69 | 东方av免费在线观看 | 日韩免费一二三区 | 国产高清免费观看 | 日日爽夜夜爽 | 中文字幕在线观看播放 | 人九九精品 | 91成人免费在线 | 日韩v欧美v日本v亚洲v国产v | 韩国精品福利一区二区三区 | 人人干天天射 | 天天综合91 | 久久国产剧场电影 | 国产精品久久久久久69 | 国产精品a成v人在线播放 | 999久久国产 | 国产一区二区影院 | 九色在线 | 国产午夜精品一区二区三区四区 | a极黄色片 | 亚洲伊人第一页 | 久久久久99精品成人片三人毛片 | 激情伊人五月天久久综合 | 国产亚洲精品久久久久久大师 | 中文字幕久久网 | 91看片看淫黄大片 | 婷婷激情五月 | 欧美日本在线视频 | 麻豆视频在线观看免费 | 色.www| 国产高清视频在线免费观看 | 91精品啪在线观看国产81旧版 | 欧美色图视频一区 | 日本不卡一区二区 | a级成人毛片 | 69精品视频在线观看 | 久久精品96 | 精品视频123区在线观看 | 中文字幕激情 | av电影一区二区三区 | 国产四虎在线 | 激情综合站 | 国产视频欧美视频 | 91久久人澡人人添人人爽欧美 | 欧美怡红院视频 | 国产精品嫩草影院123 | 欧美日韩二区三区 | 操操操日日日干干干 | 成片免费观看视频大全 | x99av成人免费| 亚洲国产视频a | 91精品国产92久久久久 | 91c网站色版视频 | 一级全黄毛片 | 国产成人一区二区三区在线观看 | 成人午夜电影免费在线观看 | 天天射网站 | av在线免费观看不卡 | 国产精品 999 | 亚洲精品av中文字幕在线在线 | 国产精品专区一 | 99久免费精品视频在线观看 | 久久午夜国产精品 | 欧美高清视频不卡网 | 天天伊人网 | av在线在线| 一区二区三区免费在线观看 | 天天操天天色天天 | 在线观看av黄色 | 国产黄色在线网站 | 在线免费观看麻豆 | 国产精品女主播一区二区三区 | 国内精品福利视频 | 999男人的天堂 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 91视频免费视频 | 久久免费黄色网址 | 久久国产精品色婷婷 | 国产日产精品久久久久快鸭 | 一区二区三区久久 | 伊人婷婷在线 | 成人a级大片 | 国产人在线成免费视频 | 亚洲精品动漫久久久久 | 91入口在线观看 | 亚洲视频免费在线观看 | 欧洲精品视频一区 | 成人黄色在线电影 | 有码中文在线 | av免费成人 | 一区二区欧美激情 | 麻豆影视在线免费观看 | 久久大片| 午夜成人免费电影 | 色网站在线看 | 亚洲激情精品 | 91麻豆传媒 | 午夜精品一区二区三区可下载 | 久久五月激情 | 92中文资源在线 | 99精品视频播放 | 久久精美视频 | 五月婷婷香蕉 | 欧美精品一区二区性色 | 国产成人精品午夜在线播放 | 午夜骚影 | 九九视频免费在线观看 | 久久综合福利 | 久久综合五月婷婷 | 欧美日韩精品在线免费观看 | 91久久久久久国产精品 | 成人h视频 | 色综合久 | 日本精品视频在线观看 | 久久麻豆视频 | 国产一卡久久电影永久 | 丰满少妇在线观看 | 国产成人精品免高潮在线观看 | 日韩成人免费在线 | 天堂va欧美va亚洲va老司机 | 国产一级免费片 | 91资源在线视频 | 亚洲免费在线观看视频 | 欧美在线你懂的 | 国产精品免费久久久久久久久久中文 | 黄色小说网站在线 | 欧美视屏一区二区 | 国产精品福利无圣光在线一区 | 超碰大片 | 视频国产| 少妇av网 | a级黄色片视频 | 欧美成人理伦片 | 亚洲国产精品一区二区尤物区 | 亚洲视频一级 | 欧美日性视频 | 久久免费视频一区 | 国产97在线播放 | 天天操网站 | 日本精品视频免费 | 国产精品美女久久久久久2018 | 91亚洲国产| 综合网五月天 | 久久高清国产视频 | www99精品| 日日夜夜精品视频 | 精品99免费 | 国产综合精品久久 | 色偷偷97 | 精品国产一区二区三区不卡 | 黄色a视频免费 | 中文字幕在线观看完整版电影 | 五月婷婷六月综合 | 成人在线视频免费 | 日韩视频在线不卡 | 精品一区电影 | 日本三级人妇 | 91精品999| 免费看黄在线网站 | 中文字幕色站 | 亚洲精品在线免费 | 国产精品 9999 | 91av蜜桃 | 日本久久中文字幕 | 国产中文字幕视频在线 | 色综合久久88 | 国产97色 | 草久在线观看视频 | 一级欧美一级日韩 | 午夜精品一区二区三区在线播放 | 一级黄视频 | 日韩av美女| 国产一级三级 | 国产亚洲精品免费 | av片中文字幕 | 在线91播放 | 天天干天天操天天干 | 国产伦精品一区二区三区在线 | av电影免费| 国产小视频在线看 | 九九视频在线观看视频6 | 日韩大陆欧美高清视频区 | 亚洲精品乱码久久久久久蜜桃欧美 | 91av久久 | 日本在线中文 | 又爽又黄在线观看 | 在线成人性视频 | 国产精品剧情 | 亚洲视频1 | 日本中文字幕在线电影 | 久久久国产在线视频 | 日韩精品视频久久 | 国产二区电影 | 午夜精品久久久久久久99热影院 | 欧美日韩一区二区在线观看 | 久久久久久久久久久免费视频 | 国产精品你懂的在线观看 | 啪啪午夜免费 | 午夜色站 | 一区二区三区免费在线观看视频 | 草久在线| 国产精品一区二区在线免费观看 | 精品高清美女精品国产区 | 夜色资源站国产www在线视频 | 悠悠av资源片 | 婷婷色中文字幕 | 亚洲精品美女在线 | 九色免费视频 | 日本不卡123 | 2019中文最近的2019中文在线 | 亚洲特级毛片 | 国产日韩三级 | 久久精品伊人 | 欧美日本高清视频 | 日韩精品在线观看视频 | 亚洲精品欧美精品 | 操操操天天操 | 国际av在线 | 中国美女一级看片 | 天天操天天操天天操天天操天天操 | 中文字幕有码在线观看 | 又湿又紧又大又爽a视频国产 | 韩国在线一区 | 国产不卡在线播放 | 4438全国亚洲精品观看视频 | 久久激情小视频 | 最新av在线网址 | 亚洲影视资源 | 999视频网站 | 国产片免费在线观看视频 | 天天射天天舔天天干 | 日韩啪啪小视频 | 国产精品久久久免费 | 久艹在线播放 | 免费看精品久久片 | 免费三级大片 | 亚洲一级片免费观看 | a天堂中文在线 | 国产又粗又长的视频 | www色网站 | 国产视频二区三区 | 欧美在线观看小视频 | 欧美精品中文在线免费观看 | 四虎国产精品免费观看视频优播 | 最近中文字幕mv免费高清在线 | 日本超碰在线 | 丝袜美腿av | 免费色视频网址 | 综合网伊人 | 一色屋精品视频在线观看 | 国产午夜麻豆影院在线观看 | 日韩欧美99 | 三级黄色在线观看 | 天天骚夜夜操 | 91av短视频 | 黄色一级免费电影 | 国产高清绿奴videos | 精品亚洲欧美一区 | 日韩在线中文字幕 | 亚洲免费一级电影 | 91成人精品一区在线播放69 | 国产一区私人高清影院 | 精品国产色 | 国产亚洲精品久久19p | 日韩视频免费观看高清 | 能在线观看的日韩av | 精品在线小视频 | 亚洲九九九在线观看 | 欧产日产国产69 | 色综合欧洲| 黄色精品国产 | 日本高清中文字幕有码在线 | av先锋影音少妇 | 国产在线精品一区二区三区 | 免费看的黄网站 | 99热手机在线观看 | 日本中文在线观看 | 国产精品一区二区三区在线看 | 亚洲成人黄色在线 | 免费a视频在线观看 | 最新av免费在线观看 | 国产成在线观看免费视频 | 99视频在线观看一区三区 | 日韩有码专区 | 五月天色综合 | 国产区第一页 | 日韩在线视频线视频免费网站 | 国产婷婷vvvv激情久 | 欧美日韩亚洲国产一区 | 久久成人久久 | 国产一区二区久久精品 | 久久久久久久久久久久久国产精品 | 国产高清在线免费观看 | 欧美日韩亚洲国产一区 | 国产在线观看中文字幕 | 69精品| 婷婷色中文网 | 在线视频1卡二卡三卡 | 中国一级片在线播放 | 在线黄色免费av | 国产成人黄色网址 | 成人午夜精品福利免费 | 亚洲资源视频 | 欧美二区三区91 | 亚洲成人网av | 成人久久综合 | av成人免费 | 五月开心婷婷网 | 国产精品久久久久影院日本 | av在线日韩| 日韩.com | 五月综合 | 日本韩国精品一区二区在线观看 | 日本中文字幕在线视频 | 人人射| 久久你懂的 | 一区二区三区在线观看免费视频 | 亚洲撸撸 | 久久久久久久久久久高潮一区二区 | 久久艹在线 | 日韩色区 | 99热99| 综合色在线 | 亚洲国产日韩av | 中文字幕 国产精品 | 国产成人精品三级 | 97av视频| 在线观看精品黄av片免费 | 在线观看精品一区 | 欧美成人xxx | 亚洲欧美日韩一区二区三区在线观看 | 亚洲久草网| www.色婷婷.com | av在线播放一区二区三区 | 亚洲精品久久久久中文字幕m男 | 永久免费看av| 亚洲国内精品 | 狠狠干狠狠色 | 亚洲国产精品99久久久久久久久 | 久久久这里有精品 | 欧美亚洲久久 | 国产精品福利av | av在线在线 | 久久免费在线视频 | 欧美专区日韩专区 | 中文字幕在线观看免费 | 亚洲国产一区二区精品专区 | 久久99久久99精品免观看软件 | 成年人视频在线免费观看 | 国产精品原创 | 日韩免费电影一区二区 | 中文字幕资源网 国产 | 中文字幕a∨在线乱码免费看 | 色七七亚洲影院 | 国产视频资源在线观看 | 中文字幕在线播放日韩 | 国产精品久久久网站 | 精品视频久久久久久 | 亚a在线| 美女网站在线 | 欧美精品免费一区二区 | 曰韩在线 | 久草电影免费在线观看 | 免费久久精品视频 | 亚洲成人精品在线观看 | 国产专区在线视频 | 99热国内精品 | 久草在线视频首页 | 中文字幕一区二区在线播放 | 在线观看免费av网站 | 视频一区二区免费 | 亚洲国产一区二区精品专区 | 成人性生交视频 | 精品国产乱码久久久久久久 | 国产精品123 | 2023国产精品自产拍在线观看 | 黄色软件视频大全免费下载 | 国产99re | 久草视频免费播放 | 国产成人一区二区精品非洲 | 国产精品久久视频 | 黄色三级免费看 | 99电影| 免费观看第二部31集 | 久久亚洲私人国产精品 | 国产一级免费观看视频 | 国内成人综合 | 在线中文字幕一区二区 | 日韩av影视在线观看 | 久久久人人爽 | 日本精品一区二区三区在线观看 | 91污视频在线观看 | 亚洲精品国产欧美在线观看 | 久久综合一本 | 500部大龄熟乱视频使用方法 | 欧美一级黄大片 | 久久99久久久久久 | 久久手机免费观看 | 91亚洲精品久久久中文字幕 | 这里只有精彩视频 | www在线观看视频 | 福利视频一区二区 | 视频福利在线观看 | 日日插日日干 | 日本在线视频一区二区三区 | 亚洲一区二区高潮无套美女 | 日本在线观看视频一区 | 97视频免费观看2区 亚洲视屏 | 国产精品久久久久高潮 | 国产精品国产三级国产aⅴ9色 | 亚洲精品 在线视频 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 狠狠的干 | 亚洲激情中文 | 色五月色开心色婷婷色丁香 | 久久久电影 | www.成人sex | 黄色官网在线观看 | 成人一区二区三区在线 | 色婷婷在线播放 | 亚洲精品99久久久久中文字幕 | 亚洲天堂网在线观看视频 | 91丨九色丨高潮 | 日韩理论在线观看 | 免费黄色网址大全 | 国产一区二区在线播放视频 | 亚洲精品国产精品国自产观看 | 久久久久看片 | 91在线中文字幕 | 久久久亚洲影院 | 国产一级a毛片视频爆浆 | 五月亚洲| 2017狠狠干| 国产成人一区二区三区免费看 | 欧美大片第1页 | 天天干天天综合 | 国产玖玖精品视频 | 欧美日韩亚洲第一页 | 久久人人精品 | 91精品久久久久久综合乱菊 | 麻豆播放 | 免费在线激情电影 | 欧美做受69| 91精品啪在线观看国产81旧版 | 一区二区三区精品久久久 | 色综合久久久久 | 欧美精品久久久久久久久久白贞 | 婷婷色中文网 | 久久久久一区二区三区 | 婷婷色网站 | 婷婷色中文 | 黄色小说免费观看 | 热久久国产精品 | 中文字幕在线观看第二页 | 天堂av网站 | 国产精品久久久久久久电影 | 亚洲第一成网站 | 国际精品久久久久 | 天天干天天射天天操 | 在线观看日韩视频 | 狠狠干成人综合网 | 少妇bbb | 亚洲激情网站免费观看 | 久久国产手机看片 | 久久手机精品视频 | 黄色一级免费网站 | 成人理论电影 | 日韩av电影中文字幕在线观看 | 久久精品视频在线观看免费 | 99精品视频精品精品视频 | 伊人国产在线播放 | 极品中文字幕 | 日韩中字在线观看 | 欧女人精69xxxxxx| 欧美视频www| a在线视频v视频 | 91九色免费视频 | 亚洲一区二区三区精品在线观看 | 国产精品自产拍在线观看网站 | 中文字幕免费不卡视频 | 天天操天天射天天插 | 一区二区三区在线视频观看58 | av免费试看 | 久久综合加勒比 | 九九九九精品九九九九 | 久久久毛片 | 久久69精品久久久久久久电影好 | 国产又黄又猛又粗 | 欧美 日韩 久久 | 久久久久久久国产精品视频 | 精品久久久久久久久久久久久久久久久久 | 日日摸日日添夜夜爽97 | 成全在线视频免费观看 | 日韩精品中文字幕在线 | 国产免费久久av | 国产高清久久 | 最新免费中文字幕 | 中文字幕在线中文 | 久久视频精品在线 | av观看免费在线 | 日韩欧美国产成人 | 热久久电影 | av解说在线 | 国产涩图 | 96av在线 | 久久久99国产精品免费 | 99九九热只有国产精品 | 欧美日韩有码 | 免费成人av网站 | 丁香综合激情 | www操操| 欧美在线一 | 久久高清精品 | 91精品无人成人www | 日韩免费在线观看网站 | 久久艹中文字幕 | 国产精品女教师 | 久久婷婷亚洲 | 国产在线观看99 | 国产日韩欧美在线免费观看 | 国产精品一区在线播放 | 另类五月激情 | www夜夜操com | 18女毛片| 99久久日韩精品免费热麻豆美女 | 狠狠色香婷婷久久亚洲精品 | 精品一区二区三区香蕉蜜桃 | 91人人射| 久久99国产精品免费 | 久久免费电影 | 色综合天天综合网国产成人网 | 国产视频一区在线 | 久久久久久久精 | 99久久精品免费 | 日本久久中文字幕 | 97av影院| 天天在线免费视频 | 国产老妇av| 久久久久国产成人精品亚洲午夜 | 日日干夜夜爱 | 麻豆久久一区 | 成人av免费电影 | 91av久久| 91精品国产一区二区在线观看 | 久99久久| 久久午夜国产精品 | 国产一区二区三区视频在线 | 日韩综合一区二区三区 | 日日夜夜网| 麻豆视传媒官网免费观看 | 日韩美女免费线视频 | 国产极品尤物在线 | 久久久久成人精品 | 婷婷丁香激情 | av成人免费在线观看 | 亚洲精品美女久久久 | 一区二区三区视频在线 | 九九热在线免费观看 | 日韩在线观看av | 久久久午夜精品福利内容 | 日本中文乱码卡一卡二新区 | 中文av网站 | 热久久影视 | 狠狠狠狠狠狠天天爱 | 亚洲综合在线观看视频 | 国产一区在线视频观看 | 中文字幕一区二区三区乱码不卡 | 久久久www成人免费精品张筱雨 | 一区中文字幕 | 国产精品久久久久av | 午夜一级免费电影 | 精品国产视频在线 | 亚洲最新av网站 | 国产精品久久久区三区天天噜 | www免费看片com | 99re6热在线精品视频 | 999视频精品 | 91精品推荐 | 黄色日本片 | 在线观看视频你懂的 | 日日干夜夜操视频 | 五月婷婷开心 | 手机在线免费av | 欧美视频二区 | 日日夜夜免费精品视频 | 4p变态网欧美系列 | 色在线免费| 国产精品成久久久久三级 | 中文字幕在线免费看 | japanesexxxhd奶水 国产一区二区在线免费观看 | 久久香蕉影视 | 中文字幕在线观看网址 | 三级黄色网址 | 黄色小说在线免费观看 | 亚洲黄色免费网站 | 91传媒91久久久 | 国产成人av一区二区三区在线观看 | 夜夜操网站 | 亚洲三级毛片 | 91精品国产综合久久婷婷香蕉 | 麻豆国产露脸在线观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚洲精品av在线 | 欧美日韩在线播放 | 久久免费福利 | 99久久99久久 | 日韩精品亚洲专区在线观看 | 国产精品嫩草69影院 | av免费观看网址 | 日韩欧三级 | 国产视频精品久久 | 五月婷香蕉久色在线看 | 天天操天天舔天天干 | 99婷婷| 91最新在线观看 | 天天操天天干天天玩 | 在线黄网站 | 500部大龄熟乱视频使用方法 | 在线观看日本高清mv视频 | 中文在线中文a | 国产精品国产亚洲精品看不卡 | 一区国产精品 | 二区三区av | 丁香六月在线观看 | 波多野结衣一区二区 | 国产精品成人在线观看 | 国产色女 | 精品国产精品国产偷麻豆 | 天天天天色综合 | 久久99精品久久久久婷婷 | 精品久久五月天 | 国产精品高潮呻吟久久av无 | 色老板在线 | 91麻豆视频| 99热精品久久 | 日韩一二三在线 | 国产精品久久久久久久久久久久久久 | 高清国产午夜精品久久久久久 | 国产免费观看高清完整版 | 不卡视频一区二区三区 | 久久99精品国产91久久来源 | 午夜久久影视 | 欧美激情xxxx | 国产精品va在线播放 | 免费在线观看一区 | 天天操天天色天天 | 久久久麻豆 | 国产精品久久久久久久久久久免费看 | 99视频在线精品国自产拍免费观看 | 天天视频色版 | 私人av| 久久久国产一区二区 | 天天操婷婷 | 人人插人人费 | 日韩一二区在线观看 | 精品综合久久 | 免费成人在线网站 | 免费看国产精品 | 久久夜视频 | 综合激情婷婷 | 成人黄色毛片视频 | 涩五月婷婷 | 亚洲成人av免费 | 久久精品韩国 | 国产精品久久久久四虎 | 国产成人av电影在线观看 | 99免费在线播放99久久免费 | 在线观看精品国产 | 日韩精品短视频 | 一区二区三区四区精品视频 | 丝袜制服综合网 | 免费成视频 | 国产一级视频在线观看 | 久草在线网址 | 日韩影视精品 | 成人免费av电影 | 欧美成人在线免费 | 97色免费视频 | 婷婷综合视频 | 国产高清在线精品 | 伊人开心激情 | 激情视频国产 | 欧美一级电影免费观看 | 婷婷www| 五月开心色 | 国产一区二区三区在线免费观看 | 在线观看视频国产一区 | 久久嗨| 精品国产视频在线观看 | 欧美aa一级片 | 成人黄性视频 | 天天操夜夜操 | 久久天堂网站 | 久久伊人爱 | 久久亚洲视频 | 日本中文字幕久久 | 激情丁香在线 | 天天干.com| 亚洲影院天堂 | 青青河边草观看完整版高清 | 免费在线成人av | 最近免费观看的电影完整版 | 91经典在线 | 国产精品18久久久久久久久 | 欧美不卡视频在线 | 精品久久久999 | 亚洲精品在线电影 |