Ignore:
Timestamp:
May 22, 2019, 10:03:37 PM (5 years ago)
Author:
coas-nagasima
Message:

ビルドが通るよう更新

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub/trunk/asp3_dcre/tinet/netinet/udpn_usrreq_nblk.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r388 r389  
    55 *                   Tomakomai National College of Technology, JAPAN
    66 *
    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プロジェクトを免責すること.
    3625 *
    37  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    38 ãŠ
    39  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
    40  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
    41  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
     26 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     27 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
     28 *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
     29 *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
    4230 *
    4331 *  @(#) $Id$
     
    8371
    8472/*
    85  *  udp_can_snd -- ペンディングしている送信のキャンセル
     73 *  udp_can_snd -- ペンディングしている送信のキャンセル
    8674 */
    8775
     
    8977UDP_CAN_SND (T_UDP_CEP *cep, ER error)
    9078{
    91         if (cep->snd_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
     79        if (cep->snd_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
    9280                if (IS_PTR_DEFINED(cep->callback))
    9381
     
    10189                cep->snd_p_dstaddr = NULL;
    10290                }
    103         else if (cep->snd_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
     91        else if (cep->snd_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
    10492
    10593#ifdef UDP_CFG_EXTENTIONS
    10694
    107                 /* å¾
    108 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    109 å ±ã‚’設定する。*/
     95                /* 待ち中に発生したエラー情報を設定する。*/
    11096                cep->error = error;
    11197
     
    115101                cep->snd_tskid = TA_NULL;
    116102                }
    117         else                                    /* どちらでもないならペンディングしていない */
     103        else                                    /* どちらでもないならペンディングしていない */
    118104                error = EV_NOPND;
    119105
     
    126112
    127113/*
    128  *  udp_can_rcv -- ペンディングしている受信のキャンセル
     114 *  udp_can_rcv -- ペンディングしている受信のキャンセル
    129115 */
    130116
     
    132118UDP_CAN_RCV (T_UDP_CEP *cep, ER error)
    133119{
    134         if (cep->rcv_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
     120        if (cep->rcv_p_dstaddr != NULL) {       /* ノンブロッキングコールでペンディング中 */
    135121                if (IS_PTR_DEFINED(cep->callback))
    136122
     
    144130                cep->rcv_p_dstaddr = NULL;
    145131                }
    146         else if (cep->rcv_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
     132        else if (cep->rcv_tskid != TA_NULL) {   /* 非ノンブロッキングコールでペンディング中 */
    147133
    148134#ifdef UDP_CFG_EXTENTIONS
    149135
    150                 /* å¾
    151 ã¡ä¸­ã«ç™ºç”Ÿã—たエラーæƒ
    152 å ±ã‚’設定する。*/
     136                /* 待ち中に発生したエラー情報を設定する。*/
    153137                cep->error = error;
    154138
     
    158142                cep->rcv_tskid = TA_NULL;
    159143                }
    160         else                                    /* どちらでもないならペンディングしていない */
     144        else                                    /* どちらでもないならペンディングしていない */
    161145                error = EV_NOPND;
    162146
     
    169153
    170154/*
    171  *  udp_snd_dat -- パケットの送信【標準機能】
     155 *  udp_snd_dat -- パケットの送信【標準機能】
    172156 */
    173157
     
    178162        ER              error;
    179163
    180         /* p_dstaddr または data が NULL ならエラー */
     164        /* p_dstaddr または data が NULL ならエラー */
    181165        if (p_dstaddr == NULL || data == NULL)
    182166                return E_PAR;
    183167
    184         /* データ長をチェックする。*/
     168        /* データ長をチェックする。*/
    185169        if (len < 0 || len + IP_HDR_SIZE + UDP_HDR_SIZE > IF_MTU)
    186170                return E_PAR;
     
    189173
    190174        /*
    191          * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
    192          * IPv4 射影アドレスが指定されたらエラー
     175         * API が IPv6 で IPv4 射影アドレスが認められていないのにもかかわらず、
     176         * IPv4 射影アドレスが指定されたらエラー
    193177         */
    194178        if (in6_is_addr_ipv4mapped(&p_dstaddr->ipaddr))
     
    197181#endif  /* of #if (API_PROTO == API_PROTO_IPV6) && !defined(DAPI_CFG_IP4MAPPED_ADDR) */
    198182
    199         /* UDP 通信端点 ID をチェックする。*/
     183        /* UDP 通信端点 ID をチェックする。*/
    200184        if (!VALID_UDP_CEPID(cepid))
    201185                return E_ID;
    202186
    203         /* UDP 通信端点を得る。*/
     187        /* UDP 通信端点を得る。*/
    204188        cep = GET_UDP_CEP(cepid);
    205189
    206         /* UDP 通信端点をチェックする。*/
     190        /* UDP 通信端点をチェックする。*/
    207191        if (!VALID_UDP_CEP(cep))
    208192                return E_NOEXS;
    209193
    210194        /*
    211          *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
     195         *  自ポート番号が UDP_PORTANY なら、自動で割り当てる。
    212196         */
    213197        if (cep->myaddr.portno == UDP_PORTANY) {
     
    217201
    218202        /*
    219          * タイムアウトをチェックする。
     203         * タイムアウトをチェックする。
    220204         */
    221         if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    222 
    223                 /* 通信端点をロックする。*/
     205        if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     206
     207                /* 通信端点をロックする。*/
    224208                syscall(wai_sem(cep->semid_lock));
    225209
    226210                if (cep->snd_p_dstaddr != NULL) {
    227211
    228                         /* ノンブロッキングコールでペンディング中 */
     212                        /* ノンブロッキングコールでペンディング中 */
    229213                        error = E_QOVR;
    230214
    231                         /* 通信端点をロックを解除する。*/
     215                        /* 通信端点をロックを解除する。*/
    232216                        syscall(sig_sem(cep->semid_lock));
    233217                        }
    234218                else if (cep->snd_tskid != TA_NULL) {
    235219
    236                         /* 非ノンブロッキングコールでペンディング中 */
    237                         error = E_OBJ;
    238 
    239                         /* 通信端点をロックを解除する。*/
     220                        /* 非ノンブロッキングコールでペンディング中 */
     221                        error = E_OBJ;
     222
     223                        /* 通信端点をロックを解除する。*/
    240224                        syscall(sig_sem(cep->semid_lock));
    241225                        }
     
    246230                        cep->snd_len    = len;
    247231
    248                         /* 通信端点をロックを解除する。*/
     232                        /* 通信端点をロックを解除する。*/
    249233                        syscall(sig_sem(cep->semid_lock));
    250234
     
    254238                        }
    255239                }
    256         else {                          /* 非ノンブロッキングコール */
     240        else {                          /* 非ノンブロッキングコール */
    257241       
    258                 /* 通信端点をロックする。*/
     242                /* 通信端点をロックする。*/
    259243                syscall(wai_sem(cep->semid_lock));
    260244
    261245                if (cep->snd_p_dstaddr != NULL) {
    262246
    263                         /* ノンブロッキングコールでペンディング中 */
    264                         error = E_OBJ;
    265 
    266                         /* 通信端点をロックを解除する。*/
     247                        /* ノンブロッキングコールでペンディング中 */
     248                        error = E_OBJ;
     249
     250                        /* 通信端点をロックを解除する。*/
    267251                        syscall(sig_sem(cep->semid_lock));
    268252                        }
    269253                else if (cep->snd_tskid != TA_NULL) {
    270254
    271                         /* 非ノンブロッキングコールでペンディング中 */
     255                        /* 非ノンブロッキングコールでペンディング中 */
    272256                        error = E_QOVR;
    273257
    274                         /* 通信端点をロックを解除する。*/
     258                        /* 通信端点をロックを解除する。*/
    275259                        syscall(sig_sem(cep->semid_lock));
    276260                        }
    277261                else {
    278262
    279                         /* 現在のタスク識別子を記録する。*/
     263                        /* 現在のタスク識別子を記録する。*/
    280264                        get_tid(&(cep->snd_tskid));
    281265
    282                         /* 通信端点をロックを解除する。*/
    283                         syscall(sig_sem(cep->semid_lock));
    284 
    285                         /* パケットを送信する。*/
     266                        /* 通信端点をロックを解除する。*/
     267                        syscall(sig_sem(cep->semid_lock));
     268
     269                        /* パケットを送信する。*/
    286270                        error = UDP_SEND_DATA(cep, p_dstaddr, data, len, tmout);
    287271                        }
     
    296280
    297281/*
    298  *  udp_rcv_dat -- パケットの受信【標準機能】
     282 *  udp_rcv_dat -- パケットの受信【標準機能】
    299283 */
    300284
     
    308292        uint_t          ulen, uhoff;
    309293
    310         /* p_dstaddr または data が NULL か、len < 0 ならエラー */
     294        /* p_dstaddr または data が NULL か、len < 0 ならエラー */
    311295        if (p_dstaddr == NULL || data == NULL || len < 0)
    312296                return E_PAR;
    313297
    314         /* UDP 通信端点 ID をチェックする。*/
     298        /* UDP 通信端点 ID をチェックする。*/
    315299        if (!VALID_UDP_CEPID(cepid))
    316300                return E_ID;
    317301
    318         /* UDP 通信端点を得る。*/
     302        /* UDP 通信端点を得る。*/
    319303        cep = GET_UDP_CEP(cepid);
    320304
    321         /* UDP 通信端点をチェックする。*/
     305        /* UDP 通信端点をチェックする。*/
    322306        if (!VALID_UDP_CEP(cep))
    323307                return E_NOEXS;
    324308
    325309        /*
    326          * タイムアウトをチェックする。
     310         * タイムアウトをチェックする。
    327311         */
    328312
    329         if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
    330 
    331                 /* 通信端点をロックする。*/
     313        if (tmout == TMO_NBLK) {        /* ノンブロッキングコール */
     314
     315                /* 通信端点をロックする。*/
    332316                syscall(wai_sem(cep->semid_lock));
    333317
    334318                if (cep->rcv_p_dstaddr != NULL)
    335319
    336                         /* ノンブロッキングコールでペンディング中 */
     320                        /* ノンブロッキングコールでペンディング中 */
    337321                        error = E_QOVR;
    338322
    339323                else if (cep->rcv_tskid != TA_NULL)
    340324
    341                         /* 非ノンブロッキングコールでペンディング中 */
     325                        /* 非ノンブロッキングコールでペンディング中 */
    342326                        error = E_OBJ;
    343327                else {
     
    348332                        }
    349333
    350                 /* 通信端点をロックを解除する。*/
     334                /* 通信端点をロックを解除する。*/
    351335                syscall(sig_sem(cep->semid_lock));
    352336                return error;
    353337                }
    354         else {                          /* 非ノンブロッキングコール */
    355 
    356                 /* 通信端点をロックする。*/
     338        else {                          /* 非ノンブロッキングコール */
     339
     340                /* 通信端点をロックする。*/
    357341                syscall(wai_sem(cep->semid_lock));
    358342
    359343                if (cep->rcv_p_dstaddr != NULL) {
    360344
    361                         /* ノンブロッキングコールでペンディング中 */
    362                         error = E_OBJ;
    363 
    364                         /* 通信端点をロックを解除する。*/
     345                        /* ノンブロッキングコールでペンディング中 */
     346                        error = E_OBJ;
     347
     348                        /* 通信端点をロックを解除する。*/
    365349                        syscall(sig_sem(cep->semid_lock));
    366350                        }
    367351                else if (cep->rcv_tskid != TA_NULL) {
    368352
    369                         /* 非ノンブロッキングコールでペンディング中 */
     353                        /* 非ノンブロッキングコールでペンディング中 */
    370354                        error = E_QOVR;
    371355
    372                         /* 通信端点をロックを解除する。*/
     356                        /* 通信端点をロックを解除する。*/
    373357                        syscall(sig_sem(cep->semid_lock));
    374358                        }
    375359                else {
    376360
    377                         /* 現在のタスク識別子を記録する。*/
     361                        /* 現在のタスク識別子を記録する。*/
    378362                        get_tid(&(cep->rcv_tskid));
    379363
    380                         /* 通信端点をロックを解除する。*/
    381                         syscall(sig_sem(cep->semid_lock));
    382 
    383                         /* å
    384 ¥åŠ›ãŒã‚るまでå¾
    385 ã¤ã€‚*/
     364                        /* 通信端点をロックを解除する。*/
     365                        syscall(sig_sem(cep->semid_lock));
     366
     367                        /* 入力があるまで待つ。*/
    386368                        if (cep->cb_netbuf != NULL) {
    387369
    388370                                /*
    389                                  *  ここにくる場合は、コールバック関数の中から
    390                                  *  udp_rcv_dat を呼び出していることになり、
    391                                  *  すでにå
    392 ¥åŠ›æ¸ˆã¿ã§ã‚る。
     371                                 *  ここにくる場合は、コールバック関数の中から
     372                                 *  udp_rcv_dat を呼び出していることになり、
     373                                 *  すでに入力済みである。
    393374                                 */
    394375                                input = cep->cb_netbuf;
     
    400381                                }
    401382
    402                         /* p_dstaddr を設定する。*/
     383                        /* p_dstaddr を設定する。*/
    403384                        uhoff = (uint_t)GET_UDP_HDR_OFFSET(input);
    404385                        udph = GET_UDP_HDR(input, uhoff);
     
    406387                        IN_COPY_TO_HOST(&p_dstaddr->ipaddr, input);
    407388
    408                         /* データをバッファに移す。*/
     389                        /* データをバッファに移す。*/
    409390                        ulen = ntohs(udph->ulen);
    410391                        if (ulen - UDP_HDR_SIZE > len)
Note: See TracChangeset for help on using the changeset viewer.