- Timestamp:
- May 22, 2019, 10:03:37 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub/trunk/asp3_dcre/tinet/netapp/tcp_echo_srv2.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r388 r389 5 5 * Tomakomai National College of Technology, JAPAN 6 6 * 7 * ä¸è¨èä½æ¨©è 8 ã¯ï¼ä»¥ä¸ã® (1)ï½(4) ã®æ¡ä»¶ãï¼Free Software Foundation 9 * ã«ãã£ã¦å 10 ¬è¡¨ããã¦ãã GNU General Public License ã® Version 2 ã«è¨ 11 * è¿°ããã¦ããæ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ã¢ï¼æ¬ã½ããã¦ã§ã¢ 12 * ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼ 14 * å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®æ¡ä»¶ãæºãããã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 33 * 害ãããï¼ä¸è¨èä½æ¨©è 34 ããã³TOPPERSããã¸ã§ã¯ããå 35 責ãããã¨ï¼ 7 * 上記著作権者は,以下の (1)~(4) の条件か,Free Software Foundation 8 * によって公表されている GNU General Public License の Version 2 に記 9 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 10 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 11 * 利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次の条件を満たすこと. 21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 24 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 36 25 * 37 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 38 ã 39 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ãã®é©ç¨å¯è½æ§ã 40 * å«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´ 41 * æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ãã®è²¬ä»»ãè² ããªãï¼ 26 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 27 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 28 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 29 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 42 30 * 43 31 * @(#) $Id$ … … 45 33 46 34 /* 47 * TCP ECHO ãµã¼ã#235 * TCP ECHO サーバ #2 48 36 * 49 * ã»éåä¿¡ã¿ã¹ã¯åé¢å50 * ã»ãã³ããããã³ã°ã³ã¼ã«51 * ã»IPv4/IPv637 * ・送受信タスク分離型 38 * ・ノンブロッキングコール 39 * ・IPv4/IPv6 52 40 */ 53 41 … … 91 79 92 80 /* 93 * 表示81 * 表示 94 82 */ 95 83 … … 97 85 98 86 /* 99 * ã³ãã¯ã·ã§ã³åææ¹æ³ã®æå®87 * コネクション切断方法の指定 100 88 */ 101 89 … … 103 91 104 92 /* 105 * å 106 ¨åå¤æ° 107 */ 108 109 /* TCP éåä¿¡ã¦ã£ã³ããããã¡ */ 93 * 全域変数 94 */ 95 96 /* TCP 送受信ウィンドバッファ */ 110 97 111 98 #ifndef TCP_CFG_SWBUF_CSAVE … … 118 105 119 106 /* 120 * å¤æ°121 */ 122 123 /* 124 * 注æ:107 * 変数 108 */ 109 110 /* 111 * 注意: 125 112 * 126 * BUF_SIZE 㯠TCP ã®127 * éä¿¡ã¦ã¤ã³ãã¦ãããã¡ãµã¤ãº + åä¿¡ã¦ã¤ã³ãã¦ãããã¡ãµã¤ãºã®128 * 3/2 å以ä¸ã®å¤§ããããªããã°ããããããã¯ããå¯è½æ§ãããã113 * BUF_SIZE は TCP の 114 * 送信ウインドウバッファサイズ + 受信ウインドウバッファサイズの 115 * 3/2 倍以上の大きさがなければ、デッドロックする可能性がある。 129 116 */ 130 117 … … 132 119 TCP_ECHO_SRV_RWBUF_SIZE) * 3 / 2) 133 120 134 static char buffer[BUF_SIZE]; /* ãããã¡ */ 135 136 static T_IPEP dst; /* æ¥ç¶ç¸æ */ 137 static bool_t ena_rcv; /* åä¿¡å¯è½ãã©ã° */ 138 static char *rptr = buffer; /* åä¿¡ãã¤ã³ã¿ */ 139 static char *sptr = buffer; /* éä¿¡ãã¤ã³ã¿ */ 140 static uint32_t rcv_total; /* åä¿¡æåæ° */ 141 static uint32_t snd_total; /* éä¿¡æåæ° */ 142 static uint16_t chars; /* ãããã¡å 143 ã®æåæ° */ 144 static uint16_t rcv_count; /* åä¿¡åæ° */ 145 static uint16_t snd_count; /* éä¿¡åæ° */ 121 static char buffer[BUF_SIZE]; /* バッファ */ 122 123 static T_IPEP dst; /* 接続相手 */ 124 static bool_t ena_rcv; /* 受信可能フラグ */ 125 static char *rptr = buffer; /* 受信ポインタ */ 126 static char *sptr = buffer; /* 送信ポインタ */ 127 static uint32_t rcv_total; /* 受信文字数 */ 128 static uint32_t snd_total; /* 送信文字数 */ 129 static uint16_t chars; /* バッファ内の文字数 */ 130 static uint16_t rcv_count; /* 受信回数 */ 131 static uint16_t snd_count; /* 送信回数 */ 146 132 147 133 #ifdef USE_TCP_NON_BLOCKING 148 134 149 static ER rcv_error = E_OK; /* åä¿¡ããã³ããããã³ã°ã³ã¼ã«ã¨ã©ã¼*/150 static ER snd_error = 1; /* éä¿¡ããã³ããããã³ã°ã³ã¼ã«ã¨ã©ã¼*/151 152 /* 153 * ãã³ããããã³ã°ã³ã¼ã«ã®ã³ã¼ã«ããã¯é¢æ°135 static ER rcv_error = E_OK; /* 受信、ノンブロッキングコールエラー */ 136 static ER snd_error = 1; /* 送信、ノンブロッキングコールエラー */ 137 138 /* 139 * ノンブロッキングコールのコールバック関数 154 140 */ 155 141 … … 197 183 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 198 184 199 /* éä¿¡ãã¤ã³ã¿ãé²ããã*/185 /* 送信ポインタを進める。*/ 200 186 if (sptr - buffer + slen >= sizeof(buffer)) 201 187 sptr -= sizeof(buffer) - slen; … … 203 189 sptr += slen; 204 190 205 /* ãããã¡å 206 ã®æåæ°ãæ¸ããã*/ 191 /* バッファ内の文字数を減らす。*/ 207 192 last = chars; 208 193 chars -= slen; 209 194 210 /* ãããã¡å 211 ã«æåãããã°ãéä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 195 /* バッファ内に文字があれば、送信タスクを起床する。*/ 212 196 if (chars > 0 || (!ena_rcv && chars == 0)) 213 197 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); 214 198 215 /* åä¿¡å¯è½ã§ããããã¡å 216 ã«ç©ºããã§ããã°ãåä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 199 /* 受信可能で、バッファ内に空きができれば、受信タスクを起床する。*/ 217 200 if (ena_rcv && last == sizeof(buffer) && sizeof(buffer) - chars > 0) 218 201 syscall(sig_sem(SEM_TCP_ECHO_SRV_RCV_READY)); … … 240 223 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 241 224 242 /* åä¿¡ãã¤ã³ã¿ãé²ããã*/225 /* 受信ポインタを進める。*/ 243 226 if (rptr - buffer + rlen >= sizeof(buffer)) 244 227 rptr -= sizeof(buffer) - rlen; … … 246 229 rptr += rlen; 247 230 248 /* ãããã¡å 249 ã®æåæ°ãå¢ããã*/ 231 /* バッファ内の文字数を増やす。*/ 250 232 last = chars; 251 233 chars += rlen; 252 234 253 /* ãããã¡å 254 ã«æåãå 255 ¥ãã°ãéä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 235 /* バッファ内に文字が入れば、送信タスクを起床する。*/ 256 236 if (last == 0 && chars > 0) 257 237 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); 258 238 259 /* ãããã¡å 260 ã«ç©ºããããã°ãåä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 239 /* バッファ内に空きがあれば、受信タスクを起床する。*/ 261 240 if (sizeof(buffer) - chars > 0) 262 241 sig_sem(SEM_TCP_ECHO_SRV_RCV_READY); … … 293 272 294 273 /* 295 * TCP ECHO ãµã¼ãåä¿¡ã«ã¼ãã³ (ãã³ããããã³ã°ã³ã¼ã«ä½¿ç¨)274 * TCP ECHO サーバ受信ルーチン (ノンブロッキングコール使用) 296 275 */ 297 276 … … 312 291 } 313 292 314 /* ã³ãã¯ã·ã§ã³éè¨å®äºã¾ã§å¾ 315 ã¤ã*/ 293 /* コネクション開設完了まで待つ。*/ 316 294 syscall(wai_sem(SEM_TCP_ECHO_SRV_RCV_READY)); 317 295 318 /* å¾ 319 ã£ã¦ããéã«ã¨ã©ã¼ã«ãªã£ãããã³ãã¯ã·ã§ã³ã®éè¨å¾ 320 ã¡ã«æ»ãã*/ 296 /* 待っている間にエラーになったら、コネクションの開設待ちに戻る。*/ 321 297 if (rcv_error != E_OK) 322 298 return rcv_error; … … 331 307 while (true) { 332 308 333 /* åä¿¡ãµã¤ãºãè¨ç®ããã*/309 /* 受信サイズを計算する。*/ 334 310 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 335 311 if (sptr > rptr) … … 339 315 syscall(sig_sem(SEM_TCP_ECHO_SRV_LOCK)); 340 316 341 /* åä¿¡ããã*/317 /* 受信する。*/ 342 318 if ((error = tcp_rcv_dat(cepid, rptr, blen, TMO_NBLK)) != E_WBLK) { 343 319 syslog(LOG_NOTICE, "[TES:%02u RCV] recv error = %s", cepid, itron_strerror(error)); … … 345 321 } 346 322 347 /* åä¿¡ãããã¡ã«ç©ºãã§ããã¾ã§å¾ 348 ã¤ã*/ 323 /* 受信バッファに空ができるまで待つ。*/ 349 324 syscall(wai_sem(SEM_TCP_ECHO_SRV_RCV_READY)); 350 325 351 /* å¾ 352 ã£ã¦ããéã«ãåä¿¡æåæ°ã 0 ã«ãªãããã¨ã©ã¼ã«ãªã£ããçµäºããã*/ 326 /* 待っている間に、受信文字数が 0 になるか、エラーになったら終了する。*/ 353 327 if (rcv_error <= 0) 354 328 break; … … 356 330 } 357 331 358 /* åä¿¡å®äº*/332 /* 受信完了 */ 359 333 ena_rcv = false; 360 334 361 /* åä¿¡ãããã¡ã«æåãå 362 ¥ãã®ãå¾ 363 ã£ã¦ããéä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 335 /* 受信バッファに文字が入るのを待っている送信タスクを起床する。*/ 364 336 if (chars == 0) 365 337 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); 366 338 367 /* ã³ãã¯ã·ã§ã³åæå®äºã¾ã§å¾ 368 ã¤ã*/ 339 /* コネクション切断完了まで待つ。*/ 369 340 syscall(wai_sem(SEM_TCP_ECHO_SRV_CLS_READY)); 370 341 … … 373 344 374 345 /* 375 * TCP ECHO ãµã¼ãéä¿¡ã¿ã¹ã¯ (ãã³ããããã³ã°ã³ã¼ã«ä½¿ç¨)346 * TCP ECHO サーバ送信タスク (ノンブロッキングコール使用) 376 347 */ 377 348 … … 394 365 while (true) { 395 366 396 /* ãããã¡ã«æåãå 397 ¥ãã¾ã§å¾ 398 ã¤ã*/ 367 /* バッファに文字が入るまで待つ。*/ 399 368 syscall(wai_sem(SEM_TCP_ECHO_SRV_SND_READY)); 400 369 401 /* å¾ 402 ã£ã¦ããéã«ã¨ã©ã¼ã«ãªã£ããçµäºããã*/ 370 /* 待っている間にエラーになったら終了する。*/ 403 371 if (snd_error <= 0) 404 372 break; 405 373 406 /* åä¿¡å®äºã§ããããã¡ã«æåããªããã°çµäºããã*/374 /* 受信完了で、バッファに文字がなければ終了する。*/ 407 375 if (!ena_rcv && chars == 0) 408 376 break; 409 377 410 /* éä¿¡ãµã¤ãºãè¨ç®ããã*/378 /* 送信サイズを計算する。*/ 411 379 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 412 380 if (rptr > sptr) … … 416 384 syscall(sig_sem(SEM_TCP_ECHO_SRV_LOCK)); 417 385 418 /* éä¿¡ããã*/386 /* 送信する。*/ 419 387 if ((error = tcp_snd_dat(cepid, sptr, blen, TMO_NBLK)) != E_WBLK) { 420 388 syslog(LOG_NOTICE, "[TES:%02u SND] send error = %s", cepid, itron_strerror(error)); … … 423 391 } 424 392 425 /* åä¿¡ãããã¡ã«ç©ºãã§ãããå¾ 426 ã£ã¦ããåä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 393 /* 受信バッファに空ができるを待っている受信タスクを起床する。*/ 427 394 if (chars == sizeof(buffer)) 428 395 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); … … 445 412 446 413 /* 447 * TCP ECHO ãµã¼ãåä¿¡ã«ã¼ãã³414 * TCP ECHO サーバ受信ルーチン 448 415 */ 449 416 … … 482 449 while (true) { 483 450 484 /* åä¿¡ãµã¤ãºãè¨ç®ããã*/451 /* 受信サイズを計算する。*/ 485 452 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 486 453 if (sptr > rptr) … … 490 457 syscall(sig_sem(SEM_TCP_ECHO_SRV_LOCK)); 491 458 492 /* åä¿¡ããã*/459 /* 受信する。*/ 493 460 if ((rlen = tcp_rcv_dat(cepid, rptr, blen, TMO_FEVR)) <= 0) { 494 461 if (rlen < 0) … … 508 475 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 509 476 510 /* åä¿¡ãã¤ã³ã¿ãé²ããã*/477 /* 受信ポインタを進める。*/ 511 478 if (rptr - buffer + rlen >= sizeof(buffer)) 512 479 rptr -= sizeof(buffer) - rlen; … … 514 481 rptr += rlen; 515 482 516 /* ãããã¡å 517 ã®æåæ°ãå¢ããã*/ 483 /* バッファ内の文字数を増やす。*/ 518 484 last = chars; 519 485 chars += (uint16_t)rlen; 520 486 521 /* ãããã¡å 522 ã«æåãå 523 ¥ãã°ãéä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 487 /* バッファ内に文字が入れば、送信タスクを起床する。*/ 524 488 if (last == 0 && chars > 0) 525 489 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); 526 490 527 /* ãããã¡å 528 ã«ç©ºããããã°ãåä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 491 /* バッファ内に空きがあれば、受信タスクを起床する。*/ 529 492 if (sizeof(buffer) - chars > 0) 530 493 sig_sem(SEM_TCP_ECHO_SRV_RCV_READY); … … 532 495 syscall(sig_sem(SEM_TCP_ECHO_SRV_LOCK)); 533 496 534 /* ãããã¡ã«ç©ºããã§ããã¾ã§å¾ 535 ã¤ã*/ 497 /* バッファに空きができるまで待つ。*/ 536 498 syscall(wai_sem(SEM_TCP_ECHO_SRV_RCV_READY)); 537 499 } 538 500 539 /* åä¿¡å®äº*/501 /* 受信完了 */ 540 502 ena_rcv = false; 541 503 542 /* åä¿¡ãããã¡ã«æåãå 543 ¥ãã®ãå¾ 544 ã£ã¦ããéä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 504 /* 受信バッファに文字が入るのを待っている送信タスクを起床する。*/ 545 505 if (chars == 0) 546 506 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); 547 507 548 /* ã³ãã¯ã·ã§ã³ã®åæãå®äºããã¾ã§å¾ 549 ã¤ã*/ 508 /* コネクションの切断が完了するまで待つ。*/ 550 509 syscall(wai_sem(SEM_TCP_ECHO_SRV_CLS_READY)); 551 510 … … 554 513 555 514 /* 556 * TCP ECHO ãµã¼ãéä¿¡ã¿ã¹ã¯515 * TCP ECHO サーバ送信タスク 557 516 */ 558 517 … … 578 537 while (true) { 579 538 580 /* ãããã¡ã«æåãå 581 ¥ãã¾ã§å¾ 582 ã¤ã*/ 539 /* バッファに文字が入るまで待つ。*/ 583 540 syscall(wai_sem(SEM_TCP_ECHO_SRV_SND_READY)); 584 541 585 /* åä¿¡å®äºã§ããããã¡ã«æåããªããã°çµäºããã*/542 /* 受信完了で、バッファに文字がなければ終了する。*/ 586 543 if (!ena_rcv && chars == 0) 587 544 break; 588 545 589 /* éä¿¡ãµã¤ãºãè¨ç®ããã*/546 /* 送信サイズを計算する。*/ 590 547 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 591 548 if (rptr > sptr) … … 611 568 syscall(wai_sem(SEM_TCP_ECHO_SRV_LOCK)); 612 569 613 /* éä¿¡ãã¤ã³ã¿ãé²ããã*/570 /* 送信ポインタを進める。*/ 614 571 if (sptr - buffer + slen >= sizeof(buffer)) 615 572 sptr -= sizeof(buffer) - slen; … … 617 574 sptr += slen; 618 575 619 /* ãããã¡å 620 ã®æåæ°ãæ¸ããã*/ 576 /* バッファ内の文字数を減らす。*/ 621 577 last = chars; 622 578 chars -= (uint16_t)slen; 623 579 624 /* åä¿¡å®äºã§ããããã¡ã«æåããªããã°çµäºããã*/580 /* 受信完了で、バッファに文字がなければ終了する。*/ 625 581 if (!ena_rcv && chars == 0) { 626 582 syscall(sig_sem(SEM_TCP_ECHO_SRV_LOCK)); … … 628 584 } 629 585 630 /* ãããã¡å 631 ã«æåãããã°ãéä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 586 /* バッファ内に文字があれば、送信タスクを起床する。*/ 632 587 if (chars > 0) 633 588 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); 634 589 635 /* åä¿¡å¯è½ã§ããããã¡å 636 ã«ç©ºããã§ããã°ãåä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 590 /* 受信可能で、バッファ内に空きができれば、受信タスクを起床する。*/ 637 591 if (ena_rcv && last == sizeof(buffer) && sizeof(buffer) - chars > 0) 638 592 sig_sem(SEM_TCP_ECHO_SRV_RCV_READY); … … 641 595 } 642 596 643 /* åä¿¡ãããã¡ã«ç©ºãã§ãããå¾ 644 ã£ã¦ããåä¿¡ã¿ã¹ã¯ãèµ·åºããã*/ 597 /* 受信バッファに空ができるを待っている受信タスクを起床する。*/ 645 598 if (chars == sizeof(buffer)) 646 599 sig_sem(SEM_TCP_ECHO_SRV_SND_READY); … … 670 623 671 624 /* 672 * get_tcp_rep -- TCP åä»å£ãç²å¾ããã625 * get_tcp_rep -- TCP 受付口を獲得する。 673 626 */ 674 627 … … 696 649 697 650 /* 698 * get_tcp_cep -- TCP é信端ç¹ãç²å¾ããã651 * get_tcp_cep -- TCP 通信端点を獲得する。 699 652 */ 700 653 … … 731 684 732 685 /* 733 * TCP ECHO ãµã¼ãåä¿¡ã¿ã¹ã¯686 * TCP ECHO サーバ受信タスク 734 687 */ 735 688
Note:
See TracChangeset
for help on using the changeset viewer.