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

OHOS標(biāo)準(zhǔn)系統(tǒng)的SAMGR代碼解讀(v3.1)--1--Safwk

系統(tǒng) OpenHarmony
OHOS標(biāo)準(zhǔn)系統(tǒng)的Safwk組件位于3.1分支代碼的//foundation/distributedschedule/safwk/目錄下,在最新的master分支代碼則是//foundation/systemabilitymgr/safwk/目錄下。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

OHOS標(biāo)準(zhǔn)系統(tǒng)的safwk組件位于3.1分支代碼的//foundation/distributedschedule/safwk/目錄下,在最新的master分支代碼則是//foundation/systemabilitymgr/safwk/目錄下。

通過(guò)tree命令將目錄樹(shù)結(jié)構(gòu)打印出來(lái),把測(cè)試相關(guān)代碼以及我們暫不關(guān)心的文件去掉后,結(jié)果如下圖所示:

OHOS標(biāo)準(zhǔn)系統(tǒng)的SAMGR代碼解讀(v3.1)--1--safwk-開(kāi)源基礎(chǔ)軟件社區(qū)

可以看到通過(guò)safwk組件中的三個(gè)BUILD.gn文件,把safwk組件的配置文件和源代碼分別編譯成以下3個(gè)目標(biāo):

  1. 配置文件 profile。
  2. 可執(zhí)行程序sa_main。
  3. 動(dòng)態(tài)鏈接庫(kù)文件 system_ability_fwk(即 libsystem_ability_fwk.z.so)。

下面分別來(lái)看一下。

1、配置文件 profile

在3.1 release分支代碼的 safwk/etc/profile/目錄下,只有BUILD.gn和foundation_trust.xml兩個(gè)文件(foundation.cfg 文件實(shí)際在//foundation/appexecfwk/standard/sa_profile/目錄下)。

在master分支代碼的 safwk/etc/profile/目錄下,除了BUILD.gn、foundation_trust.xml和foundation.cfg外,還新增了一個(gè)foundation_permission_desc.json文件(BUILD.gn中未見(jiàn)對(duì)該新增文件的使用)。

可見(jiàn)這些配置文件在3.1 release和master分支上有細(xì)微差別,但不影響我們對(duì)safwk組件的分析。

(1)foundation.cfg

這是標(biāo)準(zhǔn)系統(tǒng)的foundation進(jìn)程的啟動(dòng)配置文件,在標(biāo)準(zhǔn)系統(tǒng)的開(kāi)機(jī)啟動(dòng)階段,由init進(jìn)程解析 /system/etc/init/foundation.cfg文件,并執(zhí)行其中的命令拉起foundation進(jìn)程(實(shí)際上在標(biāo)準(zhǔn)系統(tǒng)中有非常多的進(jìn)程以類似的方式拉起進(jìn)程,可搜索并過(guò)濾/system/etc/init/*.cfg文件進(jìn)行確認(rèn))。

查看/system/etc/init/foundation.cfg文件:

......(略)
"services" : [{
"name" : "foundation",
"path" : ["/system/bin/sa_main", "/system/profile/foundation.xml"],
......
"jobs" : {
"on-start" : "services:foundation"
}
}
]

標(biāo)準(zhǔn)系統(tǒng)的foundation進(jìn)程沒(méi)有生成自己的可執(zhí)行程序,而是借用了/system/bin/sa_main可執(zhí)行程序創(chuàng)建并初始化foundation進(jìn)程的運(yùn)行環(huán)境,根據(jù)傳入的/system/profile/foundation.xml參數(shù),運(yùn)行foundation.xml文件中指定的各個(gè)SA,保證了這組SA能夠順利對(duì)系統(tǒng)提供服務(wù)。

(2)foundation.xml

/system/profile/foundation.xml 文件是編譯系統(tǒng)自動(dòng)生成的,它由一組 serviceid.xml 合并而成。在foundation.xml中可以看到一組SA的ID,如401、3501、4802等,我們可以在系統(tǒng)代碼根目錄下分別搜索401.xml、3501.xml、4802.xml等,可以找到對(duì)應(yīng)的文件。在這些文件中都可以看到一個(gè)“<process>foundation</process>”字段,表明這些SA都運(yùn)行在foundation進(jìn)程空間,而“<systemability>xxx</systemability>”之間的各個(gè)字段,則是SA的詳細(xì)配置信息,在啟動(dòng)SA時(shí)會(huì)用得到(這些配置信息的詳情,請(qǐng)查閱safwk/README_zh.md文檔)。

(3)foundation_trust.xml 和 foundation_permission_desc.json

foundation_trust.xml記錄了可以在foundation進(jìn)程中加載和運(yùn)行的SA列表,見(jiàn)4.1節(jié)的分析。

foundation_permission_desc.json目前未見(jiàn)到使用的地方。

(4)其他進(jìn)程的.cfg和.xml

其他進(jìn)程如果也是用sa_main可執(zhí)行程序來(lái)拉起進(jìn)程,則它們也必須要有對(duì)應(yīng)的.cfg和serviceid.xml文件。

比如softbus_server進(jìn)程,會(huì)有dsoftbus/core/frame/standard/init/src/softbus_server.cfg 和 dsoftbus/core/frame/standard/sa_profile/4700.xml。這兩個(gè)文件經(jīng)編譯系統(tǒng)的處理后,對(duì)應(yīng)生成系統(tǒng)中的/system/etc/init/softbus_server.cfg和/system/profile/softbus_server.xml。(《沉浸式剖析OpenHarmony源代碼》的8.7.1節(jié)內(nèi)容詳細(xì)分析了softbus_server進(jìn)程的啟動(dòng)流程,本文不再贅述。)

2、可執(zhí)行程序sa_main

可執(zhí)行程序sa_main由 safwk/services/safwk/src/main.cpp 文件單獨(dú)編譯生成。查看其源代碼,可以看到它的實(shí)際工作很簡(jiǎn)單:

執(zhí)行main()函數(shù),在系統(tǒng)中創(chuàng)建并初始化進(jìn)程的運(yùn)行環(huán)境;然后讀取并解析參數(shù)傳入的.xml文件(如foundation.xml 或softbus_server.xml),將進(jìn)程的名字設(shè)置為.xml文件中“<process>name</process>”字段指定的名字;最后執(zhí)行:

LocalAbilityManager::GetInstance().DoStartSAProcess(profilePath, saId);
//注意:在系統(tǒng)開(kāi)機(jī)階段自動(dòng)啟動(dòng)進(jìn)程時(shí),saId參數(shù)的值此時(shí)都是-1,并非傳入具體的SA的ID。

以此啟動(dòng).xml文件中指定的一個(gè)或多個(gè)SA。

3、動(dòng)態(tài)鏈接庫(kù)文件 system_ability_fwk

system_ability_fwk動(dòng)態(tài)鏈接庫(kù)為sa_main啟動(dòng)具體的SA提供支持,它的源代碼、依賴關(guān)系、類之間的關(guān)系等,如下圖所示:

OHOS標(biāo)準(zhǔn)系統(tǒng)的SAMGR代碼解讀(v3.1)--1--safwk-開(kāi)源基礎(chǔ)軟件社區(qū)

(1)組件的依賴關(guān)系

注意該庫(kù)的依賴關(guān)系。其中依賴與samgr相關(guān)的3個(gè)動(dòng)態(tài)鏈接庫(kù),會(huì)在解讀samgr組件時(shí)進(jìn)行分析。

依賴的ipc_core組件所提供的IPC功能(對(duì)應(yīng)上圖右上角的一組虛基類),本文暫不深入分析。

(2)類的繼承關(guān)系

由上圖藍(lán)色底色部分中的灰色底色所指示的三個(gè)類之間的關(guān)系可以看出:

  • LocalAbilityManagerStub 類繼承 ILocalAbilityManager 接口類,為啟動(dòng)SA提供服務(wù)端(Stub)接口,具體的啟動(dòng)SA的一般流程(或公共流程)由其子類LocalAbilityManager實(shí)現(xiàn)。
  • LocalAbilityManager類實(shí)現(xiàn)啟動(dòng)SA的一般性流程,并記錄了當(dāng)前進(jìn)程內(nèi)的所有SA的詳細(xì)信息、當(dāng)前LocalAbilityManager類對(duì)象、SA的任務(wù)信息等等。
  • 每一個(gè)SA對(duì)應(yīng)一個(gè)SystemAbility類的對(duì)象,該對(duì)象記錄了serviceid.xml文件中的 “<systemability>xxx</systemability>”字段中記錄的信息。
  • LocalAbilityManager類是SystemAbility類的友元類,LocalAbilityManager類可以直接訪問(wèn)SystemAbility類的所有成員和函數(shù)。

它們的關(guān)系如下圖所示:

OHOS標(biāo)準(zhǔn)系統(tǒng)的SAMGR代碼解讀(v3.1)--1--safwk-開(kāi)源基礎(chǔ)軟件社區(qū)

4、啟動(dòng)SA的一般流程

如上面1.1所述,init進(jìn)程讀取和解析 /system/etc/init/*.cfg 文件,在啟動(dòng)到具體的jobs階段時(shí),執(zhí)行對(duì)應(yīng)的命令以啟動(dòng)服務(wù)(即SA)。

下面以softbus_server(SA4700)的啟動(dòng)為例,簡(jiǎn)單說(shuō)明與safwk組件相關(guān)的SA一般性啟動(dòng)流程。

(1)DoStartSAProcess() 函數(shù)

OHOS標(biāo)準(zhǔn)系統(tǒng)的SAMGR代碼解讀(v3.1)--1--safwk-開(kāi)源基礎(chǔ)軟件社區(qū)

sa_main可執(zhí)行程序的執(zhí)行流程如上圖所示,它的主要工作都在調(diào)用的如下函數(shù)的步驟中了。

LocalAbilityManager::GetInstance().DoStartSAProcess(profilePath, saId);

在DoStartSAProcess()函數(shù)中的4個(gè)步驟,簡(jiǎn)單說(shuō)明如下:

步驟[4-1]:調(diào)用InitSystemAbilityProfiles()函數(shù)

主要是分析傳入main()的第2個(gè)參數(shù)中指定的.xml文件,并將該文件的<systemability>列表中記錄的各個(gè)SA的信息,逐一分析并提取信息記錄到 ParseUtil類的如下兩個(gè)字段中:

//當(dāng)前進(jìn)程的SA鏈表,鏈表上的每一個(gè)節(jié)點(diǎn)都是一個(gè)SaProfile結(jié)構(gòu)體
std::list<SaProfile> saProfiles_;
//當(dāng)前進(jìn)程的名字,如foundation、softbus_server等
std::u16string procName_;

然后還會(huì)確認(rèn)是否存在“/system/profile/進(jìn)程名_trust.xml”文件(如1.3中提到的foundation_trust.xml文件)。存在該文件的話,則會(huì)通過(guò)CheckTrustSa()確認(rèn)上述SA鏈表中的SA是否都允許在當(dāng)前進(jìn)程中加載和運(yùn)行,并將不允許在當(dāng)前進(jìn)程中加載和運(yùn)行的SA從SA鏈表中刪除,在接下來(lái)的步驟中就不去加載和運(yùn)行它了。

最后調(diào)用OpenSo()將SA鏈表中的SA指定的動(dòng)態(tài)鏈接庫(kù)加載到當(dāng)前進(jìn)程的運(yùn)行空間中。

void ParseUtil::OpenSo()
{
for (auto& saProfile : saProfiles_) {
if (saProfile.runOnCreate) {
OpenSo(saProfile);
}
}
}

加載動(dòng)態(tài)鏈接庫(kù)時(shí),會(huì)根據(jù)不同的SA的類構(gòu)造函數(shù)創(chuàng)建各自的SA服務(wù)對(duì)象,并執(zhí)行SystemAbility::MakeAndRegisterAbility(Xxx obj)將SA的服務(wù)對(duì)象注冊(cè)到 LocalAbilityManager 類的std::map<int32_t, SystemAbility*> abilityMap_ 成員中備用,該成員是一個(gè)map數(shù)據(jù)結(jié)構(gòu),key是saId,value對(duì)應(yīng)具體的一個(gè)SA對(duì)象指針。

步驟[4-2] :調(diào)用CheckSystemAbilityManagerReady()函數(shù)

這一步主要是通過(guò)嘗試獲取samgrProxy來(lái)確認(rèn)遠(yuǎn)程的samgr進(jìn)程的saManager服務(wù)是否可以訪問(wèn)。

samgr進(jìn)程幾乎是用戶空間上最早運(yùn)行的系統(tǒng)進(jìn)程了,所有的SA都需要依賴samgr提供的服務(wù)。

步驟[4-3] :調(diào)用InitializeSaProfiles()函數(shù)

這一步主要是執(zhí)行InitializeRunOnCreateSaProfiles()函數(shù),將SA鏈表(saProfiles_)中的SA依次在abilityMap_中提取匹配的SA,并根據(jù)SA屬性中的<bootphase>字段的配置,將SA加入到 LocalAbilityManager 類的std::map<uint32_t, std::list<SystemAbility*>> abilityPhaseMap_成員中,該成員是一個(gè)map數(shù)據(jù)結(jié)構(gòu),key是如下枚舉中的一個(gè)值(表示不同的啟動(dòng)階段):

enum {
BOOT_START = 1,
CORE_START = 2,
OTHER_START = 3,
};

value則是一個(gè)list的鏈表結(jié)構(gòu),鏈表上的每個(gè)節(jié)點(diǎn)都是一個(gè)SA的對(duì)象指針。

當(dāng)系統(tǒng)啟動(dòng)到枚舉指定的階段時(shí),就會(huì)依次啟動(dòng)list鏈表中的所有SA。

bootphase:可不設(shè)置;可以設(shè)置的值有三種:BootStartPhase、CoreStartPhase、OtherStartPhase(默認(rèn)類型),三種優(yōu)先級(jí)依次降低,在同一個(gè)進(jìn)程中,會(huì)優(yōu)先拉起注冊(cè)配置BootStartPhase的SystemAbility,然后是配置了CoreStartPhase的SystemAbility,最后是OtherStartPhase;當(dāng)高優(yōu)先級(jí)的SystemAbility全部啟動(dòng)注冊(cè)完畢才會(huì)啟動(dòng)下一級(jí)的SystemAbility的注冊(cè)啟動(dòng)。

步驟[4-4] :調(diào)用Run()函數(shù)

這一步調(diào)用Run()函數(shù)向saManager注冊(cè)SA并啟動(dòng)SA對(duì)應(yīng)的任務(wù)。

(2)Run() 函數(shù)

LocalAbilityManager::Run() 的流程(見(jiàn)附件大圖),按函數(shù)調(diào)用分為如下5個(gè)步驟,簡(jiǎn)單分析如下。

OHOS標(biāo)準(zhǔn)系統(tǒng)的SAMGR代碼解讀(v3.1)--1--safwk-開(kāi)源基礎(chǔ)軟件社區(qū)

步驟[5-1]:向遠(yuǎn)程的samgr注冊(cè)當(dāng)前進(jìn)程的 localAbilityManager_ 對(duì)象

這一步首先獲取遠(yuǎn)程samgr的服務(wù)代理,通過(guò)該代理發(fā)送IPC消息給saManager,把當(dāng)前進(jìn)程的名字和該進(jìn)程的 localAbilityManager_ 對(duì)象注冊(cè)到samgr的 std::map<std::u16string, sptr<IRemoteObject>> systemProcessMap_ 成員中,該成員是一個(gè)map數(shù)據(jù)結(jié)構(gòu),key是進(jìn)程名字符串,value是該進(jìn)程的localAbilityManager_ 對(duì)象(也是一個(gè)IRemoteObject對(duì)象)。

步驟[5-2]:?jiǎn)?dòng)當(dāng)前進(jìn)程的主線程

步驟[5-3]:按啟動(dòng)的階段(Phase)依次啟動(dòng)abilityPhaseMap_中對(duì)應(yīng)階段的SA鏈表中的每一個(gè)SA

這一步相當(dāng)于按SA的優(yōu)先級(jí)別先后啟動(dòng)進(jìn)程中的每一個(gè)SA了。如foundation進(jìn)程,它有若干個(gè)SA,其中一部分SA是在CORE_START階段先啟動(dòng)的,另一部分SA是在默認(rèn)的OTHER_START階段后啟動(dòng)的;而softbus_server進(jìn)程只有一個(gè)SA4700,默認(rèn)是在OTHER_START階段啟動(dòng)的。

進(jìn)程中的每一個(gè)SA都會(huì)在當(dāng)前進(jìn)程中創(chuàng)建一個(gè)任務(wù)(線程),并綁定任務(wù)的入口函數(shù)為 LocalAbilityManager::StartSystemAbilityTask()。任務(wù)啟動(dòng)后就執(zhí)行該函數(shù),先確認(rèn)SA的依賴關(guān)系,然后進(jìn)入啟動(dòng)每一個(gè)具體的SA的流程(如上圖中的啟動(dòng)軟總線SA的流程,這就是每一個(gè)SA各自獨(dú)特的啟動(dòng)流程部分了)。

步驟[5-4]:向遠(yuǎn)程的samgr注冊(cè)當(dāng)前進(jìn)程的標(biāo)記為按需啟動(dòng)的SA

run-on-create:true表示進(jìn)程啟動(dòng)后即向samgr組件注冊(cè)該SystemAbility;false表示按需啟動(dòng),即在其他模塊訪問(wèn)到該SystemAbility時(shí)啟動(dòng),必配項(xiàng)。

這一步首先獲取遠(yuǎn)程samgr的服務(wù)代理,通過(guò)該代理發(fā)送IPC消息給saManager,把當(dāng)前進(jìn)程的名字和按需啟動(dòng)的SA的id注冊(cè)到samgr的 std::map<int32_t, std::u16string> onDemandAbilityMap_ 成員中,該成員是一個(gè)map數(shù)據(jù)結(jié)構(gòu),key是按需啟動(dòng)的SA的id,value是該SA所在進(jìn)程的進(jìn)程名字。

注意:此時(shí)的按需啟動(dòng)的SA還沒(méi)有啟動(dòng),即沒(méi)有執(zhí)行步驟[5-3]的流程為SA創(chuàng)建任務(wù)。

當(dāng)有其他進(jìn)程向saManager查詢某個(gè)按需啟動(dòng)的SA時(shí),saManager會(huì)通過(guò)pendingTask執(zhí)行StartOnDemandAbility()函數(shù)的流程向SA所在的進(jìn)程發(fā)送IPC消息,要求啟動(dòng)SA,如上圖的右下角綠色部分所示。

步驟[5-5]:停止當(dāng)前進(jìn)程的主線程

(3)啟動(dòng)按需啟動(dòng)的SA

saManager向SA所在的進(jìn)程發(fā)送IPC消息要求啟動(dòng)按需啟動(dòng)的SA時(shí),SA所在進(jìn)程的LocalAbilityManagerStub::OnRemoteRequest()收到IPC消息,并作進(jìn)一步處理,如下圖右半部分所示。

OHOS標(biāo)準(zhǔn)系統(tǒng)的SAMGR代碼解讀(v3.1)--1--safwk-開(kāi)源基礎(chǔ)軟件社區(qū)

LocalAbilityManagerStub通過(guò)其子類的LocalAbilityManager::StartAbility()流程來(lái)啟動(dòng)對(duì)應(yīng)的SA。

StartAbility()首先是創(chuàng)建一個(gè)任務(wù)運(yùn)行LocalAbilityManager::StartOndemandSystemAbility(),用以加載SA對(duì)應(yīng)的動(dòng)態(tài)鏈接庫(kù),然后執(zhí)行OnStartAbility()開(kāi)始啟動(dòng)SA,最終會(huì)進(jìn)入啟動(dòng)具體的SA的流程(即SA自己獨(dú)特的啟動(dòng)流程)。

5、小結(jié)

以上便是safwk啟動(dòng)一個(gè)SA的一般性流程。

safwk組件還提供其他一些功能,如添加、通知、刪除SA的監(jiān)聽(tīng)者,向samgr注銷SA等,這就請(qǐng)小伙伴們自行閱讀源代碼進(jìn)行理解了。

文章相關(guān)附件可以點(diǎn)擊下面的原文鏈接前往下載:

https://ost.51cto.com/resource/2283。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來(lái)源: ??51CTO開(kāi)源基礎(chǔ)軟件社區(qū)
相關(guān)推薦

2022-09-13 15:54:41

samgr鴻蒙

2022-09-27 15:57:20

OHOS代碼倉(cāng)庫(kù)

2022-06-10 14:37:24

鴻蒙操作系統(tǒng)

2022-04-02 20:45:04

Hi3516開(kāi)發(fā)板操作系統(tǒng)鴻蒙

2025-08-23 08:20:29

2009-05-08 09:22:00

Python面向?qū)ο?/a>編譯

2025-08-19 21:23:45

DeepSeekAPP接口

2021-11-23 15:35:05

鴻蒙HarmonyOS應(yīng)用

2025-02-20 08:26:28

2021-09-26 10:22:41

鴻蒙HarmonyOS應(yīng)用

2015-04-22 09:41:45

WeX5

2022-10-12 15:14:08

開(kāi)機(jī)動(dòng)畫鴻蒙

2012-05-28 15:25:40

微瘋客棧

2021-09-16 15:04:28

鴻蒙HarmonyOS應(yīng)用

2014-06-13 19:13:50

Cocos2d-JS

2025-08-27 09:02:00

AI模型測(cè)試

2022-09-15 14:56:12

GDB調(diào)試鴻蒙

2021-06-03 14:21:44

鴻蒙HarmonyOS應(yīng)用

2021-11-08 07:19:45

鴻蒙HarmonyOS應(yīng)用

2023-12-29 08:45:40

Python3.8鴻蒙解釋器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久男人av资源网站| 91精品在线麻豆| 日本精品一区二区| 亚洲在线观看av| 国精品一区二区| 亚洲欧洲国产一区| 国产欧美精品一区二区三区-老狼| 91亚洲精品久久久蜜桃借种| 影院在线观看全集免费观看| 97se亚洲国产综合在线| 国产精品丝袜久久久久久高清 | 亚洲影院免费观看| 欧美日韩中文国产一区发布| 国产高中女学生第一次| 久色成人在线| 欧美激情一级精品国产| 亚洲av熟女国产一区二区性色| 亚洲午夜免费| 欧美日韩国产高清一区二区| 免费观看美女裸体网站| 成人ww免费完整版在线观看| 久久久国产综合精品女国产盗摄| 91免费版黄色| 中文字幕在线视频免费| 婷婷成人影院| 在线综合视频播放| 国产a级片免费观看| 国产美女情趣调教h一区二区| 欧美韩国日本综合| 国产精品jizz在线观看麻豆| 欧美日韩偷拍视频| 91亚洲一区| 亚洲三级av在线| 中文字幕三级电影| 欧美在线在线| 91精品国产综合久久精品app| 男人女人黄一级| 黄色在线网站噜噜噜| 亚洲精品你懂的| 欧美在线激情| 欧美一区二区视频| 91看片淫黄大片一级在线观看| 999热视频| 国产人妖一区二区三区| 美国一区二区三区在线播放 | 国产精品视频一二三| 美日韩免费视频| 五月婷婷在线播放| 亚洲综合欧美| 高清欧美性猛交xxxx黑人猛交| 岛国毛片在线观看| 亚洲在线久久| 欧美理论片在线观看| 欧美视频www| 欧美黄色精品| 久久久久久国产精品三级玉女聊斋| 国产午夜手机精彩视频| 999久久久精品国产| 在线亚洲欧美视频| 娇小11一12╳yⅹ╳毛片| 日韩国产欧美一区二区| 日韩一区在线视频| 日韩av手机在线免费观看| 国产成人在线免费观看视频| 在线看片福利| 欧美视频二区36p| 青青青在线播放| 欧美一区国产| 欧美区一区二区三区| 国产一级免费大片| 中文字幕一区二区三区日韩精品| 精品少妇一区二区三区视频免付费| 精品人妻在线视频| 香蕉久久夜色精品国产更新时间| 亚洲免费中文字幕| jizz中文字幕| 日韩电影免费在线观看| 久久影院在线观看| 国产午夜免费视频| 欧美专区一区二区三区| 国产精品久久久久久久久久久久久久 | 精品久久91| 精品国产区一区二区三区在线观看| 成人免费精品动漫网站| 亚洲美洲欧洲综合国产一区| 日本欧美爱爱爱| 夜夜嗨av禁果av粉嫩avhd| 国产成人在线视频网址| 蜜桃久久影院| 精品自拍一区| 精品国产乱码久久久久酒店| 在线视频日韩一区| 日韩中文一区二区| 亚洲美女动态图120秒| 波多野结衣欲乱| 亚洲国产专区| 国产日韩综合一区二区性色av| 亚洲成人一级片| 国产欧美一区二区精品性色超碰| 久久视频免费在线| 波多野结衣亚洲| 亚洲男帅同性gay1069| 精品无码国产一区二区三区av| 亚洲va中文在线播放免费| 欧美一级片免费看| 91亚洲精品久久久蜜桃借种| 国产精品久久久网站| 一区二区三区黄色| 日韩精品国产一区二区| 蜜臀久久99精品久久久画质超高清| 超碰97人人在线| 9i精品一二三区| 欧美日韩国产精品一区二区三区四区| 蜜臀一区二区三区精品免费视频 | 亚洲精品日韩欧美| 91香蕉一区二区三区在线观看| 日韩视频精品在线观看| 91精品中文在线| 97免费观看视频| 91啪九色porn原创视频在线观看| 一区二区三区四区免费观看| 美女网站视频一区| 国产视频精品免费播放| 久草网在线观看| 国精品**一区二区三区在线蜜桃| 欧美日韩精品不卡| xxxx另类黑人| 日韩精品一区二区三区在线播放| 苍井空张开腿实干12次| 哺乳挤奶一区二区三区免费看| 中文字幕精品国产| 岛国av中文字幕| 91啪亚洲精品| 人妻夜夜添夜夜无码av| 天堂va在线高清一区| 日韩亚洲成人av在线| 中文字幕1区2区3区| 97se亚洲国产综合在线| 国产精品自拍片| 波多野结衣欧美| 久久久久久久久国产精品| 99国产精品99| 亚洲精品一二三区| www激情五月| 五月天综合网站| 成人网页在线免费观看| 老司机精品视频在线观看6| 欧美在线free| 国产美女网站视频| 精品在线观看视频| 日本免费在线视频观看| 粉嫩一区二区三区在线观看| 久久中文字幕一区| 99在线精品视频免费观看20| 亚洲柠檬福利资源导航| av影片在线播放| 今天的高清视频免费播放成人| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 99久久视频| 成人免费网站在线看| av理论在线观看| 欧美v国产在线一区二区三区| 久久久久99精品| 91女神在线视频| 日本精品久久久久中文字幕| 不卡日本视频| 91在线观看免费| 福利小视频在线| 亚洲男人天堂2023| 中国女人一级一次看片| 亚洲欧美偷拍三级| 久久免费精品国产| 久久久成人网| 一区二区三区四区欧美日韩| 欧美一区在线观看视频| 欧美性视频精品| 国产精品久久无码一三区| 亚洲毛片av在线| zjzjzjzjzj亚洲女人| 蜜桃伊人久久| 中国一区二区三区| 豆花视频一区二区| 国产精品久久久久久久久影视| 成人在线app| 亚洲国产精品va在线看黑人动漫| japanese国产在线观看| 亚洲精品日日夜夜| 日韩精品电影一区二区| 韩国午夜理伦三级不卡影院| 日韩a级在线观看| 精品国产一区二区三区小蝌蚪| 91沈先生在线观看| 日本不卡1234视频| 日韩精品一区二区三区swag| 国产婷婷色一区二区在线观看| 中文字幕日韩精品一区 | 一区精品在线观看| 亚洲在线视频网站| 老头老太做爰xxx视频| 国产成人一区二区精品非洲| 人人干人人视频| 亚洲人成久久| 91免费网站视频| 国产真实有声精品录音| 国产日韩一区欧美| 国产精品麻豆| 国产精品99久久99久久久二8| 欧美黑人猛交| 久久久国产精品亚洲一区| 头脑特工队2免费完整版在线观看| 欧美疯狂性受xxxxx喷水图片| 亚洲永久精品在线观看| 一区二区三区.www| 国产又粗又猛又爽又黄的视频四季| 99国产麻豆精品| 91精品人妻一区二区三区四区| 人妖欧美一区二区| www黄色av| 亚洲狠狠婷婷| 日韩一级免费看| 999精品一区| 亚洲黄色一区二区三区| 神马影视一区二区| 精品999在线观看| 无码国模国产在线观看| 成人av色在线观看| 韩日一区二区| 国产高清在线不卡| 亚洲淫成人影院| 午夜伦理精品一区| 欧美xxxx性xxxxx高清| 色哟哟网站入口亚洲精品| 91亚洲精品国偷拍自产在线观看 | 亚洲国产岛国毛片在线| 30一40一50老女人毛片| 99热在这里有精品免费| ass极品水嫩小美女ass| 国产乱子伦一区二区三区国色天香 | 精品伦精品一区二区三区视频密桃 | 伊人久久综合| 欧美精品在欧美一区二区| 天天做天天爱天天综合网2021| 色女人综合av| 99久久久国产| 成人免费网视频| 高清不卡一区| 91传媒视频在线观看| 精品中文在线| 超碰97在线人人| 成人影院中文字幕| 国产区二精品视| 狼人精品一区二区三区在线| 精品国产免费久久久久久尖叫| 久久97精品| 蜜桃999成人看片在线观看| 亚洲高清极品| 欧美日韩一区二区视频在线观看| 国产成人ay| 午夜啪啪免费视频| 欧美区一区二| 日本一区精品| 日本精品三区| 青青草影院在线观看| 欧美日韩国产精品一区二区亚洲| 隔壁人妻偷人bd中字| 99国产精品久久久久久久| 91免费视频网站在线观看| 视频一区二区不卡| 成人黄色一级大片| 国产大片一区二区| 亚洲中文字幕无码av| 久久久av毛片精品| 一区二区三区影视| 亚洲国产日产av| 国产精品乱码一区二区视频| 欧美日韩高清一区二区不卡| 午夜精品久久久久久久99老熟妇| 亚洲国产一区自拍| 国产ts变态重口人妖hd| 精品国产乱码久久久久久老虎| 你懂的视频在线播放| 日韩一区视频在线| 麻豆国产在线| 成人av在线天堂| 日韩欧美中文字幕电影| 亚洲一二三区精品| 亚洲精品护士| 中文字幕22页| 91污在线观看| 天天操天天摸天天舔| 亚洲综合偷拍欧美一区色| 日产精品久久久| 五月综合激情网| 中文字幕视频一区二区| 亚洲精品一区二区三区在线观看| 国产福利小视频在线| 亚洲欧美日韩中文在线制服| 欧美性天天影视| 538国产精品一区二区免费视频| 成人在线不卡| 精品在线视频一区二区三区| 天天揉久久久久亚洲精品| 亚洲美免无码中文字幕在线| 久99久精品视频免费观看| 午夜剧场免费看| 亚洲色图一区二区三区| 天堂网视频在线| 亚洲成人黄色网| 欧美成人高清在线| 人体精品一二三区| 第四色在线一区二区| 制服国产精品| 免费的国产精品| 超碰97在线资源站| 一个色在线综合| 亚洲天堂网在线观看视频| 日韩久久精品电影| 美女日批视频在线观看| 91精品国产综合久久香蕉| 狠狠做深爱婷婷综合一区| 久久久久久久中文| 成人晚上爱看视频| 丰满少妇一区二区三区| 亚洲人成在线播放网站岛国| 最近中文字幕免费观看| 亚洲另类激情图| 高清毛片在线观看| 成人看片视频| 欧美精品入口| 手机在线观看日韩av| 国产精品国产精品国产专区不蜜| 日本黄色一级视频| 亚洲精品一区久久久久久| a'aaa级片在线观看| 成人av男人的天堂| 亚洲欧美文学| 91性高潮久久久久久久| 1024精品合集| 国产精品无码久久av| 久久精品成人欧美大片| 亚洲二区av| 日韩精品第1页| 国产美女主播视频一区| 免费看一级大片| 91麻豆精品国产91久久久久久| 免费大片黄在线观看视频网站| 国产欧美va欧美va香蕉在线| 日本一区二区三区视频| www.久久av.com| 亚洲视频免费观看| 精品人妻无码一区二区色欲产成人 | 91超碰在线电影| 欧美日韩一区二区国产| 性活交片大全免费看| 亚洲第一搞黄网站| 手机福利小视频在线播放| 欧美中文字幕视频| 日本不卡高清| av在线免费看片| 一区二区三区四区国产精品| 亚洲免费一级片| 欧美亚洲视频一区二区| 欧美色网址大全| 欧美视频亚洲图片| 亚洲国产视频网站| 色资源在线观看| 国产欧美一区二区三区视频| 欧美69wwwcom| 一级做a爰片毛片| 欧美日韩成人在线一区| 在线三级电影| 久久综合一区| 久久99精品久久只有精品| 免费在线黄色片| 精品亚洲aⅴ在线观看| 草民电影神马电影一区二区| 9色视频在线观看| 97久久精品人人爽人人爽蜜臀| wwwwww在线观看| 欧美激情精品久久久久久变态| 日本中文字幕在线一区| 亚洲高潮无码久久| gogogo免费视频观看亚洲一| 无码人妻精品一区二| 久久久国产精品视频| 欧美韩一区二区| 成人性生交免费看| 亚洲国产精品尤物yw在线观看| 国产精品一区在线看| 91国产丝袜在线放| 久久久水蜜桃av免费网站| 91香蕉视频在线播放| 日韩精品在线视频美女| 亚洲精品aa| 无码精品国产一区二区三区免费| 中文字幕综合网| 欧美日韩在线精品一区二区三区激情综| 国产主播喷水一区二区| 午夜亚洲性色视频| 久草视频免费在线播放|