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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? api_msg.c

?? uCOSII2.84在at91sam9263的移植
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
       msg->conn->err = ERR_MEM;       break;     }     raw_recv(msg->conn->pcb.raw, recv_raw, msg->conn);     break;#endif /* LWIP_RAW */#if LWIP_UDP   case NETCONN_UDP:     msg->conn->pcb.udp = udp_new();     if(msg->conn->pcb.udp == NULL) {       msg->conn->err = ERR_MEM;       break;     }#if LWIP_UDPLITE     if (msg->conn->type==NETCONN_UDPLITE) {       udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_UDPLITE);     }#endif /* LWIP_UDPLITE */     if (msg->conn->type==NETCONN_UDPNOCHKSUM) {       udp_setflags(msg->conn->pcb.udp, UDP_FLAGS_NOCHKSUM);     }     udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);     break;#endif /* LWIP_UDP */#if LWIP_TCP   case NETCONN_TCP:     msg->conn->pcb.tcp = tcp_new();     if(msg->conn->pcb.tcp == NULL) {       msg->conn->err = ERR_MEM;       break;     }     setup_tcp(msg->conn);     break;#endif /* LWIP_TCP */   default:     /* Unsupported netconn type, e.g. protocol disabled */     msg->conn->err = ERR_VAL;     break;   }  return msg->conn->err;}/** * Create a new pcb of a specific type inside a netconn. * Called from netconn_new_with_proto_and_callback. * * @param msg the api_msg_msg describing the connection type */voiddo_newconn(struct api_msg_msg *msg){   if(msg->conn->pcb.tcp == NULL) {     pcb_new(msg);   }   /* Else? This "new" connection already has a PCB allocated. */   /* Is this an error condition? Should it be deleted? */   /* We currently just are happy and return. */   TCPIP_APIMSG_ACK(msg);}/** * Create a new netconn (of a specific type) that has a callback function. * The corresponding pcb is NOT created! * * @param t the type of 'connection' to create (@see enum netconn_type) * @param proto the IP protocol for RAW IP pcbs * @param callback a function to call on status changes (RX available, TX'ed) * @return a newly allocated struct netconn or *         NULL on memory error */struct netconn*netconn_alloc(enum netconn_type t, netconn_callback callback){  struct netconn *conn;  int size;  conn = memp_malloc(MEMP_NETCONN);  if (conn == NULL) {    return NULL;  }  conn->err = ERR_OK;  conn->type = t;  conn->pcb.tcp = NULL;#if (DEFAULT_RAW_RECVMBOX_SIZE == DEFAULT_UDP_RECVMBOX_SIZE) && \    (DEFAULT_RAW_RECVMBOX_SIZE == DEFAULT_TCP_RECVMBOX_SIZE)  size = DEFAULT_RAW_RECVMBOX_SIZE;#else  switch(NETCONNTYPE_GROUP(t)) {#if LWIP_RAW  case NETCONN_RAW:    size = DEFAULT_RAW_RECVMBOX_SIZE;    break;#endif /* LWIP_RAW */#if LWIP_UDP  case NETCONN_UDP:    size = DEFAULT_UDP_RECVMBOX_SIZE;    break;#endif /* LWIP_UDP */#if LWIP_TCP  case NETCONN_TCP:    size = DEFAULT_TCP_RECVMBOX_SIZE;    break;#endif /* LWIP_TCP */  default:    LWIP_ASSERT("netconn_alloc: undefined netconn_type", 0);    break;  }#endif  if ((conn->op_completed = sys_sem_new(0)) == SYS_SEM_NULL) {    memp_free(MEMP_NETCONN, conn);    return NULL;  }  if ((conn->recvmbox = sys_mbox_new(size)) == SYS_MBOX_NULL) {    sys_sem_free(conn->op_completed);    memp_free(MEMP_NETCONN, conn);    return NULL;  }  conn->acceptmbox   = SYS_MBOX_NULL;  conn->state        = NETCONN_NONE;  /* initialize socket to -1 since 0 is a valid socket */  conn->socket       = -1;  conn->callback     = callback;  conn->recv_avail   = 0;#if LWIP_SO_RCVTIMEO  conn->recv_timeout = 0;#endif /* LWIP_SO_RCVTIMEO */#if LWIP_SO_RCVBUF  conn->recv_bufsize = INT_MAX;#endif /* LWIP_SO_RCVBUF */  return conn;}/** * Delete a netconn and all its resources. * The pcb is NOT freed (since we might not be in the right thread context do this). * * @param conn the netconn to free */voidnetconn_free(struct netconn *conn){  void *mem;  LWIP_ASSERT("PCB must be deallocated outside this function", conn->pcb.tcp == NULL);  /* Drain the recvmbox. */  if (conn->recvmbox != SYS_MBOX_NULL) {    while (sys_mbox_tryfetch(conn->recvmbox, &mem) != SYS_MBOX_EMPTY) {      if (conn->type == NETCONN_TCP) {        if(mem != NULL) {          pbuf_free((struct pbuf *)mem);        }      } else {        netbuf_delete((struct netbuf *)mem);      }    }    sys_mbox_free(conn->recvmbox);    conn->recvmbox = SYS_MBOX_NULL;  }  /* Drain the acceptmbox. */  if (conn->acceptmbox != SYS_MBOX_NULL) {    while (sys_mbox_tryfetch(conn->acceptmbox, &mem) != SYS_MBOX_EMPTY) {      netconn_delete((struct netconn *)mem);    }    sys_mbox_free(conn->acceptmbox);    conn->acceptmbox = SYS_MBOX_NULL;  }  sys_sem_free(conn->op_completed);  conn->op_completed = SYS_SEM_NULL;  memp_free(MEMP_NETCONN, conn);}#if LWIP_TCP/** * Internal helper function to close a TCP netconn: since this sometimes * doesn't work at the first attempt, this function is called from multiple * places. * * @param conn the TCP netconn to close */static voiddo_close_internal(struct netconn *conn){  err_t err;  LWIP_ASSERT("invalid conn", (conn != NULL));  LWIP_ASSERT("this is for tcp netconns only", (conn->type == NETCONN_TCP));  LWIP_ASSERT("conn must be in state NETCONN_CLOSE", (conn->state == NETCONN_CLOSE));  LWIP_ASSERT("pcb already closed", (conn->pcb.tcp != NULL));  /* Set back some callback pointers */  if (conn->pcb.tcp->state == LISTEN) {    tcp_arg(conn->pcb.tcp, NULL);    tcp_accept(conn->pcb.tcp, NULL);  } else {    tcp_recv(conn->pcb.tcp, NULL);  }  /* Try to close the connection */  err = tcp_close(conn->pcb.tcp);  if (err == ERR_OK) {    /* Closing succeeded */    conn->state = NETCONN_NONE;    /* Set back some callback pointers as conn is going away */    tcp_err(conn->pcb.tcp, NULL);    tcp_poll(conn->pcb.tcp, NULL, 4);    tcp_sent(conn->pcb.tcp, NULL);    tcp_recv(conn->pcb.tcp, NULL);    tcp_arg(conn->pcb.tcp, NULL);    conn->pcb.tcp = NULL;    conn->err = ERR_OK;    /* Trigger select() in socket layer. This send should something else so the       errorfd is set, not the read and write fd! */    API_EVENT(conn, NETCONN_EVT_RCVPLUS, 0);    API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0);    /* wake up the application task */    sys_sem_signal(conn->op_completed);  }  /* If closing didn't succeed, we get called again either     from poll_tcp or from sent_tcp */}#endif /* LWIP_TCP *//** * Delete the pcb inside a netconn. * Called from netconn_delete. * * @param msg the api_msg_msg pointing to the connection */voiddo_delconn(struct api_msg_msg *msg){  if (msg->conn->pcb.tcp != NULL) {    switch (NETCONNTYPE_GROUP(msg->conn->type)) {#if LWIP_RAW    case NETCONN_RAW:      raw_remove(msg->conn->pcb.raw);      break;#endif /* LWIP_RAW */#if LWIP_UDP    case NETCONN_UDP:      msg->conn->pcb.udp->recv_arg = NULL;      udp_remove(msg->conn->pcb.udp);      break;#endif /* LWIP_UDP */#if LWIP_TCP    case NETCONN_TCP:      msg->conn->state = NETCONN_CLOSE;      do_close_internal(msg->conn);      /* API_EVENT is called inside do_close_internal, before releasing         the application thread, so we can return at this point! */      return;#endif /* LWIP_TCP */    default:      break;    }  }  /* tcp netconns don't come here! */  /* Trigger select() in socket layer. This send should something else so the     errorfd is set, not the read and write fd! */  API_EVENT(msg->conn, NETCONN_EVT_RCVPLUS, 0);  API_EVENT(msg->conn, NETCONN_EVT_SENDPLUS, 0);  if (msg->conn->op_completed != SYS_SEM_NULL) {    sys_sem_signal(msg->conn->op_completed);  }}/** * Bind a pcb contained in a netconn * Called from netconn_bind. * * @param msg the api_msg_msg pointing to the connection and containing *            the IP address and port to bind to */voiddo_bind(struct api_msg_msg *msg){  if (!ERR_IS_FATAL(msg->conn->err)) {    if (msg->conn->pcb.tcp != NULL) {      switch (NETCONNTYPE_GROUP(msg->conn->type)) {#if LWIP_RAW      case NETCONN_RAW:        msg->conn->err = raw_bind(msg->conn->pcb.raw, msg->msg.bc.ipaddr);        break;#endif /* LWIP_RAW */#if LWIP_UDP      case NETCONN_UDP:        msg->conn->err = udp_bind(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port);        break;#endif /* LWIP_UDP */#if LWIP_TCP      case NETCONN_TCP:        msg->conn->err = tcp_bind(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port);        break;#endif /* LWIP_TCP */      default:        break;      }    } else {      /* msg->conn->pcb is NULL */      msg->conn->err = ERR_VAL;    }  }  TCPIP_APIMSG_ACK(msg);}#if LWIP_TCP/** * TCP callback function if a connection (opened by tcp_connect/do_connect) has * been established (or reset by the remote host). * * @see tcp.h (struct tcp_pcb.connected) for parameters and return values */static err_tdo_connected(void *arg, struct tcp_pcb *pcb, err_t err){  struct netconn *conn;  LWIP_UNUSED_ARG(pcb);  conn = arg;  if (conn == NULL) {    return ERR_VAL;  }  conn->err = err;  if ((conn->type == NETCONN_TCP) && (err == ERR_OK)) {    setup_tcp(conn);  }  conn->state = NETCONN_NONE;  sys_sem_signal(conn->op_completed);  return ERR_OK;}#endif /* LWIP_TCP *//** * Connect a pcb contained inside a netconn * Called from netconn_connect. * * @param msg the api_msg_msg pointing to the connection and containing *            the IP address and port to connect to */voiddo_connect(struct api_msg_msg *msg){  if (msg->conn->pcb.tcp == NULL) {    sys_sem_signal(msg->conn->op_completed);    return;  }  switch (NETCONNTYPE_GROUP(msg->conn->type)) {#if LWIP_RAW  case NETCONN_RAW:    msg->conn->err = raw_connect(msg->conn->pcb.raw, msg->msg.bc.ipaddr);    sys_sem_signal(msg->conn->op_completed);    break;#endif /* LWIP_RAW */#if LWIP_UDP  case NETCONN_UDP:    msg->conn->err = udp_connect(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port);    sys_sem_signal(msg->conn->op_completed);    break;#endif /* LWIP_UDP */#if LWIP_TCP  case NETCONN_TCP:    msg->conn->state = NETCONN_CONNECT;    setup_tcp(msg->conn);    msg->conn->err = tcp_connect(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port,                                 do_connected);    /* sys_sem_signal() is called from do_connected (or err_tcp()),     * when the connection is established! */    break;#endif /* LWIP_TCP */  default:    break;  }}/** * Connect a pcb contained inside a netconn * Only used for UDP netconns. * Called from netconn_disconnect. * * @param msg the api_msg_msg pointing to the connection to disconnect */voiddo_disconnect(struct api_msg_msg *msg){#if LWIP_UDP  if (NETCONNTYPE_GROUP(msg->conn->type) == NETCONN_UDP) {    udp_disconnect(msg->conn->pcb.udp);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三国产精华液| 欧美韩国日本一区| 成人国产精品视频| 美女性感视频久久| 亚洲毛片av在线| 久久亚洲一区二区三区明星换脸| 色综合天天综合网天天狠天天| 伦理电影国产精品| 日韩国产欧美在线视频| 一区二区在线免费| 亚洲天堂福利av| 国产欧美一区二区三区鸳鸯浴| 日韩午夜激情电影| 91精品免费在线| 91精品视频网| 日韩一级黄色大片| 欧美男男青年gay1069videost| 色综合久久天天| 91免费视频观看| 不卡影院免费观看| 色综合久久88色综合天天免费| 成人av一区二区三区| 本田岬高潮一区二区三区| 欧美老肥妇做.爰bbww| 国产一区二区三区日韩 | 奇米一区二区三区| 日韩精品一卡二卡三卡四卡无卡| 亚洲成年人网站在线观看| 亚洲国产精品久久不卡毛片| 艳妇臀荡乳欲伦亚洲一区| 亚洲手机成人高清视频| 一区二区成人在线| 日本三级亚洲精品| 国产露脸91国语对白| 成人精品小蝌蚪| 欧美日韩国产一级| 日韩午夜激情视频| 亚洲欧美电影院| 日韩vs国产vs欧美| 成人手机电影网| 欧美日韩dvd在线观看| 久久久久久久久久久久久夜| 亚洲欧美日韩国产手机在线| 无码av免费一区二区三区试看| 久久av资源网| 成人妖精视频yjsp地址| 欧美理论在线播放| 国产精品免费看片| 亚洲成人动漫av| 成人高清视频免费观看| 日韩欧美国产三级电影视频| 欧美国产精品中文字幕| 日韩国产欧美一区二区三区| 不卡一二三区首页| 欧美大片顶级少妇| 午夜精品久久久久久久久| 成人av电影在线播放| 久久视频一区二区| 三级欧美韩日大片在线看| 91极品视觉盛宴| 国产精品嫩草99a| 精品一区二区三区免费观看| 欧美中文字幕一区| 国产精品不卡一区二区三区| 麻豆高清免费国产一区| 欧美精品免费视频| 亚洲成人高清在线| 欧美伊人精品成人久久综合97 | 成人av电影免费在线播放| 久久综合五月天婷婷伊人| 久久国内精品自在自线400部| 欧美视频在线播放| 亚洲成人av一区| 欧美性猛片aaaaaaa做受| 成人欧美一区二区三区在线播放| 国产精品一品二品| 久久精品一区二区三区四区| 国产98色在线|日韩| 国产欧美一区二区精品婷婷| 从欧美一区二区三区| 国产精品免费观看视频| 色婷婷久久综合| 污片在线观看一区二区| 日韩欧美一区中文| 国产精品一区二区三区四区| 国产精品久久久久久久岛一牛影视| 国产suv一区二区三区88区| 国产精品国产自产拍在线| 91麻豆免费视频| 玖玖九九国产精品| 国产女人18水真多18精品一级做| 99在线精品观看| 日本成人中文字幕| 欧美激情在线免费观看| 欧美日韩一级二级三级| 久久99国内精品| 一区二区三区中文字幕| 日韩欧美激情在线| 欧洲一区在线观看| 国产99久久久久| 视频一区二区三区在线| 国产清纯白嫩初高生在线观看91 | 狠狠色伊人亚洲综合成人| 国产精品国产三级国产aⅴ无密码| 欧美性视频一区二区三区| 国模娜娜一区二区三区| 亚洲成人午夜影院| 国产精品久久久久影院| 久久综合丝袜日本网| 制服丝袜国产精品| 色悠悠久久综合| 99亚偷拍自图区亚洲| 国产福利一区二区三区视频在线| 亚洲国产精品一区二区久久恐怖片| 久久久久久久综合色一本| 日韩一区二区中文字幕| 欧美视频中文字幕| 在线看国产日韩| 成人听书哪个软件好| 国产馆精品极品| 国产精品综合视频| 国产综合一区二区| 国产成人精品影院| 国产高清在线精品| 成人午夜免费电影| 91欧美一区二区| 欧美视频中文一区二区三区在线观看 | 国产精品一区在线观看乱码| 国产一区二区三区在线观看免费| 麻豆国产精品一区二区三区| 日本三级亚洲精品| 国产一区二区毛片| 成人在线视频一区二区| 91视频在线观看| 欧美亚洲日本国产| 4hu四虎永久在线影院成人| 日韩视频在线你懂得| 日韩欧美高清dvd碟片| 久久久久久电影| 亚洲欧美色一区| 美女网站色91| 99精品1区2区| 欧美一二三四区在线| 国产女主播一区| 五月天激情综合网| 国产成人aaaa| 欧美精品自拍偷拍| 国产精品无圣光一区二区| 亚洲成av人片一区二区梦乃| 狠狠色综合日日| 欧美日韩和欧美的一区二区| 国产性做久久久久久| 亚洲h在线观看| 99久久99久久精品免费看蜜桃| 欧美人动与zoxxxx乱| 亚洲欧美在线观看| 狠狠色丁香婷综合久久| 色网站国产精品| 中文天堂在线一区| 国内久久婷婷综合| 欧美日韩中字一区| 国产欧美精品一区二区色综合朱莉 | 国产成人精品一区二区三区四区| 欧美性感一区二区三区| 亚洲精品你懂的| 国产69精品久久久久777| 精品精品国产高清a毛片牛牛| 亚洲国产成人tv| 欧美日韩在线播放| 樱花影视一区二区| 91久久精品国产91性色tv| 亚洲国产精华液网站w| 国产成人精品免费看| 国产日韩欧美精品电影三级在线| 麻豆免费看一区二区三区| 制服丝袜在线91| 九色综合狠狠综合久久| 日韩欧美一级二级三级| 久久成人久久爱| 日韩精品一区二区三区四区视频 | 91久久一区二区| 亚洲精品视频一区二区| 欧美在线观看一二区| 亚洲电影第三页| 精品第一国产综合精品aⅴ| 激情五月婷婷综合| 中文字幕一区日韩精品欧美| 91在线国产福利| 奇米色777欧美一区二区| www国产成人| 一本大道久久精品懂色aⅴ| 天堂在线一区二区| 久久尤物电影视频在线观看| 懂色中文一区二区在线播放| 亚洲精品视频免费看| 日韩欧美中文字幕精品| 成人三级伦理片| 日韩黄色免费网站| 99久久精品国产精品久久| 亚洲精选视频免费看|