Changeset 4a9b897 in rtems


Ignore:
Timestamp:
Jan 21, 2000, 3:11:40 PM (20 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
d7f33012
Parents:
c941a98
Message:

Patch from Eric Norum <eric@…> at the request of Jake
Janovetz <janovetz@…> to return a status from
network initialization rather than panic'ing. It changes a bunch
of rtems_panics to printfs and returns a status from
rtems_bsdnet_initialize_network().

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libnetworking/rtems/rtems_glue.c

    rc941a98 r4a9b897  
    124124 * Do the initializations required by the BSD code
    125125 */
    126 static void
    127 bsd_init ()
     126static int
     127bsd_init (void)
    128128{
    129129        int i;
     
    135135        p = malloc ((nmbclusters*MCLBYTES)+MCLBYTES-1);
    136136        p = (char *)(((unsigned long)p + (MCLBYTES-1)) & ~(MCLBYTES-1));
    137         if (p == NULL)
    138                 rtems_panic ("Can't get network cluster memory.");
     137        if (p == NULL) {
     138                printf ("Can't get network cluster memory.\n");
     139                return -1;
     140        }
    139141        mbutl = (struct mbuf *)p;
    140142        for (i = 0; i < nmbclusters; i++) {
     
    146148        mbstat.m_clusters = nmbclusters;
    147149        mclrefcnt = malloc (nmbclusters);
    148         if (mclrefcnt == NULL)
    149                 rtems_panic ("Can't get mbuf cluster reference counts memory.");
     150        if (mclrefcnt == NULL) {
     151                printf ("Can't get mbuf cluster reference counts memory.\n");
     152                return -1;
     153        }
    150154        memset (mclrefcnt, '\0', nmbclusters);
    151155
     
    156160        p = malloc(nmbuf * MSIZE + MSIZE - 1);
    157161        p = (char *)(((unsigned int)p + MSIZE - 1) & ~(MSIZE - 1));
    158         if (p == NULL)
    159                 rtems_panic ("Can't get network memory.");
     162        if (p == NULL) {
     163                printf ("Can't get network memory.\n");
     164                return -1;
     165        }
    160166        for (i = 0; i < nmbuf; i++) {
    161167                ((struct mbuf *)p)->m_next = mmbfree;
     
    184190         */
    185191        ifinit (NULL);
     192        return 0;
    186193}
    187194
     
    189196 * Initialize and start network operations
    190197 */
    191 static void
     198static int
    192199rtems_bsdnet_initialize (void)
    193200{
     
    222229                                        0,
    223230                                        &networkSemaphore);
    224         if (sc != RTEMS_SUCCESSFUL)
    225                 rtems_panic ("Can't create network seamphore: `%s'\n", rtems_status_text (sc));
     231        if (sc != RTEMS_SUCCESSFUL) {
     232                printf ("Can't create network seamphore: `%s'\n", rtems_status_text (sc));
     233                return -1;
     234        }
    226235
    227236        /*
     
    241250         * Set up BSD-style sockets
    242251         */
    243         bsd_init ();
     252        if (bsd_init () < 0)
     253                return -1;
    244254
    245255        /*
     
    252262         */
    253263        rtems_bsdnet_semaphore_release ();
    254 }
    255 
    256 rtems_id TaskWithSemaphore;
     264        return 0;
     265}
     266
    257267/*
    258268 * Obtain network mutex
     
    264274
    265275        sc = rtems_semaphore_obtain (networkSemaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    266 rtems_task_ident (RTEMS_SELF, 0, &TaskWithSemaphore);
    267276        if (sc != RTEMS_SUCCESSFUL)
    268277                rtems_panic ("Can't obtain network semaphore: `%s'\n", rtems_status_text (sc));
     
    277286        rtems_status_code sc;
    278287
    279 TaskWithSemaphore = 0;
    280288        sc = rtems_semaphore_release (networkSemaphore);
    281289        if (sc != RTEMS_SUCCESSFUL)
     
    727735}
    728736
    729 static void
     737static int
    730738rtems_bsdnet_setup (void)
    731739{
     
    771779         */
    772780        s = socket (AF_INET, SOCK_DGRAM, 0);
    773         if (s < 0)
    774                 rtems_panic ("Can't create initial socket: %s", strerror (errno));
     781        if (s < 0) {
     782                printf ("Can't create initial socket: %s\n", strerror (errno));
     783                return -1;
     784        }
    775785        for (ifp = rtems_bsdnet_config.ifconfig ; ifp ; ifp = ifp->next) {
    776786                if (ifp->ip_address == NULL)
     
    781791                 */
    782792                strcpy (ifreq.ifr_name, ifp->name);
    783                 if (ioctl (s, SIOCGIFFLAGS, &ifreq) < 0)
    784                         rtems_panic ("Can't get %s flags: %s", ifp->name, strerror (errno));
     793                if (ioctl (s, SIOCGIFFLAGS, &ifreq) < 0) {
     794                        printf ("Can't get %s flags: %s\n", ifp->name, strerror (errno));
     795                        return -1;
     796                }
    785797
    786798                /*
     
    788800                 */
    789801                ifreq.ifr_flags |= IFF_UP;
    790                 if (ioctl (s, SIOCSIFFLAGS, &ifreq) < 0)
    791                         rtems_panic ("Can't bring %s up: %s", ifp->name, strerror (errno));
     802                if (ioctl (s, SIOCSIFFLAGS, &ifreq) < 0) {
     803                        printf ("Can't bring %s up: %s\n", ifp->name, strerror (errno));
     804                        return -1;
     805                }
    792806
    793807                /*
     
    799813                netmask.sin_addr.s_addr = inet_addr (ifp->ip_netmask);
    800814                memcpy (&ifreq.ifr_addr, &netmask, sizeof netmask);
    801                 if (ioctl (s, SIOCSIFNETMASK, &ifreq) < 0)
    802                         rtems_panic ("Can't set %s netmask: %s", ifp->name, strerror (errno));
     815                if (ioctl (s, SIOCSIFNETMASK, &ifreq) < 0) {
     816                        printf ("Can't set %s netmask: %s\n", ifp->name, strerror (errno));
     817                        return -1;
     818                }
    803819
    804820                /*
     
    810826                address.sin_addr.s_addr = inet_addr (ifp->ip_address);
    811827                memcpy (&ifreq.ifr_addr, &address, sizeof address);
    812                 if (ioctl (s, SIOCSIFADDR, &ifreq) < 0)
    813                         rtems_panic ("Can't set %s address: %s", ifp->name, strerror (errno));
     828                if (ioctl (s, SIOCSIFADDR, &ifreq) < 0) {
     829                        printf ("Can't set %s address: %s\n", ifp->name, strerror (errno));
     830                        return -1;
     831                }
    814832
    815833                /*
     
    845863                                (struct sockaddr *)&gateway,
    846864                                (struct sockaddr *)&netmask,
    847                                 (RTF_UP | RTF_GATEWAY | RTF_STATIC), NULL) < 0)
    848                         rtems_panic ("Can't set default route: %s", strerror (errno));
    849         }
     865                                (RTF_UP | RTF_GATEWAY | RTF_STATIC), NULL) < 0) {
     866                        printf ("Can't set default route: %s\n", strerror (errno));
     867                        return -1;
     868                }
     869        }
     870        return 0;
    850871}
    851872
     
    862883         * Initialize BSD network data structures.
    863884         */
    864         rtems_bsdnet_initialize ();
     885        if (rtems_bsdnet_initialize () < 0)
     886                return -1;
    865887
    866888        /*
     
    876898         * Bring up the network
    877899         */
    878         rtems_bsdnet_setup ();
     900        if (rtems_bsdnet_setup () < 0)
     901                return -1;
    879902        if (rtems_bsdnet_config.bootp)
    880903                (*rtems_bsdnet_config.bootp)();
     
    893916
    894917        if (cp == NULL) {
    895                 printf ("No network driver name");
     918                printf ("No network driver name.\n");
    896919                return -1;
    897920        }
     
    907930                                        char *unitName = malloc (len);
    908931                                        if (unitName == NULL) {
    909                                                 printf ("No memory");
     932                                                printf ("No memory.\n");
    910933                                                return -1;
    911934                                        }
     
    921944                }
    922945        }
    923         printf ("Bad network driver name `%s'", config->name);
     946        printf ("Bad network driver name `%s'.\n", config->name);
    924947        return -1;
    925948}
  • c/src/libnetworking/rtems/rtems_glue.c

    rc941a98 r4a9b897  
    124124 * Do the initializations required by the BSD code
    125125 */
    126 static void
    127 bsd_init ()
     126static int
     127bsd_init (void)
    128128{
    129129        int i;
     
    135135        p = malloc ((nmbclusters*MCLBYTES)+MCLBYTES-1);
    136136        p = (char *)(((unsigned long)p + (MCLBYTES-1)) & ~(MCLBYTES-1));
    137         if (p == NULL)
    138                 rtems_panic ("Can't get network cluster memory.");
     137        if (p == NULL) {
     138                printf ("Can't get network cluster memory.\n");
     139                return -1;
     140        }
    139141        mbutl = (struct mbuf *)p;
    140142        for (i = 0; i < nmbclusters; i++) {
     
    146148        mbstat.m_clusters = nmbclusters;
    147149        mclrefcnt = malloc (nmbclusters);
    148         if (mclrefcnt == NULL)
    149                 rtems_panic ("Can't get mbuf cluster reference counts memory.");
     150        if (mclrefcnt == NULL) {
     151                printf ("Can't get mbuf cluster reference counts memory.\n");
     152                return -1;
     153        }
    150154        memset (mclrefcnt, '\0', nmbclusters);
    151155
     
    156160        p = malloc(nmbuf * MSIZE + MSIZE - 1);
    157161        p = (char *)(((unsigned int)p + MSIZE - 1) & ~(MSIZE - 1));
    158         if (p == NULL)
    159                 rtems_panic ("Can't get network memory.");
     162        if (p == NULL) {
     163                printf ("Can't get network memory.\n");
     164                return -1;
     165        }
    160166        for (i = 0; i < nmbuf; i++) {
    161167                ((struct mbuf *)p)->m_next = mmbfree;
     
    184190         */
    185191        ifinit (NULL);
     192        return 0;
    186193}
    187194
     
    189196 * Initialize and start network operations
    190197 */
    191 static void
     198static int
    192199rtems_bsdnet_initialize (void)
    193200{
     
    222229                                        0,
    223230                                        &networkSemaphore);
    224         if (sc != RTEMS_SUCCESSFUL)
    225                 rtems_panic ("Can't create network seamphore: `%s'\n", rtems_status_text (sc));
     231        if (sc != RTEMS_SUCCESSFUL) {
     232                printf ("Can't create network seamphore: `%s'\n", rtems_status_text (sc));
     233                return -1;
     234        }
    226235
    227236        /*
     
    241250         * Set up BSD-style sockets
    242251         */
    243         bsd_init ();
     252        if (bsd_init () < 0)
     253                return -1;
    244254
    245255        /*
     
    252262         */
    253263        rtems_bsdnet_semaphore_release ();
    254 }
    255 
    256 rtems_id TaskWithSemaphore;
     264        return 0;
     265}
     266
    257267/*
    258268 * Obtain network mutex
     
    264274
    265275        sc = rtems_semaphore_obtain (networkSemaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    266 rtems_task_ident (RTEMS_SELF, 0, &TaskWithSemaphore);
    267276        if (sc != RTEMS_SUCCESSFUL)
    268277                rtems_panic ("Can't obtain network semaphore: `%s'\n", rtems_status_text (sc));
     
    277286        rtems_status_code sc;
    278287
    279 TaskWithSemaphore = 0;
    280288        sc = rtems_semaphore_release (networkSemaphore);
    281289        if (sc != RTEMS_SUCCESSFUL)
     
    727735}
    728736
    729 static void
     737static int
    730738rtems_bsdnet_setup (void)
    731739{
     
    771779         */
    772780        s = socket (AF_INET, SOCK_DGRAM, 0);
    773         if (s < 0)
    774                 rtems_panic ("Can't create initial socket: %s", strerror (errno));
     781        if (s < 0) {
     782                printf ("Can't create initial socket: %s\n", strerror (errno));
     783                return -1;
     784        }
    775785        for (ifp = rtems_bsdnet_config.ifconfig ; ifp ; ifp = ifp->next) {
    776786                if (ifp->ip_address == NULL)
     
    781791                 */
    782792                strcpy (ifreq.ifr_name, ifp->name);
    783                 if (ioctl (s, SIOCGIFFLAGS, &ifreq) < 0)
    784                         rtems_panic ("Can't get %s flags: %s", ifp->name, strerror (errno));
     793                if (ioctl (s, SIOCGIFFLAGS, &ifreq) < 0) {
     794                        printf ("Can't get %s flags: %s\n", ifp->name, strerror (errno));
     795                        return -1;
     796                }
    785797
    786798                /*
     
    788800                 */
    789801                ifreq.ifr_flags |= IFF_UP;
    790                 if (ioctl (s, SIOCSIFFLAGS, &ifreq) < 0)
    791                         rtems_panic ("Can't bring %s up: %s", ifp->name, strerror (errno));
     802                if (ioctl (s, SIOCSIFFLAGS, &ifreq) < 0) {
     803                        printf ("Can't bring %s up: %s\n", ifp->name, strerror (errno));
     804                        return -1;
     805                }
    792806
    793807                /*
     
    799813                netmask.sin_addr.s_addr = inet_addr (ifp->ip_netmask);
    800814                memcpy (&ifreq.ifr_addr, &netmask, sizeof netmask);
    801                 if (ioctl (s, SIOCSIFNETMASK, &ifreq) < 0)
    802                         rtems_panic ("Can't set %s netmask: %s", ifp->name, strerror (errno));
     815                if (ioctl (s, SIOCSIFNETMASK, &ifreq) < 0) {
     816                        printf ("Can't set %s netmask: %s\n", ifp->name, strerror (errno));
     817                        return -1;
     818                }
    803819
    804820                /*
     
    810826                address.sin_addr.s_addr = inet_addr (ifp->ip_address);
    811827                memcpy (&ifreq.ifr_addr, &address, sizeof address);
    812                 if (ioctl (s, SIOCSIFADDR, &ifreq) < 0)
    813                         rtems_panic ("Can't set %s address: %s", ifp->name, strerror (errno));
     828                if (ioctl (s, SIOCSIFADDR, &ifreq) < 0) {
     829                        printf ("Can't set %s address: %s\n", ifp->name, strerror (errno));
     830                        return -1;
     831                }
    814832
    815833                /*
     
    845863                                (struct sockaddr *)&gateway,
    846864                                (struct sockaddr *)&netmask,
    847                                 (RTF_UP | RTF_GATEWAY | RTF_STATIC), NULL) < 0)
    848                         rtems_panic ("Can't set default route: %s", strerror (errno));
    849         }
     865                                (RTF_UP | RTF_GATEWAY | RTF_STATIC), NULL) < 0) {
     866                        printf ("Can't set default route: %s\n", strerror (errno));
     867                        return -1;
     868                }
     869        }
     870        return 0;
    850871}
    851872
     
    862883         * Initialize BSD network data structures.
    863884         */
    864         rtems_bsdnet_initialize ();
     885        if (rtems_bsdnet_initialize () < 0)
     886                return -1;
    865887
    866888        /*
     
    876898         * Bring up the network
    877899         */
    878         rtems_bsdnet_setup ();
     900        if (rtems_bsdnet_setup () < 0)
     901                return -1;
    879902        if (rtems_bsdnet_config.bootp)
    880903                (*rtems_bsdnet_config.bootp)();
     
    893916
    894917        if (cp == NULL) {
    895                 printf ("No network driver name");
     918                printf ("No network driver name.\n");
    896919                return -1;
    897920        }
     
    907930                                        char *unitName = malloc (len);
    908931                                        if (unitName == NULL) {
    909                                                 printf ("No memory");
     932                                                printf ("No memory.\n");
    910933                                                return -1;
    911934                                        }
     
    921944                }
    922945        }
    923         printf ("Bad network driver name `%s'", config->name);
     946        printf ("Bad network driver name `%s'.\n", config->name);
    924947        return -1;
    925948}
  • cpukit/libnetworking/rtems/rtems_glue.c

    rc941a98 r4a9b897  
    124124 * Do the initializations required by the BSD code
    125125 */
    126 static void
    127 bsd_init ()
     126static int
     127bsd_init (void)
    128128{
    129129        int i;
     
    135135        p = malloc ((nmbclusters*MCLBYTES)+MCLBYTES-1);
    136136        p = (char *)(((unsigned long)p + (MCLBYTES-1)) & ~(MCLBYTES-1));
    137         if (p == NULL)
    138                 rtems_panic ("Can't get network cluster memory.");
     137        if (p == NULL) {
     138                printf ("Can't get network cluster memory.\n");
     139                return -1;
     140        }
    139141        mbutl = (struct mbuf *)p;
    140142        for (i = 0; i < nmbclusters; i++) {
     
    146148        mbstat.m_clusters = nmbclusters;
    147149        mclrefcnt = malloc (nmbclusters);
    148         if (mclrefcnt == NULL)
    149                 rtems_panic ("Can't get mbuf cluster reference counts memory.");
     150        if (mclrefcnt == NULL) {
     151                printf ("Can't get mbuf cluster reference counts memory.\n");
     152                return -1;
     153        }
    150154        memset (mclrefcnt, '\0', nmbclusters);
    151155
     
    156160        p = malloc(nmbuf * MSIZE + MSIZE - 1);
    157161        p = (char *)(((unsigned int)p + MSIZE - 1) & ~(MSIZE - 1));
    158         if (p == NULL)
    159                 rtems_panic ("Can't get network memory.");
     162        if (p == NULL) {
     163                printf ("Can't get network memory.\n");
     164                return -1;
     165        }
    160166        for (i = 0; i < nmbuf; i++) {
    161167                ((struct mbuf *)p)->m_next = mmbfree;
     
    184190         */
    185191        ifinit (NULL);
     192        return 0;
    186193}
    187194
     
    189196 * Initialize and start network operations
    190197 */
    191 static void
     198static int
    192199rtems_bsdnet_initialize (void)
    193200{
     
    222229                                        0,
    223230                                        &networkSemaphore);
    224         if (sc != RTEMS_SUCCESSFUL)
    225                 rtems_panic ("Can't create network seamphore: `%s'\n", rtems_status_text (sc));
     231        if (sc != RTEMS_SUCCESSFUL) {
     232                printf ("Can't create network seamphore: `%s'\n", rtems_status_text (sc));
     233                return -1;
     234        }
    226235
    227236        /*
     
    241250         * Set up BSD-style sockets
    242251         */
    243         bsd_init ();
     252        if (bsd_init () < 0)
     253                return -1;
    244254
    245255        /*
     
    252262         */
    253263        rtems_bsdnet_semaphore_release ();
    254 }
    255 
    256 rtems_id TaskWithSemaphore;
     264        return 0;
     265}
     266
    257267/*
    258268 * Obtain network mutex
     
    264274
    265275        sc = rtems_semaphore_obtain (networkSemaphore, RTEMS_WAIT, RTEMS_NO_TIMEOUT);
    266 rtems_task_ident (RTEMS_SELF, 0, &TaskWithSemaphore);
    267276        if (sc != RTEMS_SUCCESSFUL)
    268277                rtems_panic ("Can't obtain network semaphore: `%s'\n", rtems_status_text (sc));
     
    277286        rtems_status_code sc;
    278287
    279 TaskWithSemaphore = 0;
    280288        sc = rtems_semaphore_release (networkSemaphore);
    281289        if (sc != RTEMS_SUCCESSFUL)
     
    727735}
    728736
    729 static void
     737static int
    730738rtems_bsdnet_setup (void)
    731739{
     
    771779         */
    772780        s = socket (AF_INET, SOCK_DGRAM, 0);
    773         if (s < 0)
    774                 rtems_panic ("Can't create initial socket: %s", strerror (errno));
     781        if (s < 0) {
     782                printf ("Can't create initial socket: %s\n", strerror (errno));
     783                return -1;
     784        }
    775785        for (ifp = rtems_bsdnet_config.ifconfig ; ifp ; ifp = ifp->next) {
    776786                if (ifp->ip_address == NULL)
     
    781791                 */
    782792                strcpy (ifreq.ifr_name, ifp->name);
    783                 if (ioctl (s, SIOCGIFFLAGS, &ifreq) < 0)
    784                         rtems_panic ("Can't get %s flags: %s", ifp->name, strerror (errno));
     793                if (ioctl (s, SIOCGIFFLAGS, &ifreq) < 0) {
     794                        printf ("Can't get %s flags: %s\n", ifp->name, strerror (errno));
     795                        return -1;
     796                }
    785797
    786798                /*
     
    788800                 */
    789801                ifreq.ifr_flags |= IFF_UP;
    790                 if (ioctl (s, SIOCSIFFLAGS, &ifreq) < 0)
    791                         rtems_panic ("Can't bring %s up: %s", ifp->name, strerror (errno));
     802                if (ioctl (s, SIOCSIFFLAGS, &ifreq) < 0) {
     803                        printf ("Can't bring %s up: %s\n", ifp->name, strerror (errno));
     804                        return -1;
     805                }
    792806
    793807                /*
     
    799813                netmask.sin_addr.s_addr = inet_addr (ifp->ip_netmask);
    800814                memcpy (&ifreq.ifr_addr, &netmask, sizeof netmask);
    801                 if (ioctl (s, SIOCSIFNETMASK, &ifreq) < 0)
    802                         rtems_panic ("Can't set %s netmask: %s", ifp->name, strerror (errno));
     815                if (ioctl (s, SIOCSIFNETMASK, &ifreq) < 0) {
     816                        printf ("Can't set %s netmask: %s\n", ifp->name, strerror (errno));
     817                        return -1;
     818                }
    803819
    804820                /*
     
    810826                address.sin_addr.s_addr = inet_addr (ifp->ip_address);
    811827                memcpy (&ifreq.ifr_addr, &address, sizeof address);
    812                 if (ioctl (s, SIOCSIFADDR, &ifreq) < 0)
    813                         rtems_panic ("Can't set %s address: %s", ifp->name, strerror (errno));
     828                if (ioctl (s, SIOCSIFADDR, &ifreq) < 0) {
     829                        printf ("Can't set %s address: %s\n", ifp->name, strerror (errno));
     830                        return -1;
     831                }
    814832
    815833                /*
     
    845863                                (struct sockaddr *)&gateway,
    846864                                (struct sockaddr *)&netmask,
    847                                 (RTF_UP | RTF_GATEWAY | RTF_STATIC), NULL) < 0)
    848                         rtems_panic ("Can't set default route: %s", strerror (errno));
    849         }
     865                                (RTF_UP | RTF_GATEWAY | RTF_STATIC), NULL) < 0) {
     866                        printf ("Can't set default route: %s\n", strerror (errno));
     867                        return -1;
     868                }
     869        }
     870        return 0;
    850871}
    851872
     
    862883         * Initialize BSD network data structures.
    863884         */
    864         rtems_bsdnet_initialize ();
     885        if (rtems_bsdnet_initialize () < 0)
     886                return -1;
    865887
    866888        /*
     
    876898         * Bring up the network
    877899         */
    878         rtems_bsdnet_setup ();
     900        if (rtems_bsdnet_setup () < 0)
     901                return -1;
    879902        if (rtems_bsdnet_config.bootp)
    880903                (*rtems_bsdnet_config.bootp)();
     
    893916
    894917        if (cp == NULL) {
    895                 printf ("No network driver name");
     918                printf ("No network driver name.\n");
    896919                return -1;
    897920        }
     
    907930                                        char *unitName = malloc (len);
    908931                                        if (unitName == NULL) {
    909                                                 printf ("No memory");
     932                                                printf ("No memory.\n");
    910933                                                return -1;
    911934                                        }
     
    921944                }
    922945        }
    923         printf ("Bad network driver name `%s'", config->name);
     946        printf ("Bad network driver name `%s'.\n", config->name);
    924947        return -1;
    925948}
Note: See TracChangeset for help on using the changeset viewer.