[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] stubdom: permit compilation without lwip



# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1213001192 -3600
# Node ID caa2b155a42d853a25aedc2eae14d44ace662647
# Parent  07ba9aeee3470a60114cfa97c38545014e0dc44a
stubdom: permit compilation without lwip

Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
---
 extras/mini-os/lib/sys.c |   23 +++++++++++++++++++++--
 extras/mini-os/main.c    |    5 +++++
 2 files changed, 26 insertions(+), 2 deletions(-)

diff -r 07ba9aeee347 -r caa2b155a42d extras/mini-os/lib/sys.c
--- a/extras/mini-os/lib/sys.c  Mon Jun 09 09:46:16 2008 +0100
+++ b/extras/mini-os/lib/sys.c  Mon Jun 09 09:46:32 2008 +0100
@@ -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 @@ int read(int fd, void *buf, size_t nbyte
            }
            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 @@ int write(int fd, const void *buf, size_
            }
            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 @@ int close(int fd)
 {
     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 @@ int close(int fd)
        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 @@ int fcntl(int fd, int cmd, ...)
     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 @@ int fcntl(int fd, int cmd, ...)
                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 @@ static void dump_set(int nfds, fd_set *r
 /* 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 @@ static int select_poll(int nfds, fd_set 
     nb++;
 #endif
 
+#ifdef HAVE_LWIP
     /* first poll network */
     FD_ZERO(&sock_readfds);
     FD_ZERO(&sock_writefds);
@@ -704,6 +718,7 @@ static int select_poll(int nfds, fd_set 
     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 @@ static int select_poll(int nfds, fd_set 
            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 @@ static int select_poll(int nfds, fd_set 
                    FD_CLR(i, exceptfds);
             }
            break;
+#endif
        }
 #ifdef LIBC_VERBOSE
        if (FD_ISSET(i, readfds))
@@ -938,6 +955,7 @@ out:
     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 *b
 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)
 {
diff -r 07ba9aeee347 -r caa2b155a42d extras/mini-os/main.c
--- a/extras/mini-os/main.c     Mon Jun 09 09:46:16 2008 +0100
+++ b/extras/mini-os/main.c     Mon Jun 09 09:46:32 2008 +0100
@@ -57,7 +57,9 @@ static void call_main(void *p)
     //sleep(1);
 
     sparse((unsigned long) &__app_bss_start, &__app_bss_end - 
&__app_bss_start);
+#ifdef HAVE_LWIP
     start_networking();
+#endif
     init_fs_frontend();
 
 #ifdef CONFIG_QEMU
@@ -162,6 +164,9 @@ void _exit(int ret)
     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.  */

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.