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

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-client EP的注冊(cè)

系統(tǒng)
本篇給大家分析wms_server進(jìn)程后繼的啟動(dòng)步驟和注冊(cè)EP的流程,從DEFAULT_Initialize(ServiceImpl *impl) 函數(shù)入口開始。

[[409617]]

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

我們接著前文《Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-6-系統(tǒng)服務(wù)的啟動(dòng)》,繼續(xù)分析wms_server進(jìn)程后繼的啟動(dòng)步驟和注冊(cè)EP的流程,從DEFAULT_Initialize(ServiceImpl *impl) 函數(shù)入口開始。

從前文可以知道,wms_server進(jìn)程啟動(dòng)了三個(gè)service:Broadcast、WMS和IMS,Broadcast服務(wù)有一個(gè)feature:“Provider and subscriber”,另外兩個(gè)服務(wù),沒有feature。每個(gè)service都有自己的消息隊(duì)列,都會(huì)收到InitRequest消息,通過HandleInitRequest()函數(shù),service會(huì)帶著自己的feature跑一遍DEFAULT_Initialize(serviceImpl)函數(shù)。

  1. //foundation/distributedschedule/samgr_lite/samgr/source/service.c 

DEFAULT_Initialize()內(nèi),很明顯可以分為以下四步的:

針對(duì)service跑前兩步

  1. [4-1] impl->service->Initialize(impl->service, id) 

這一步會(huì)調(diào)用service自己生命周期的 Initialize() 函數(shù)來做初始化。

  1. [4-2] SAMGR_RegisterServiceApi(serviceName, NULL, &id, impl->defaultApi) 

這一步輕量系統(tǒng)執(zhí)行空函數(shù),沒有實(shí)際動(dòng)作;小型系統(tǒng)執(zhí)行remote_register.c 中定義的函數(shù),注意參數(shù)。

針對(duì)service所有的feature,for循環(huán)讓每個(gè)feature都執(zhí)行一遍[4-3]和[4-4]兩步,service沒有feature,就不用執(zhí)行這兩步:

  1. [4-3] feature->feature->OnInitialize(feature->feature, impl->service, id) 

這一步會(huì)調(diào)用feature自己生命周期的 OnInitialize() 函數(shù)來做初始化。

  1. [4-4] SAMGR_RegisterServiceApi(serviceName, featureName, &id, feature->iUnknown) 

這一步調(diào)用的API與第2步調(diào)用的是同一個(gè)API,但是注意參數(shù)的變化,特別是第四個(gè)參數(shù)。

  1. //foundation/distributedschedule/samgr_lite/samgr_client/source/remote_register.c 

我們?cè)敿?xì)看一下SAMGR_RegisterServiceApi()的工作,它內(nèi)部,也很明顯可以分為以下三步的:

  1. [3-1] InitializeRegistry() 

每一個(gè)進(jìn)程,都有一個(gè)全局的RemoteRegister g_remoteRegister,本進(jìn)程的所有services中,第一個(gè)跑到這里的service會(huì)去初始化這個(gè) g_remoteRegister,主要是創(chuàng)建互斥信號(hào)量、創(chuàng)建一個(gè)空的Vector clients、創(chuàng)建本進(jìn)程的通信終端endpoint。以后的service/feature再跑進(jìn)這一步時(shí),基本上都會(huì)因?yàn)橐呀?jīng)存在endpoint了而就此退出(特定條件下會(huì)清空本 g_remoteRegister,重新生成,這里先不管)。

我們先把關(guān)注的重點(diǎn)放在創(chuàng)建 EP上。

  1. //foundation/distributedschedule/samgr_lite/samgr_endpoint/source/endpoint.c 

所有進(jìn)程都會(huì)通過SAMGR_CreateEndpoint("ipc client", NULL) 創(chuàng)建一個(gè)名為"ipc client"的EP,只有管理者會(huì)創(chuàng)建名為"samgr"的EP,這個(gè)后面講。

SAMGR_CreateEndpoint()內(nèi)會(huì)初始化如下一些參數(shù)(沒列出來的先略去):

  1. endpoint->context = OpenLiteIpc(LITEIPC_DEFAULT_MAP_SIZE);   
  2.  
  3.  endpoint->boss   = NULL
  4.  
  5.  endpoint->routers = VECTOR_Make((VECTOR_Key)GetIServerProxy, (VECTOR_Compare)CompareIServerProxy); 
  6.  
  7.  endpoint->name  = name;  
  8.  
  9.  endpoint->identity.handle = (uint32_t)INVALID_INDEX; 
  10.  
  11.  endpoint->identity.token  = (uint32_t)INVALID_INDEX;    
  12.  
  13.  endpoint->identity.cookie = (uint32_t)INVALID_INDEX; 
  14.  
  15.  endpoint->registerEP = RegisterRemoteEndpoint; 

context = OpenLiteIpc() 打開本進(jìn)程這一端的IPC通信通道,獲取上下文,相當(dāng)于拿到了開啟通道一端大門的鑰匙,要能夠進(jìn)行IPC通信,需要另一端的大門也打開才行。

boss:本EP的專用于IPC通信的線程的handle,還沒創(chuàng)建線程,目前是NULL;

endpoint->routers:這里先創(chuàng)建一個(gè)空的向量,配置向量的key和compare函數(shù)。本進(jìn)程內(nèi)所有的service/feature中,符合條件的service/feature才能添加到這個(gè)向量中,成為這個(gè)routers Vector中的一個(gè)element,也就是內(nèi)部的通信節(jié)點(diǎn),這樣才能對(duì)外部進(jìn)程提供服務(wù)和接口。在具體的IPC通信時(shí),會(huì)通過下面的endpoint->identity.token來確認(rèn)是哪個(gè)element提供服務(wù)。

name: 就是"ipc client"字符串,作用不大;

endpoint->identity.handle:是本EP向管理者注冊(cè)自己后,管理者為本EP返回的一個(gè)handle,非常重要,目前還沒有向管理者注冊(cè)自己,所以是INVALID_INDEX,這個(gè)INVALID_INDEX是特定的值[5],為什么是5,后面再講。

endpoint->identity.token:具體的IPC通信中才會(huì)用到,用來標(biāo)記本次IPC通信中,需要endpoint->routers 向量中的具體哪個(gè)element提供服務(wù)或接口。

endpoint->registerEP:是函數(shù)指針,指向本EP向管理者注冊(cè)自己的函數(shù),因?yàn)槭?quot;ipc client" EP,所以注冊(cè)函數(shù)是RegisterRemoteEndpoint(),要是"samgr" EP,注冊(cè)函數(shù)就會(huì)是RegisterSamgrEndpoint()。

  1. [3-2] SAMGR_AddRouter(g_remoteRegister.endpoint, &saName, identity, iUnknown) 

在上一步創(chuàng)建好的EP內(nèi),把“符合條件”的service和/或feature作為本EP內(nèi)部的一個(gè)通信節(jié)點(diǎn)(router)添加到endpoint->routers向量里面去,進(jìn)行管理。

“符合條件”的條件,有幾個(gè),關(guān)鍵的兩個(gè)如下:

條件1:IUnknown *proxy 不能為NULL

service/feature對(duì)外提供的接口不能為空,為空也就意味著外部進(jìn)程沒法使用service/feature提供的服務(wù)了,也就沒必要加到endpoint->routers向量里去了。

這個(gè)條件可以過濾掉很多service,比如Broadcast服務(wù),它在Init時(shí),只通過RegisterService()注冊(cè)了服務(wù),并沒有注冊(cè)defaultApi,并且它自己也是有feature的,所以它的serviceImpl->defaultApi是NULL:

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

而向WMS服務(wù)(IMS服務(wù)也如此),在Init時(shí)注冊(cè)了default feature API,同時(shí)它自己也沒有feature,所以它的serviceImpl->defaultApi不是NULL,而是指向了WMSService 結(jié)構(gòu)體內(nèi)部的IUnknown接口對(duì)象,以此向外部進(jìn)程提供功能。

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

條件2:SERVER_PROXY_VER 要匹配 0x80

上一個(gè)條件的defaultApi不為NULL,指向了service/feature結(jié)構(gòu)體內(nèi)部的IUnknown接口對(duì)象,而這個(gè)接口對(duì)象的版本ver,要滿足條件(匹配SERVER_PROXY_VER,即0x80),才能將其添加到endpoint->routers向量里,去對(duì)外部進(jìn)程提供服務(wù)。

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

都滿足條件了,還要在endpoint->routers向量里先查找一下,確認(rèn)當(dāng)前接口proxy是否已經(jīng)在向量表里了,已經(jīng)在了的話,就不能重復(fù)添加。

當(dāng)前接口proxy沒在向量表里,那就可以創(chuàng)建一個(gè)router對(duì)象,將提供proxy接口的service/feature、identity、serverProxy等相關(guān)信息配置好,將router對(duì)象(指針)添加到endpoint->routers向量里。

添加router成功后,會(huì)調(diào)用 Listen(endpoint):

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

第一句,boss 不為NULL 就return掉,意味著,第一個(gè)添加到endpoint->routers向量里的router添加成功后,就進(jìn)來創(chuàng)建boss線程,專門用于本進(jìn)程的對(duì)外IPC通信,后面再添加router成功時(shí),因?yàn)閎oss線程已經(jīng)在對(duì)外IPC通信了,所以不需要重復(fù)創(chuàng)建boss線程。

創(chuàng)建的boss線程,跑Receive()入口,具體做什么事情,我們稍后再講。

  1. [3-3] SAMGR_ProcPolicy(g_remoteRegister.endpoint, &saName, token) 

能跑到這一步來,也是要首先滿足兩個(gè)條件:

1. 上一步的router成功添加到endpoint->routers向量里,拿到了有效的token,這個(gè)token就是router在向量的位置,也就是endpoint->routers->data[token]是一個(gè)指針,指向添加成功的router;

2. 本進(jìn)程的g_remoteRegister.endpoint->running 標(biāo)記要為TRUE,這意味著管理者那端的IPC通道也打開了,本進(jìn)程EP已經(jīng)完成了向管理者注冊(cè),拿到了本EP中SvcIdentity identity關(guān)鍵的handle,本進(jìn)程可以開始對(duì)外提供服務(wù)了。

兩個(gè)條件都滿足后,這里就是要向管理者注冊(cè)feature并且獲取這個(gè)feature的訪問權(quán)限策略信息,并保存在router的policyNum/policy 字段內(nèi)。看上去這個(gè)函數(shù)的作用與RegisterRemoteFeatures()的作用差不多。

接下來,我們看一下boss線程的Receive()入口函數(shù),都做了些什么事情。我把它分成4個(gè)階段來理解:

[4-1] 第一階段,向管理者知名EP注冊(cè)本EP,獲取本EP的身份信息中的handle。這步需要管理者g_server跑起來,知名EP打開IPC通道,這里才能通過IPC注冊(cè)本EP,在知名EP還沒跑起來之前,本進(jìn)程EP的這一階段會(huì)跑如下的循環(huán):

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

registerEP是上面創(chuàng)建EP時(shí)配置的EP注冊(cè)函數(shù),對(duì)"ipc client" EP,注冊(cè)函數(shù)是RegisterRemoteEndpoint()。

進(jìn)入RegisterRemoteEndpoint()里面看一下,又是一個(gè)while循環(huán),循環(huán)內(nèi)會(huì)發(fā)送IPC信息,向知名EP samgr注冊(cè)本EP,知名EP的信息直接硬編碼寫成:

  1. SvcIdentity samgr = {SAMGR_HANDLE, SAMGR_TOKEN, SAMGR_COOKIE}; //{0, 0, 0} 

這就是所謂的“知名”了。

這個(gè)內(nèi)部循環(huán),注冊(cè)成功就拿到了SvcIdentity *identity中的handle,注冊(cè)不成功(主要原因是知名EP還沒開始工作),就會(huì)sleep(5s)再重新嘗試。

內(nèi)外兩層循環(huán)合在一起,相當(dāng)于在60s內(nèi)嘗試注冊(cè)9次,正常情況下只要知名EP跑起來了,就肯定能注冊(cè)成功的。

注冊(cè)成功,或者一分鐘內(nèi)注冊(cè)不成功,就會(huì)進(jìn)入下面的第二階段。

[4-2] 第二階段,注冊(cè)成功,就拿到了知名EP返回來的SvcIdentity identity.handle。

一分鐘內(nèi)注冊(cè)不成功,直接就exit (-ret),意味著本進(jìn)程要退出了,它的父進(jìn)程(用戶態(tài)根進(jìn)程)Init應(yīng)該就會(huì)收到SIGTERM或SIGCHLD信號(hào),Init進(jìn)程根據(jù) /etc/init.cfg 的配置,來決定是重啟單個(gè)進(jìn)程,還是重啟整個(gè)系統(tǒng),后面的事情就另說了。

[4-3] 第三階段,注冊(cè)成功,就可以繼續(xù)往下跑了,EP的狀態(tài)endpoint->running = TRUE; 標(biāo)記置起來。

因?yàn)橹鸈P也會(huì)跑Receive() 的這些流程,但知名EP不需要跑[4-3]的RegisterRemoteFeatures(endpoint) 這一步,所以通過[4-1]獲取的endpoint->identity.handle來判斷是否是知名EP的handle,是知名EP的話,就跳過,不是的話,就調(diào)用RegisterRemoteFeatures(endpoint)來把本EP的features(也就是本EP的routers向量中的所有element)全部注冊(cè)到知名EP里去。

注冊(cè)的過程也比較簡(jiǎn)單,就是遍歷EP->routers向量,把router在向量中的位置序號(hào)填寫到SvcIdentity identity.token,本EP的handle填寫到SvcIdentity identity.handle,連同本router的其它相關(guān)信息一并,通過IPC消息發(fā)給知名EP,并且由知名EP返回注冊(cè)成功和訪問權(quán)限策略信息,再次填寫回本EP對(duì)應(yīng)的router里。

[4-4] 第四階段,接下來就StartLoop(),本EP的boss線程進(jìn)入監(jiān)聽I(yíng)PC通信消息的狀態(tài),如果別的進(jìn)程有IPC消息發(fā)送到本EP的handle,boss線程就可以監(jiān)聽到,然后調(diào)用Dispatch()函數(shù)來處理該消息。

到這里為止,系統(tǒng)服務(wù)的啟動(dòng)和注冊(cè)就完成了,我們通過log來確認(rèn)一遍上述過程。

附件log是系統(tǒng)用戶態(tài)進(jìn)程啟動(dòng)到系統(tǒng)穩(wěn)定的log,開始是shell/apphilogcat先啟動(dòng),接著是bundle_daemon/sa_server/sensor_service這三個(gè)依賴關(guān)系相對(duì)簡(jiǎn)單的服務(wù)啟動(dòng),它們的啟動(dòng)流程也會(huì)完全符合上面的幾個(gè)步驟的,但我們還是接著前文,繼續(xù)往下分析wms_server進(jìn)程的啟動(dòng)。

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

上圖是wms_server進(jìn)程依賴的service/feature的Init,以及main函數(shù)的[5-1]這步。接著我們跳過一大段media_server的啟動(dòng)log。

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

上圖是wms_server進(jìn)程啟動(dòng)的[5-2]/[5-3]給service創(chuàng)建線程和消息隊(duì)列,開始監(jiān)聽進(jìn)程內(nèi)部的多線程通信,這些都是前文解釋過了的。

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

上圖開始進(jìn)入broadcast 服務(wù)的DEFAULT_Initialize()的流程,很明顯可以看出對(duì)應(yīng)著上面分析的四個(gè)步驟。

但是SAMGR_RegisterServiceApi()內(nèi)的三個(gè)步驟,只跑了前兩步,因?yàn)閟ervice和feature的SAMGR_AddRouter()這一步都是NG了,沒有router添加成功,自然就不跑第三步了,也就是說本進(jìn)程中,broadcast service和feature,不對(duì)外部進(jìn)程提供服務(wù)和接口。跑完這里,我打印出了當(dāng)前進(jìn)程的g_remoteRegister(注意{}內(nèi)的地址,不同進(jìn)程的g_remoteRegister的地址是不一樣的)全局變量的信息,見 DbgParse_g_remote{0x225922c8},可見還是和初始化狀態(tài)一樣的。

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

上圖開始進(jìn)入WMS服務(wù)的DEFAULT_Initialize()的流程,很明顯可以看出對(duì)應(yīng)著上面分析的前兩個(gè)步驟,因?yàn)?ldquo;RegFeatureApi(NO Feature)”,所以就沒有后面兩步了。

因?yàn)閐efaultApi不為NULL,并且QueryInterface的結(jié)果(版本匹配)也是OK的,所以SAMGR_AddRouter OK,第一個(gè)router被添加到了EP里面,所以開始Listen的流程。

為當(dāng)前EP{0x2247cd00}創(chuàng)建專門用于對(duì)外IPC通信的boss監(jiān)聽線程,并開始執(zhí)行Receive()入口函數(shù)的[4-1],開始兩層循環(huán)嘗試向知名EP注冊(cè)本EP,但是由于知名EP還沒有啟動(dòng),所以會(huì)得到:

  1. “[ERR][hm_liteipc] LiteIpcIoctl(IPC_SEND_RECV_MSG) ServiceManager not set!” 

這個(gè)時(shí)候的EP狀態(tài)如下:

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

有了一個(gè)router,但是handle還是 -1,需要等待,一直等到非常后面,如下圖,才會(huì)繼續(xù)執(zhí)行[4-2]/[4-3],注冊(cè)EP成功并拿到handle為16,然后執(zhí)行[4-4]StartLoop:

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)
Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

上圖是IMS服務(wù)的DEFAULT_Initialize()的流程,與WMS的類似,也可以看出因?yàn)闆]有feature,只跑了前兩個(gè)步驟。因?yàn)楸綞P已經(jīng)有boss線程在跑了,所以這里直接Listen boss線程就可以返回了。

此時(shí)的EP狀態(tài)如下圖,兩個(gè)router可以對(duì)外提供服務(wù),handle需要等待注冊(cè)EP成功才會(huì)拿到 16 這個(gè)值。

Hi3516的SAMGR--系統(tǒng)服務(wù)框架子系統(tǒng)-8-client EP的注冊(cè)-鴻蒙HarmonyOS技術(shù)社區(qū)

接著就是下面的兩步,

  1. [wms.cpp] main[5-4]: GetInstance()->Run() 
  2.  
  3. [wms.cpp] main[5-5]: while(1) 

等EP拿到handle后,進(jìn)程wms_server就可以順利對(duì)外提供服務(wù)了。

想了解更多內(nèi)容,請(qǐng)?jiān)L問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-07-08 16:16:59

鴻蒙HarmonyOS應(yīng)用

2021-07-05 09:35:36

鴻蒙HarmonyOS應(yīng)用

2021-07-12 09:50:39

鴻蒙HarmonyOS應(yīng)用

2021-06-10 09:25:39

鴻蒙HarmonyOS應(yīng)用

2021-06-03 14:21:44

鴻蒙HarmonyOS應(yīng)用

2021-06-18 10:02:10

鴻蒙HarmonyOS應(yīng)用

2021-06-18 15:23:59

鴻蒙HarmonyOS應(yīng)用

2022-04-15 14:45:49

Hi3516系統(tǒng)類型燒錄鴻蒙

2021-03-29 15:36:46

鴻蒙HarmonyOS應(yīng)用

2021-04-09 09:45:21

鴻蒙HarmonyOS應(yīng)用

2021-07-09 14:20:23

鴻蒙HarmonyOS應(yīng)用

2021-11-09 15:28:41

鴻蒙HarmonyOS應(yīng)用

2021-03-16 09:49:16

鴻蒙HarmonyOS應(yīng)用

2021-05-25 14:47:43

鴻蒙HarmonyOS應(yīng)用

2021-07-21 09:58:50

鴻蒙HarmonyOS應(yīng)用

2022-02-16 16:01:02

Hi3516開發(fā)板鴻蒙

2021-10-09 10:12:39

鴻蒙HarmonyOS應(yīng)用

2021-07-19 15:34:05

鴻蒙HarmonyOS應(yīng)用

2022-03-14 15:26:59

Hi3516Ark子系統(tǒng)鴻蒙

2021-12-03 09:50:39

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

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

久久电影网站中文字幕| 欧美绝顶高潮抽搐喷水合集| 亚洲欧洲国产日本综合| av一区二区三区免费| 国产午夜在线播放| 国产成人精品免费视| 56国语精品自产拍在线观看| 精品国产av无码一区二区三区| 免费黄网站在线观看| 国产麻豆9l精品三级站| 奇米四色中文综合久久| 校园春色 亚洲| 国模精品一区| 亚洲国产成人久久| 国产欧美精品一二三| 中文字幕资源网在线观看免费 | 色婷婷精品大视频在线蜜桃视频| 中文字幕日韩精品久久| 国产主播福利在线| www.日韩大片| 成人综合色站| 国产强伦人妻毛片| 日本aⅴ免费视频一区二区三区| 久久久久久国产免费| 三级黄色在线观看| 激情五月综合网| 日韩成人av一区| 永久看看免费大片| 在线免费成人| 欧美午夜片在线观看| 国模无码视频一区二区三区| 性欧美1819sex性高清大胸| 国产精品视频九色porn| 久久综合毛片| 四虎影视在线播放| 99国产精品久久久| 电影午夜精品一区二区三区| 国产毛片久久久久| 久久草av在线| 成人激情视频小说免费下载| 亚洲天堂2021av| 日韩二区三区四区| 国产精品成人免费电影| 亚洲 欧美 中文字幕| 母乳一区在线观看| 欧美一级电影在线| 亚洲GV成人无码久久精品| 伊人久久亚洲热| 欧美激情视频网站| 精品视频久久久久| 18成人免费观看视频| 欧美激情国产精品| 日韩精品视频免费看| 亚洲色诱最新| 欧美在线观看网站| 91av在线免费视频| 亚洲欧美久久| 国产精品99免视看9| 蜜臀尤物一区二区三区直播| 狂野欧美一区| 国产精品久久久一区| 中文字幕 自拍偷拍| 久久精品国产亚洲高清剧情介绍 | 欧美国产日韩在线| 国产无码精品在线播放| 一区二区动漫| 国产99久久精品一区二区永久免费| 男人天堂2024| 美女一区二区视频| 91香蕉电影院| 日韩在线观看视频一区| 久久欧美中文字幕| 亚洲欧美日韩精品在线| 国产区在线观看| 亚洲电影一级黄| wwwxxx黄色片| 在线视频成人| 日韩不卡中文字幕| 国产调教在线观看| 国产精品videosex极品| 欧美亚洲在线播放| 黄色大全在线观看| 国产精品123| 蜜桃成人免费视频| 毛片免费不卡| 天天爽夜夜爽夜夜爽精品视频| 国产免费成人在线| 九九久久国产| 亚洲精品在线观| 丁香花五月婷婷| 欧美三区美女| 国产精品国内视频| 性欧美8khd高清极品| 91香蕉视频黄| 香蕉精品视频在线| 345成人影院| 91精品国产综合久久香蕉的特点| www.日本高清| 图片小说视频色综合| 57pao国产精品一区| 亚洲一区二区视频在线播放| jizz一区二区| 中文字幕欧美日韩一区二区| 亚洲欧美小说色综合小说一区| 欧美一区在线视频| 欧洲美一区二区三区亚洲| 欧美国产91| 国产精品一区二区女厕厕| 亚洲乱码国产乱码精品精软件| 国产免费观看久久| 尤物av无码色av无码| 精品国产第一国产综合精品| 亚洲午夜未满十八勿入免费观看全集| 久久久精品视频在线| 美女网站在线免费欧美精品| 久久爱av电影| 青草av在线| 欧美一区二区三区四区在线观看| 欧美大波大乳巨大乳| 在线欧美不卡| av一区观看| 蜜桃av在线免费观看| 日本乱人伦一区| 日本黄色免费观看| 影音先锋一区| 97自拍视频| 国产精品一卡二卡三卡| 欧美视频在线观看一区二区| 丰满少妇在线观看资源站| 欧美午夜在线视频| 亚洲一区二区三区在线免费观看| 91这里只有精品| 在线精品视频一区二区| 亚洲精品理论片| 中文久久精品| 精品久久一区二区三区蜜桃| 久久青青色综合| 欧美xxxx在线观看| 亚洲色图综合区| 国产美女一区二区| 国产免费一区二区三区四在线播放| 综合在线影院| 在线视频国产日韩| 中文字幕在线日本| 久久久av毛片精品| 人人干人人视频| 精品久久久中文字幕| 国产精品电影网| 午夜视频在线看| 欧美剧情片在线观看| 日韩亚洲欧美中文字幕| 久久国产精品99精品国产| 亚洲成色www久久网站| 久久久久黄色| 久久综合久久美利坚合众国| 99产精品成人啪免费网站| 亚洲欧洲美洲综合色网| 欧美污在线观看| 今天的高清视频免费播放成人| 国产日韩一区欧美| 三上悠亚国产精品一区二区三区| 亚洲色图50p| 中文字幕1区2区3区| 国产精品久久午夜| 四虎国产精品免费| 在线精品亚洲| 日本精品国语自产拍在线观看| 成人mm视频在线观看| 美女999久久久精品视频| 亚洲av无码一区二区三区性色 | 中文综合在线观看| av免费在线不卡| 亚洲高清视频的网址| 91视频啊啊啊| 麻豆久久一区二区| 97中文字幕在线| 麻豆视频在线观看免费| 国产精品欧美精品| 天天综合成人网| 亚洲精品在线二区| 视频一区三区| 欧美不卡在线观看| 57pao成人国产永久免费| 在线免费观看黄色网址| 日韩一区二区精品在线观看| 亚洲天堂日韩av| 国产免费观看久久| 免费观看污网站| 日产国产高清一区二区三区| 天天爱天天做天天操| 特黄特色欧美大片| 91久久在线观看| 黑人巨大亚洲一区二区久 | av网址在线| 精品五月天久久| 国产熟女一区二区三区五月婷| 午夜精品福利一区二区三区av| 久久久久久久毛片| 成人性生交大片免费看视频在线| 三级a在线观看| 亚洲日本欧美| 老汉色影院首页| 久操国产精品| 国产伦精品一区二区三区| 日韩免费小视频| 国外色69视频在线观看| av在线中文| 日韩精品免费观看| 国产福利资源在线| 欧美日韩视频不卡| 日韩精品久久久久久免费| 亚洲精品免费电影| 99久久99久久精品免费看小说. | 国产亚洲自拍偷拍| 国产日本亚洲| 国产精品视频公开费视频| а√在线天堂官网| 九色精品免费永久在线| 五月天婷婷在线视频| 亚洲人成毛片在线播放| 隣の若妻さん波多野结衣| 欧美日韩国产电影| 成人午夜精品视频| 一本大道久久a久久综合婷婷| 国产精品suv一区二区| 亚洲伦理在线精品| 国产传媒免费在线观看| 欧美激情一区二区三区蜜桃视频| 美国黄色a级片| 99热国产精品| 亚洲天堂美女视频| 二区三区在线| 另类成人小视频在线| av动漫在线看| 伊人久久综合| 免费看欧美一级片| 激情综合中文娱乐网| 欧美国产视频一区| 国模吧视频一区| 久久福利一区二区| 亚洲国产精品91| 91大学生片黄在线观看| 亚洲一区二区三区| 国产日本欧美在线| 婷婷综合激情| 亚洲色婷婷久久精品av蜜桃| 亚洲xxx拳头交| 日韩人妻一区二区三区蜜桃视频| 一本一本久久a久久综合精品| 亚洲综合网中心| 天天射成人网| 成人在线观看毛片| 国产综合精品一区| www.日本在线播放| 免费国产自线拍一欧美视频| 国产午夜福利视频在线观看| 久久免费高清| 五月激情婷婷在线| 国产成人三级在线观看| 伦理片一区二区| 91免费看视频| eeuss中文字幕| 亚洲欧美日韩国产综合| 精品人妻在线播放| 色妹子一区二区| 亚洲一区中文字幕永久在线| 日韩一区二区三区免费看 | 精品亚洲国产视频| 岛国视频免费在线观看| www.久久色.com| 久久电影网站| 日本精品在线视频| 日韩三区四区| 国产精品成人观看视频免费| 亚洲精品进入| 精品国产无码在线| 一本久久综合| 91插插插插插插插插| 国产成人啪免费观看软件| 给我看免费高清在线观看| 国产精品素人一区二区| 欧美精品入口蜜桃| 日本道免费精品一区二区三区| 国产又色又爽又黄又免费| 欧美xxxx在线观看| 91大神xh98hx在线播放| 欧美激情2020午夜免费观看| 日本欧美一区| 国产福利不卡| 99久久婷婷国产综合精品电影√| cao在线观看| 国产精品xxxx喷水欧美| 亚洲成人资源网| 中文字幕一级片| 精品久久五月天| 北岛玲日韩精品一区二区三区| 久久国产视频网站| 国模视频一区| 国产精品一区二区a| 日本激情一区| 日韩av黄色网址| 国产在线一区观看| 国产高清一区二区三区四区| 亚洲自拍偷拍九九九| 在线观看不卡的av| 亚洲免费视频观看| 成人女同在线观看| 成人欧美一区二区三区黑人| 免费视频一区三区| 日韩av中文字幕第一页| 国产一区二区不卡老阿姨| 亚洲精品成人无码| 亚洲444eee在线观看| 国产伦精品一区二区三区免.费 | 国产高清视频在线播放| 高清欧美性猛交xxxx| 国产高清亚洲| 亚洲精品9999| 美女尤物久久精品| 草草地址线路①屁屁影院成人| 一区二区免费在线播放| 99久久精品国产一区色| 中文字幕亚洲自拍| 成人黄色免费短视频| 精品久久久久久中文字幕动漫| 欧美成人综合| 精品人妻一区二区乱码| 亚洲视频中文字幕| 在线观看免费中文字幕| 精品在线观看国产| 久热在线观看视频| 九九热久久66| 国产欧美高清| 一区二区三区少妇| 偷拍一区二区三区四区| 亚洲精品久久久久久无码色欲四季 | 蜜桃av噜噜一区二区三区| 国产欧美亚洲一区| 中文字幕精品视频在线| 精品人伦一区二区三区蜜桃网站| 欧美 中文字幕| 6080yy精品一区二区三区| 林ゆな中文字幕一区二区| 国产精品999视频| 久久人人超碰精品| 久久久精品视频网站| 国产亚洲视频中文字幕视频| 色豆豆成人网| 亚洲成人a**址| 激情综合色播激情啊| 欧美丰满熟妇bbbbbb| 日韩区在线观看| 久草在线视频网站| 精品久久久久久综合日本 | 国产97色在线|日韩| 成人3d精品动漫精品一二三| 尤物国产在线观看| 亚洲精品中文在线观看| 亚洲免费成人在线| 午夜精品福利电影| 国产精品一线天粉嫩av| 性生活免费在线观看| 亚洲精品欧美专区| 午夜激情在线视频| 国产精品久久久久久亚洲调教 | 国产网站一区二区三区| 夜夜爽8888| 久久免费少妇高潮久久精品99| 日韩a级大片| 污污视频网站免费观看| 国产精品不卡在线| 黄色一级a毛片| 国产成人精品一区二区| 亚洲91中文字幕无线码三区| 成人啪啪18免费游戏链接| 色婷婷激情综合| caopeng在线| 欧美12av| 国产在线播放一区| 天天操天天干视频| 色噜噜国产精品视频一区二区| 日韩影片在线观看| 成年人黄色片视频| 亚洲免费观看高清| 日本午夜在线视频| 91在线高清视频| 久久午夜av| 波多野结衣亚洲色图| 亚洲欧美综合精品久久成人| 日韩欧美中文字幕一区二区三区| 美女av免费在线观看| 亚洲视频1区2区| 男男电影完整版在线观看| 92国产精品久久久久首页 | 亚洲综合第一页| 玖玖精品视频| 日韩成人在线免费视频| 久久精品成人一区二区三区 | 国产婷婷成人久久av免费高清| 亚洲毛片在线免费|