Skip to contentSkip to conversation

stubdom: permit compilation without lwip

PATCH New Samuel Thibault 1 participant 1 message Jun 6, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 stubdom: permit compilation without lwip

stubdom: permit compilation without lwip

extras/mini-os/lib/sys.c +21 -2
diff -r b320cfe1f10f extras/mini-os/lib/sys.c
@@ -43,7 +43,9 @@
 #include <stdlib.h>
 #include <math.h>
 
+#ifdef HAVE_LWIP
 #include <lwip/sockets.h>
+#endif
 #include <fs.h>
 
 #define debug(fmt, ...) \
@@ -240,8 +242,10 @@
 	    }
 	    return 0;
 	}
+#ifdef HAVE_LWIP
 	case FTYPE_SOCKET:
 	    return lwip_read(files[fd].socket.fd, buf, nbytes);
+#endif
 	case FTYPE_TAP: {
 	    ssize_t ret;
 	    ret = netfront_receive(files[fd].tap.dev, buf, nbytes);
@@ -299,8 +303,10 @@
 	    }
 	    return 0;
 	}
+#ifdef HAVE_LWIP
 	case FTYPE_SOCKET:
 	    return lwip_write(files[fd].socket.fd, (void*) buf, nbytes);
+#endif
 	case FTYPE_TAP:
 	    netfront_xmit(files[fd].tap.dev, (void*) buf, nbytes);
 	    return nbytes;
@@ -367,7 +373,7 @@
 {
     printk("close(%d)\n", fd);
     switch (files[fd].type) {
-	case FTYPE_CONSOLE:
+        default:
 	    files[fd].type = FTYPE_NONE;
 	    return 0;
 	case FTYPE_FILE: {
@@ -382,11 +388,13 @@
 	case FTYPE_XENBUS:
             xs_daemon_close((void*)(intptr_t) fd);
             return 0;
+#ifdef HAVE_LWIP
 	case FTYPE_SOCKET: {
 	    int res = lwip_close(files[fd].socket.fd);
 	    files[fd].type = FTYPE_NONE;
 	    return res;
 	}
+#endif
 	case FTYPE_XC:
 	    xc_interface_close(fd);
 	    return 0;
@@ -555,6 +563,7 @@
     va_end(ap);
 
     switch (cmd) {
+#ifdef HAVE_LWIP
 	case F_SETFL:
 	    if (files[fd].type == FTYPE_SOCKET && !(arg & ~O_NONBLOCK)) {
 		/* Only flag supported: non-blocking mode */
@@ -562,6 +571,7 @@
 		return lwip_ioctl(files[fd].socket.fd, FIONBIO, &nblock);
 	    }
 	    /* Fallthrough */
+#endif
 	default:
 	    printk("fcntl(%d, %d, %lx/%lo)\n", fd, cmd, arg, arg);
 	    errno = ENOSYS;
@@ -666,9 +676,12 @@
 /* Just poll without blocking */
 static int select_poll(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds)
 {
-    int i, n = 0, sock_n, sock_nfds = 0;
+    int i, n = 0;
+#ifdef HAVE_LWIP
+    int sock_n, sock_nfds = 0;
     fd_set sock_readfds, sock_writefds, sock_exceptfds;
     struct timeval timeout = { .tv_sec = 0, .tv_usec = 0};
+#endif
 
 #ifdef LIBC_VERBOSE
     static int nb;
@@ -678,6 +691,7 @@
     nb++;
 #endif
 
+#ifdef HAVE_LWIP
     /* first poll network */
     FD_ZERO(&sock_readfds);
     FD_ZERO(&sock_writefds);
@@ -704,6 +718,7 @@
     sock_n = lwip_select(sock_nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout);
     dump_set(nfds, &sock_readfds, &sock_writefds, &sock_exceptfds, &timeout);
     DEBUG("\n");
+#endif
 
     /* Then see others as well. */
     for (i = 0; i < nfds; i++) {
@@ -752,6 +767,7 @@
 	    FD_CLR(i, writefds);
 	    FD_CLR(i, exceptfds);
 	    break;
+#ifdef HAVE_LWIP
 	case FTYPE_SOCKET:
 	    if (FD_ISSET(i, readfds)) {
 	        /* Optimize no-network-packet case.  */
@@ -773,6 +789,7 @@
 		    FD_CLR(i, exceptfds);
             }
 	    break;
+#endif
 	}
 #ifdef LIBC_VERBOSE
 	if (FD_ISSET(i, readfds))
@@ -938,6 +955,7 @@
     return ret;
 }
 
+#ifdef HAVE_LWIP
 int socket(int domain, int type, int protocol)
 {
     int fd, res;
@@ -989,6 +1007,7 @@
 LWIP_STUB(ssize_t, send, (int s, void *buf, size_t len, int flags), (s, buf, len, flags))
 LWIP_STUB(ssize_t, sendto, (int s, void *buf, size_t len, int flags, struct sockaddr *to, socklen_t tolen), (s, buf, len, flags, to, tolen))
 LWIP_STUB(int, getsockname, (int s, struct sockaddr *name, socklen_t *namelen), (s, name, namelen))
+#endif
 
 int nanosleep(const struct timespec *req, struct timespec *rem)
 {
extras/mini-os/main.c +5 -0
@@ -45,7 +44,9 @@
 
     sparse((unsigned long) &__app_bss_start, &__app_bss_end - &__app_bss_start);
+#ifdef HAVE_LWIP
     start_networking();
+#endif
     init_fs_frontend();
 
 #ifdef CONFIG_QEMU
     if (!fs_import) {
@@ -162,6 +163,9 @@
     close_all_files();
     __libc_fini_array();
     printk("main returned %d\n", ret);
+#ifdef HAVE_LWIP
+    stop_networking();
+#endif
     unbind_all_ports();
     if (!ret) {
 	/* No problem, just shutdown.  */