[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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |