亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? xdev_mxdev_mxdevice.c

?? MPI for java for Distributed Programming
?? C
?? 第 1 頁 / 共 3 頁
字號:
/** The MIT License 	Copyright (c) 2005 - 2007   1. Distributed Systems Group, University of Portsmouth (2005)   2. Aamir Shafi (2005 - 2007)   3. Bryan Carpenter (2005 - 2007)   4. Mark Baker (2005 - 2007)*/	#include "myriexpress.h"#include <stdio.h>#include "xdev_mxdev_MXDevice.h"#include "jni.h"#include "mxdev_const.h" //***********************************************************//** block diagram for the tag ..it is a 64 bit number     **//** <---16-----><------16------><--1--><--------31------->** //** ------------------------------------------------------**//** |  context  |     src      |  PRI  |      tag        |**//** ------------------------------------------------------**//***********************************************************static JavaVM *jvm;int myRank ;  int procs ;jclass   CL_mpjdev_Status ;jclass   CL_mpjbuf_Buffer;jclass   CL_xdev_mxdev_MXProcessID;jclass   CL_mpjbuf_NIOBuffer;jclass   CL_mpjbuf_Type;jclass   CL_xdev_ProcessID; jclass   CL_xdev_mxdev_MXRequest ; jfieldID FID_mpjbuf_Buffer_staticBuffer;jfieldID FID_mpjbuf_Buffer_dynamicBuffer;jfieldID FID_mpjbuf_Buffer_size;jfieldID FID_mpjbuf_Buffer_capacity;jfieldID FID_mpjbuf_NIOBuffer_buffer;jfieldID FID_mpjbuf_Type_code;jfieldID FID_xdev_ProcessID_uuid;jfieldID FID_xdev_mxdev_MXRequest_status ; jfieldID FID_xdev_mxdev_MXRequest_requestStruct ; jfieldID processhandleID; jfieldID processidID; jfieldID status_src_ID ; jfieldID status_tag_ID ;jfieldID countInBytesID;/* Caching of JNI stuff ..*/jint JNI_OnLoad(JavaVM *vm, void *reserved) {  JNIEnv *env;          jvm=vm;   if (JNI_OK!=(*vm)->GetEnv(vm,(void **)&env,JNI_VERSION_1_4)) {    exit(1);  }  // why am i not deleting these two global references ... (?)  CL_mpjbuf_Buffer =  (*env)->NewGlobalRef(env, 		  (*env)->FindClass(env,"mpjbuf/Buffer"));  CL_xdev_mxdev_MXProcessID =  (*env)->NewGlobalRef(env, 		  (*env)->FindClass(env,"xdev/mxdev/MXProcessID"));  CL_xdev_mxdev_MXRequest = (*env)->FindClass(env,"xdev/mxdev/MXRequest");  CL_mpjbuf_NIOBuffer =  (*env)->NewGlobalRef(env, 		  (*env)->FindClass(env,"mpjbuf/NIOBuffer"));  CL_mpjbuf_Type = (*env)->FindClass(env,"mpjbuf/Type");  CL_xdev_ProcessID = (*env)->FindClass(env,"xdev/ProcessID");  CL_mpjdev_Status = (*env)->FindClass(env,"mpjdev/Status");  FID_mpjbuf_Buffer_size = (*env)->GetFieldID(env,CL_mpjbuf_Buffer,"size","I");  FID_mpjbuf_Buffer_capacity = 	  (*env)->GetFieldID(env,CL_mpjbuf_Buffer,"capacity","I");  FID_mpjbuf_Buffer_staticBuffer =    (*env)->GetFieldID(env,CL_mpjbuf_Buffer,"staticBuffer","Lmpjbuf/RawBuffer;");  FID_mpjbuf_Buffer_dynamicBuffer =     (*env)->GetFieldID(env,CL_mpjbuf_Buffer,"dynamicBuffer","[B");  FID_mpjbuf_NIOBuffer_buffer =    (*env)->GetFieldID(env,CL_mpjbuf_NIOBuffer,"buffer","Ljava/nio/ByteBuffer;");  FID_mpjbuf_Type_code = (*env)->GetFieldID(env,CL_mpjbuf_Type,"code","I");  FID_xdev_ProcessID_uuid =      (*env)->GetFieldID(env,CL_xdev_ProcessID,"uuid","Ljava/util/UUID;");  processhandleID =     (*env)->GetFieldID(env, CL_xdev_mxdev_MXProcessID,"processHandle", "J") ;  processidID = (*env)->GetFieldID(env, CL_xdev_mxdev_MXProcessID, 		    "id", "I");  status_src_ID = (*env)->GetFieldID(env, CL_mpjdev_Status, 		    "source", "I");  status_tag_ID = (*env)->GetFieldID(env, CL_mpjdev_Status, 		    "tag", "I");  countInBytesID = (*env)->GetFieldID(env, CL_mpjdev_Status, 		    "countInBytes", "I");  FID_xdev_mxdev_MXRequest_status = (*env)->GetFieldID(env, 		  CL_xdev_mxdev_MXRequest,"status","Lmpjdev/Status;");   FID_xdev_mxdev_MXRequest_requestStruct = (*env)->GetFieldID(env, 		  CL_xdev_mxdev_MXRequest,"requestStruct","J");     if (FID_mpjbuf_Buffer_staticBuffer && FID_mpjbuf_Buffer_size \      && FID_mpjbuf_NIOBuffer_buffer && FID_mpjbuf_Buffer_capacity \      && FID_xdev_ProcessID_uuid) {    return JNI_VERSION_1_4;   } else {    {fprintf(stderr,"\n Fatal error getting FIDs"); exit(3);}  }}/* Caching of JNI stuff (done)..*/mx_endpoint_t local_endpoint; uint32_t filter = 0xcafebabe; //extern mx_endpoint_t local_endpoint;static mx_endpoint_addr_t * peer_endpoints = NULL;   /* * Class:     xdev_mxdev_MXDevice * Method:    nativeInit * Signature: ([Ljava/lang/String;I[Ljava/lang/String;[II[Lxdev/mxdev/MXProcessID;JJ)V */JNIEXPORT void JNICALL Java_xdev_mxdev_MXDevice_nativeInit  (JNIEnv *env, jobject jthis, jobjectArray argv, jint rank,     jobjectArray processNames, jintArray ranks, jint nprocs,      jobjectArray pids , jlong msb, jlong lsb) {  mx_return_t rc;  rc = mx_init();  mx_set_error_handler( MX_ERRORS_RETURN );  if(rc == MX_SUCCESS) {    //printf("mx_init called \n");  }  rc = mx_open_endpoint(MX_ANY_NIC, MX_ANY_ENDPOINT, filter, 0, 0,                       &local_endpoint);    //printf(" nic id upper <%d> \n", MX_U32(nic_id));    //printf(" nic id lower <%d> \n", MX_L32(nic_id));  if(rc == MX_SUCCESS) {     //printf("opened a local end-point \n");   }  //sleep(5);   jclass CL_java_util_UUID = (*env)->FindClass(env, "java/util/UUID");  jmethodID uuid_c =  (*env)->GetMethodID(env, CL_java_util_UUID,  		       "<init>", "(JJ)V") ;   jmethodID pid_c =  (*env)->GetMethodID(env, CL_xdev_mxdev_MXProcessID,  		       "<init>", "(Ljava/util/UUID;)V") ;   myRank = rank ;   procs = nprocs ;  peer_endpoints = (mx_endpoint_addr_t *)  	  malloc(procs*sizeof(mx_endpoint_addr_t));   //.. .. 	  uint64_t nic_id;  //printf("native init method \n"); 	      jobject pid;  int len = (*env)->GetArrayLength(env,processNames);  char** pNames = (char**)calloc(len, sizeof(char*));  int i=0;  char *pName;    for (i=0; i<len; i++) {     pName =(jstring)(*env)->GetObjectArrayElement(env,processNames,i);     pNames[i] = (*env)->GetStringUTFChars(env,pName,0);  }	  /* connect loop */   for(i=0 ; i<nprocs ; i++) {    //printf(" connecting to <%s> \n", pNames[i]);    rc = mx_hostname_to_nic_id( pNames[i] , &nic_id);    if(rc == MX_SUCCESS) {       //printf("getting nic_id from hostname \n");     }        NC:     //printf("calling connect() \n");     //printf(" nic id upper <%d> \n", MX_U32(nic_id));    //printf(" nic id lower <%d> \n", MX_L32(nic_id));    rc = mx_connect(local_endpoint, nic_id, 0, filter,   		  MX_INFINITE, &peer_endpoints [i]);    //printf("called connect() \n");    if(rc == MX_SUCCESS) {       //printf("connected to remote host <%s> \n", pNames[i]);    } else {      //printf("could not connect to <%s> \n", pNames[i]);       //printf("trying again ...");      goto NC; //need to get rid of this ..we just need a do while loop.     }      }  //fflush(stdout);  // ids set up could be done here ...  //printf("nativeIdsSetup rank <%d> of <%d> \n", myRank, procs); 	      // sending accessories  mx_segment_t buffer_desc[3];  mx_request_t send_handle[procs] ;  uint64_t send_tag ;  mx_status_t send_status ;  uint32_t result ;    // irecv accessories   mx_segment_t recv_buffer[3];  mx_request_t recv_handle ;  uint64_t match_tag;  uint64_t match_mask;  mx_status_t recv_status;  uint32_t recv_result;  buffer_desc[0].segment_ptr = &msb;   buffer_desc[0].segment_length = 64;   buffer_desc[1].segment_ptr = &lsb;   buffer_desc[1].segment_length = 64;    buffer_desc[2].segment_ptr = &rank;   buffer_desc[2].segment_length = 4;    //printf("rank <%d> \n",rank);   //this needs to be fixed ..basically use the tag macros once I have   //defined them ...  send_tag = myRank << 32; //| UINT64_C(0x0000000000000000);     for(i=0 ; i<procs ; i++) {    if( i == myRank) {       continue;     	        }     //printf("pro <%d> calling send to pro <%d> \n",     //		    myRank, i); fflush(stdout);    rc = mx_isend(local_endpoint, buffer_desc, 3, peer_endpoints[i], 		    send_tag, NULL, &send_handle[i]);     //if( rc == MX_SUCCESS ) {     //  printf("pro <%d> called isend to pro <%d> \n",     //	    myRank, i); fflush(stdout);    //}  }  //printf("pro <%d> reached A \n",myRank ); fflush(stdout);    jlong _msb, _lsb;   jint _rank ;   match_mask = UINT64_C(0x00000000ffffffff);     for(i=0 ; i<procs ; i++) {     if( i == myRank) {       continue;     	        }    recv_buffer[0].segment_ptr = &_msb;     recv_buffer[0].segment_length = 64;     recv_buffer[1].segment_ptr = &_lsb;     recv_buffer[1].segment_length = 64;      recv_buffer[2].segment_ptr = &_rank;     recv_buffer[2].segment_length = 4;          match_tag = i << 32 ;        //printf("pro <%d> receiving from process <%d> \n",     //		    myRank, i); fflush(stdout);    rc = mx_irecv(local_endpoint, recv_buffer, 3, match_tag, match_mask,		 NULL , &recv_handle);    //printf(" calling wait \n"); fflush(stdout);     rc = mx_wait(local_endpoint, & recv_handle, MX_INFINITE, 		  &recv_status, &result);    if(rc == MX_SUCCESS) {     //  printf("pro <%d> received from process <%d> \n",     //		    myRank, i); fflush(stdout);    }else {      printf("error \n");  	        }        jobject uid = (*env)->NewObject(env, CL_java_util_UUID, 	     uuid_c, _msb, _lsb);    pid = (*env)->NewObject(env, CL_xdev_mxdev_MXProcessID,  	     pid_c, uid);     (*env)->SetLongField(env,pid, processhandleID, (jlong)&peer_endpoints[i]);    (*env)->SetIntField(env,pid, processidID, _rank);    (*env)->SetObjectArrayElement(env,pids,i,pid);  }    //printf("process <%d> reached B \n",myRank ); fflush(stdout);  for(i=0 ; i<procs ; i++) {     if( i == myRank) {       continue;     	        }    //printf("pro <%d> calling send_wait to process <%d> \n",     //		    myRank, i); fflush(stdout);    mx_wait(local_endpoint, &send_handle[i], MX_INFINITE,     		  &recv_status, &recv_result);      //printf("pro <%d> called send_wait to process <%d> \n",     //		    myRank, i); fflush(stdout);  }  //a. <get objectarrayelement for this process>  pid = (*env)->GetObjectArrayElement(env,pids,myRank);  //b. <set long field for it ...>  (*env)->SetLongField(env,pid, processhandleID, 		       (jlong)&peer_endpoints[myRank]);  //c. <set integer field for it ...>  (*env)->SetIntField(env,pid, processidID, myRank);   //printf("process <%d> reached C \n",myRank ); fflush(stdout) ;}/* * Class:     xdev_mxdev_MXDevice * Method:    nativeSsend * Signature: (Lmpjbuf/Buffer;Lxdev/ProcessID;IIII)V */JNIEXPORT void JNICALL Java_xdev_mxdev_MXDevice_nativeSsend  (JNIEnv *env, jobject this, jobject buf, jobject dstID,    jint tag, jint context, jint sbuf_length, jint dbuf_length) {	    /* MX accessories for calling mx_isend */	    mx_return_t rc ;   mx_request_t send_handle;  mx_status_t status;  mx_segment_t buffer_desc[1];  uint64_t match_send, dbuf_tag ;     uint32_t result;  mx_endpoint_addr_t * dest;  dest = (mx_endpoint_addr_t *)     ((*env)->GetLongField(env, dstID, processhandleID )) ;    match_send = PRI_MATCH(context, myRank, tag);  //printf("send_recv U32 <%x> \n",MX_U32(match_send));fflush(stdout);  //printf("send_recv L32 <%x> \n",MX_L32(match_send));fflush(stdout);   /* static buffer related declarations */  char *buffer_address=NULL;  jobject staticBuffer;  jbyteArray directbuffer;  /* dynamic buffer related declarations */  jboolean isCopy=JNI_TRUE;  jbyteArray dynamicBuffer ;  jbyte* dBuffer;  /* get static buffer related stuff */  staticBuffer = 	  (*env)->GetObjectField(env,buf,FID_mpjbuf_Buffer_staticBuffer);  directbuffer =           (jbyteArray) (*env)->GetObjectField(env,                       staticBuffer, FID_mpjbuf_NIOBuffer_buffer);  buffer_address = (char *)(*env)->GetDirectBufferAddress(env,                            (jobject)directbuffer);  /* get dynamic buffer related stuff */  dynamicBuffer =     (jbyteArray) (*env)->GetObjectField(env,buf,                         FID_mpjbuf_Buffer_dynamicBuffer);  if(dbuf_length > 0) {    dBuffer = (*env)->GetByteArrayElements(env, dynamicBuffer, &isCopy);  }  //.. write the first eight bytes ..  //   _________________________  	    //   | E | X | X | X | DSIZE |  //   -------------------------  char encoding = 1;   buffer_address[0] = encoding ;  buffer_address[4] = (((unsigned int) dbuf_length) >> 24) & 0xFF ;   buffer_address[5] = (((unsigned int) dbuf_length) >> 16) & 0xFF;   buffer_address[6] = (((unsigned int) dbuf_length) >> 8) & 0xFF ;   buffer_address[7] = ((unsigned int) dbuf_length) & 0xFF; 	    /* compose message, sort out tag/context and remote endpoints */  buffer_desc[0].segment_ptr = buffer_address ;  buffer_desc[0].segment_length = sbuf_length+8; //+offset;  /* send message */  //printf("native:send sending \n");   rc = mx_issend(local_endpoint, buffer_desc, 1, * dest, match_send, 		  NULL, &send_handle);   //printf("native:send sent \n");   mx_segment_t dbuf_desc [1] ;  dbuf_tag = SEC_MATCH(context, myRank, tag);   mx_request_t dbufsend_handle;    dbuf_desc[0].segment_ptr = dBuffer ;   dbuf_desc[0].segment_length = dbuf_length;    if(dbuf_length > 0) {     rc = mx_issend(local_endpoint, dbuf_desc, 1, * dest, dbuf_tag, 		  NULL, &dbufsend_handle);   }  // so which one should be called here first?   rc = mx_wait(local_endpoint, &send_handle, MX_INFINITE, 		  &status, &result);    if(dbuf_length > 0) {     rc = mx_wait(local_endpoint, &dbufsend_handle, MX_INFINITE, 		  &status, &result);    }}/* * Class:     xdev_mxdev_MXDevice * Method:    nativeSend * Signature: (Lmpjbuf/Buffer;Lxdev/ProcessID;IIII)V */  JNIEXPORT void JNICALL Java_xdev_mxdev_MXDevice_nativeSend  (JNIEnv *env, jobject this, jobject buf, jobject dstID,    jint tag, jint context, jint sbuf_length, jint dbuf_length) {  //printf(" nativeSend first statement \n"); fflush(stdout);   /* MX accessories for calling mx_isend */	    mx_return_t rc ;   mx_request_t send_handle;  mx_status_t status;  mx_segment_t buffer_desc[1];  uint64_t match_send, dbuf_tag ;     uint32_t result;  mx_endpoint_addr_t * dest;  dest = (mx_endpoint_addr_t *)     ((*env)->GetLongField(env, dstID, processhandleID )) ;    match_send = PRI_MATCH(context, myRank, tag);  //printf("send_recv U32 <%x> \n",MX_U32(match_send));fflush(stdout);  //printf("send_recv L32 <%x> \n",MX_L32(match_send));fflush(stdout);   /* static buffer related declarations */  char *buffer_address=NULL;  jobject staticBuffer;  jbyteArray directbuffer;  /* dynamic buffer related declarations */  jboolean isCopy=JNI_TRUE;  jbyteArray dynamicBuffer ;  jbyte* dBuffer;  /* get static buffer related stuff */  staticBuffer = 	  (*env)->GetObjectField(env,buf,FID_mpjbuf_Buffer_staticBuffer);  directbuffer =           (jbyteArray) (*env)->GetObjectField(env,                       staticBuffer, FID_mpjbuf_NIOBuffer_buffer);  buffer_address = (char *)(*env)->GetDirectBufferAddress(env,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人福利片| 欧美军同video69gay| 欧美一区二区国产| 麻豆视频观看网址久久| 亚洲精品在线观看网站| 成人综合激情网| 亚洲激情男女视频| 91麻豆精品国产91久久久更新时间| 奇米四色…亚洲| 国产精品人成在线观看免费| 色狠狠桃花综合| 久久精品国产色蜜蜜麻豆| 中文字幕一区二区三区蜜月| 69av一区二区三区| 欧美一卡二卡在线观看| 日韩亚洲电影在线| 一本高清dvd不卡在线观看| 麻豆精品视频在线观看视频| 精品写真视频在线观看 | 亚洲午夜激情网站| 日韩免费一区二区三区在线播放| 91在线观看视频| 久久99这里只有精品| 福利视频网站一区二区三区| 久久精品国产99久久6| 国产在线看一区| 日韩国产高清影视| 亚洲色图欧洲色图婷婷| 国产欧美一区二区在线观看| 日韩欧美高清dvd碟片| 久久精品男人的天堂| 日韩一二三区视频| 久久午夜羞羞影院免费观看| 欧美一区二区三区视频在线观看| 久久久久久久久久久电影| 日韩亚洲欧美中文三级| 国产精品免费视频网站| 午夜久久久久久久久| 亚洲一区二区三区三| 一区二区视频在线| 中文子幕无线码一区tr| 久久综合色之久久综合| 亚洲激情网站免费观看| 国产精品1024久久| 欧美日韩精品欧美日韩精品 | 粉嫩蜜臀av国产精品网站| 欧美在线观看视频一区二区三区| 91在线精品一区二区三区| 成人高清伦理免费影院在线观看| 国产成人免费在线观看不卡| 欧美精品一卡两卡| 国产精品国产三级国产aⅴ中文| 国产日韩精品一区二区三区| 亚洲r级在线视频| 轻轻草成人在线| 欧美亚洲免费在线一区| 4438亚洲最大| 亚洲精品中文字幕乱码三区 | 国产精品久久久久久久久免费相片 | 久久er精品视频| 欧洲一区二区av| 中文字幕日韩av资源站| 国产不卡免费视频| 日韩精品一区二区三区swag| 天天综合天天做天天综合| 在线观看国产一区二区| 亚洲视频你懂的| 99精品视频在线免费观看| 久久久蜜桃精品| 国产米奇在线777精品观看| 国产不卡在线视频| 国产欧美中文在线| 丁香五精品蜜臀久久久久99网站| 欧美成va人片在线观看| 亚洲免费成人av| 精品一区二区久久| 精品久久国产字幕高潮| 激情欧美一区二区三区在线观看| 69av一区二区三区| 麻豆精品一区二区综合av| 精品欧美一区二区三区精品久久| 久久精品国产免费| 精品国产髙清在线看国产毛片| 久久99久久99精品免视看婷婷| 日韩午夜电影在线观看| 国产在线看一区| 国产精品乱子久久久久| av色综合久久天堂av综合| 日韩免费一区二区三区在线播放| 六月丁香婷婷久久| 久久久噜噜噜久噜久久综合| 成人性生交大合| 亚洲在线视频一区| 91精品在线麻豆| 国产一区二区三区精品视频| 欧美激情中文字幕| 在线看国产日韩| 青青草国产成人av片免费| 久久久三级国产网站| 91丨国产丨九色丨pron| 亚洲成av人片观看| 精品日韩在线观看| 972aa.com艺术欧美| 日韩av一区二区在线影视| 精品国偷自产国产一区| av亚洲精华国产精华精| 天天综合天天做天天综合| 国产午夜精品一区二区三区视频| 91一区二区在线| 蜜臀久久久久久久| 中文在线免费一区三区高中清不卡| 在线免费一区三区| 老司机午夜精品| 亚洲日本一区二区三区| 国产精品美女久久久久高潮| 欧美性感一区二区三区| 国产一区二区三区免费看| 亚洲国产另类精品专区| 久久精品综合网| 欧美午夜电影网| 粉嫩av亚洲一区二区图片| 丝袜美腿亚洲综合| 欧美日韩一级片网站| 亚洲bdsm女犯bdsm网站| 中文字幕电影一区| 91精品国模一区二区三区| 91麻豆国产福利在线观看| 国产日产欧产精品推荐色| 国产精品一二三区| **欧美大码日韩| 99精品久久免费看蜜臀剧情介绍| 欧美一区二区三区白人| 日韩理论片在线| 中文字幕精品—区二区四季| 国产在线精品不卡| 亚洲高清视频中文字幕| 国产日韩高清在线| 2023国产精品自拍| 久久久精品国产免大香伊| 精品在线视频一区| 亚洲欧洲精品一区二区三区| 成人一道本在线| 亚洲精品亚洲人成人网| 欧美一区二区在线观看| 日韩中文字幕1| voyeur盗摄精品| 国产欧美一区二区精品性色超碰 | av亚洲精华国产精华精华| 国产在线精品免费av| 国模大尺度一区二区三区| 国产精品日韩精品欧美在线| 精品视频一区三区九区| 日韩精品中文字幕一区二区三区| 中文字幕一区免费在线观看| 午夜国产精品影院在线观看| 国产女人水真多18毛片18精品视频| 免费观看成人av| 亚洲高清免费观看高清完整版在线观看| 成人免费一区二区三区视频| 国产精品国产自产拍在线| 国产乱子伦一区二区三区国色天香| 国产欧美视频一区二区三区| 久久九九99视频| 久久久不卡网国产精品一区| 久久久一区二区三区捆绑**| 欧美激情在线观看视频免费| 国产欧美日韩综合| 国产精品成人免费| 亚洲女同女同女同女同女同69| 亚洲另类春色校园小说| 亚洲主播在线播放| 日日摸夜夜添夜夜添国产精品| 日本亚洲天堂网| 国产一区二区三区久久悠悠色av| 国产在线麻豆精品观看| 成人av动漫网站| 一本色道亚洲精品aⅴ| 欧美日韩一级片在线观看| 日韩欧美一级在线播放| 国产欧美一区在线| 国产精品电影一区二区三区| 香蕉影视欧美成人| 精品一区二区在线免费观看| 丁香婷婷综合激情五月色| 91免费版pro下载短视频| 欧美三级电影网站| 精品久久久影院| 中文幕一区二区三区久久蜜桃| 伊人色综合久久天天| 奇米影视在线99精品| 国产成人精品1024| 欧美日韩亚洲综合在线 | 色综合久久88色综合天天6 | 26uuu久久综合| 1区2区3区国产精品| 日韩精品成人一区二区在线| 国产成人精品一区二区三区四区 | 久久国产精品99精品国产| 成人永久aaa| 91麻豆精品国产自产在线观看一区|