Samuel Thibault
2008-Jun-06 10:46 UTC
[Xen-devel] [PATCH] stubdom: permit compilation without lwip
stubdom: permit compilation without lwip Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com> diff -r b320cfe1f10f extras/mini-os/lib/sys.c --- a/extras/mini-os/lib/sys.c Thu Jun 05 13:04:07 2008 +0100 +++ b/extras/mini-os/lib/sys.c Fri Jun 06 11:28:09 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 @@ } 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) { --- a/extras/mini-os/main.c Thu Jun 05 13:04:07 2008 +0100 +++ b/extras/mini-os/main.c Fri Jun 06 11:28:09 2008 +0100 @@ -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. */ _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel