精品欧美一区二区三区在线观看 _久久久久国色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无码成人精品区| 久操av在线| 91毛片在线观看| 国产精品久久一| 天天干中文字幕| 全球av集中精品导航福利| 欧美影视一区二区三区| 日本一道在线观看| 欧美女v视频| 精品一区二区三区日韩| 欧美精品激情在线| 国产精成人品免费观看| 国产午夜亚洲精品一级在线| 亚洲大尺度视频在线观看| 欧美精品与人动性物交免费看| 精品国产www| 伊人精品在线| 色哟哟入口国产精品| а 天堂 在线| 亚洲欧洲自拍| 亚洲精品videosex极品| 欧美精品久久| 成人精品在线播放| 日韩av电影天堂| 韩国美女主播一区| 一区二区三区四区五区| 久久丝袜视频| 欧美浪妇xxxx高跟鞋交| 欧美牲交a欧美牲交aⅴ免费真 | 日韩在线伦理| 亚洲人一二三区| 日韩电影大全在线观看| 天天干天天爽天天操| 国产精品一区在线| 成人网在线视频| 日本免费在线观看视频| 最新日韩av| 欧美乱大交xxxxx另类电影| 成人午夜免费影院| 欧美丝袜激情| 亚洲精品98久久久久久中文字幕| 992tv人人草| 免费欧美电影| 色一情一乱一乱一91av| 少妇av一区二区三区无码| 欧美xxxx视频| 一区二区三区精品在线| 久久av喷吹av高潮av| av天在线观看| 国产精品午夜在线| 日韩欧美亚洲精品| 国产美女性感在线观看懂色av| 91性感美女视频| 久久国产精品一区二区三区四区| 国精产品乱码一区一区三区四区| 国产精品一二三| 亚洲aⅴ日韩av电影在线观看 | 精品国产乱码久久| 绯色av蜜臀vs少妇| 豆花视频一区二区| 日韩av中文在线| 欧美深性狂猛ⅹxxx深喉| 加勒比色综合久久久久久久久| 欧美精品一区二区在线播放 | 久久久一区二区三区| 久久久久一区二区| 免费在线稳定资源站| 国产日韩欧美精品在线| 日韩少妇中文字幕| 男人影院在线观看| 夜夜揉揉日日人人青青一国产精品| 国产午夜精品视频一区二区三区| 新版中文在线官网| 午夜久久久久久久久久一区二区| 婷婷五月综合缴情在线视频| 麻豆蜜桃在线观看| 欧洲视频一区二区| 午夜大片在线观看| 999在线精品| 亚洲成人a级网| 成年人免费观看视频网站| 精品国产aⅴ| 久久精品国产一区二区三区| 澳门黄色一级片| 99成人在线| 国产成人一区二区| 国产农村妇女毛片精品久久| av在线一区二区三区| 蜜桃视频在线观看91| 波多野结衣在线影院| 1区2区3区国产精品| 欧美人成在线观看| 韩国女主播一区二区| 欧美一级免费观看| 久久久久久国产精品无码| 天天av综合| 久久久久久久久爱| 国产精品尤物视频| 成人在线综合网站| 亚洲激情啪啪| 懂色av一区| 欧美三级电影在线观看| 亚洲女则毛耸耸bbw| 欧美日韩在线网站| 国内精品一区二区三区| 影音先锋国产资源| 97se亚洲国产综合自在线观| 伊人av成人| 是的av在线| 日韩一级在线观看| 婷婷色一区二区三区| 国内精品久久久久久久影视麻豆 | 国产午夜精品一区二区三区| 欧美日韩在线视频免费| 日韩精品亚洲一区| 99热在线播放| 欧美成人三区| 一本一道波多野结衣一区二区| 香蕉视频xxxx| 成人av资源电影网站| 性欧美xxxx| 国产黄色小视频在线观看| 国产欧美中文在线| www.中文字幕在线| 丁香婷婷成人| 欧美成人在线影院| 91 中文字幕| 国产女同互慰高潮91漫画| 极品美女扒开粉嫩小泬| 网站一区二区| 久久资源免费视频| 亚洲天堂免费av| 日本一区二区三级电影在线观看| 中文字幕无码精品亚洲35| jizz性欧美2| 欧美日韩第一页| 国产区精品在线| 国产精品国产三级国产普通话99| 999精品网站| 免费视频一区三区| 日本精品久久久久影院| 午夜福利视频一区二区| 亚洲午夜电影在线| 亚洲美女精品视频| 欧美福利电影在线观看| 亚洲va码欧洲m码| a黄色片在线观看| 欧美一区二区视频观看视频| 国产高潮流白浆| 久草在线在线精品观看| 中文字幕日韩一区二区三区不卡 | 在线精品视频免费播放| 美女脱光内衣内裤| 日本成人中文字幕| 亚洲精品在线免费看| 国精品产品一区| 日韩性xxxx爱| jizz中国少妇| 亚洲一区二区三区爽爽爽爽爽 | 国产性生活视频| 国产亚洲成年网址在线观看| www黄色在线| 欧美呦呦网站| 成人黄色av网| 久久av色综合| 日韩禁在线播放| 337p粉嫩色噜噜噜大肥臀| 国产精品毛片大码女人| www.桃色.com| 亚洲性感美女99在线| 欧美激情论坛| 四虎成人精品一区二区免费网站| 欧美成人午夜激情| 日韩一区二区三区不卡| 一本色道久久综合精品竹菊| 天天舔天天操天天干| 狠狠色狠狠色合久久伊人| 国产在线视频在线| 西野翔中文久久精品字幕| 国产精品久久9| 国产欧美久久久久久久久| 精品电影一区二区三区| 色av性av丰满av| 亚洲丝袜自拍清纯另类| 999精品免费视频| 日本aⅴ亚洲精品中文乱码| mm131午夜| 狼人精品一区二区三区在线| 热久久这里只有精品| 免费黄色在线| 日韩电影中文字幕av| 在线不卡免费视频| 亚洲va欧美va国产va天堂影院| 91网站免费入口| 国产一区二区视频在线| 日韩精品一区二区三区久久| 久久中文亚洲字幕| 精品国产乱码久久久久久108| 久久亚洲精品爱爱| 久久男人资源视频| av网站无病毒在线| 日韩禁在线播放| 国产绿帽刺激高潮对白| 色综合中文字幕| 久久久精品国产sm调教| 久久影院电视剧免费观看| 手机在线国产视频| 香蕉精品999视频一区二区| 欧美aaa在线观看| 国产a久久精品一区二区三区 | 欧美精品在线极品| 免费成人av电影| 日韩欧美国产综合| 中文字幕视频在线播放| 欧美午夜美女看片| 久久久国产精品人人片| 亚洲特级片在线| 国产在线观看h| 99精品桃花视频在线观看| 一区二区久久精品| 日本va欧美va欧美va精品| 欧美在线观看成人| 国产一区观看| 91免费网站视频| 区一区二视频| 欧美日韩在线不卡一区| 精品国产一区二区三区成人影院| 91久久综合亚洲鲁鲁五月天| 91p九色成人| 国产精品国产福利国产秒拍| 伊人久久综合一区二区| 高清一区二区三区四区五区| 日本aa在线| 爱福利视频一区| 一级毛片视频在线| 一区二区国产精品视频| 国产一区二区三区福利| 国产午夜精品久久久| 偷拍精品一区二区三区| 亚洲精品一区二区三区福利 | 免费看啪啪网站| 精品久久久亚洲| 日本免费高清一区| 任你躁在线精品免费| 国产一区二区三区色淫影院| 电影一区二区在线观看| 国产伦视频一区二区三区| 国产精品tv| 国产日韩一区二区| 欧美尿孔扩张虐视频| 久久福利电影| 国产一区二区三区天码| 色一情一乱一伦一区二区三区 | 亚洲精品资源在线| 日本视频在线观看一区二区三区 | 国产精品偷伦视频免费观看了| 国产在线一区二区| 韩国三级在线播放| 国产福利不卡视频| 稀缺小u女呦精品呦| 97国产精品videossex| 少妇精品无码一区二区免费视频 | 亚洲成人免费在线视频| 三级网站在线看| 日韩精品在线第一页| 黄色网址在线播放| 中文字幕自拍vr一区二区三区| 国产精品剧情一区二区在线观看| 欧美精品一本久久男人的天堂| 日本一级理论片在线大全| 2020国产精品视频| 成人mm视频在线观看| 亚洲va码欧洲m码| 欧美五码在线| 午夜精品电影在线观看| 亚洲综合色网| 国产av人人夜夜澡人人爽麻豆| 欧美亚洲一区| 亚洲一区精品视频在线观看| 国产电影一区二区三区| 亚洲天堂网一区二区| 中文字幕在线观看不卡视频| 免费在线视频观看| 色先锋久久av资源部| 国产99对白在线播放| 日韩国产精品亚洲а∨天堂免| 99中文字幕一区| 欧美高跟鞋交xxxxxhd| 日韩一级二级 | 亚洲高清精品视频| 亚洲欧美国产精品| av文字幕在线观看| 国产91成人video| 91视频亚洲| 美媛馆国产精品一区二区| 香蕉视频国产精品 | 三级av在线免费观看| 午夜精品一区二区三区免费视频| 天堂免费在线视频| 亚洲а∨天堂久久精品9966| 91社区在线| 91av在线免费观看视频| 疯狂欧洲av久久成人av电影| 欧洲亚洲一区二区| 黄色成人精品网站| 亚洲一级免费在线观看| 91在线porny国产在线看| 欧美精品久久久久久久久46p| 日本韩国欧美一区二区三区| 亚洲成人777777| 中文字幕亚洲在线| 在线观看v片| av色综合网| 偷拍欧美精品| 国产 porn| 2021中文字幕一区亚洲| 欧美精品色哟哟| 欧美日韩国产综合一区二区三区| 亚洲日本国产精品| 欧美精品videos另类日本| 亚洲资源在线| 亚洲高清乱码| 久久青草久久| 六十路息与子猛烈交尾| 亚洲综合丁香婷婷六月香| 国产精品毛片久久久久久久av| 亚洲视频自拍偷拍| 欧美gv在线| 国产欧美亚洲日本| 欧美性久久久| 免费人成视频在线播放| 国产精品第四页| 亚洲视频在线观看一区二区| 亚洲午夜小视频| 欧美黄色网页| 欧洲亚洲一区二区| 日韩精品午夜视频| 大吊一区二区三区| 欧美性感一区二区三区| jizz亚洲| 国产精品视频xxx| 日本大胆欧美| 亚洲另类第一页| 中文字幕久久午夜不卡| 波多野结衣在线电影| 在线观看日韩专区| 成人午夜毛片| 自拍另类欧美| 国产精品一区二区三区99| 欧美日韩一级大片| 精品久久人人做人人爰| xxxx视频在线| 久久久久久久免费| 久久夜色精品| 国产福利在线导航| 制服丝袜亚洲播放| 亚洲七七久久综合桃花剧情介绍| 91福利入口| 99视频一区| 中文字幕成人动漫| 欧美日韩高清在线播放| 国产午夜精品久久久久免费视| 亚洲影院污污.| 在线看片日韩| 美女被到爽高潮视频| 欧美私模裸体表演在线观看| 黄色网在线看| 成人av免费在线看| 国产精品人人爽人人做我的可爱| 深爱五月激情网| 欧美色综合网站| 99热国产在线中文| 精品国产乱码久久久久久108| 久久久xxx| 五月天色婷婷丁香| 欧美精品一区二区三区蜜桃| 成人直播视频| 一区二区视频在线播放| 风间由美一区二区三区在线观看| 青青操免费在线视频| 国产一区二区三区精品久久久 | 黄色国产在线播放| 欧美mv和日韩mv的网站| 在线免费三级电影网站| 一本久道久久综合| 成人av在线看| 探花国产精品一区二区| 色综合久久天天综线观看| 久久av免费| 91精产国品一二三| 91精品福利在线| 日本在线观看高清完整版| 天天爽天天狠久久久| 国产69精品久久久久毛片| 成年人视频免费| 久久久久久综合网天天| 成人6969www免费视频| 国产激情视频网站|