stubdom: permit compilation without lwip
Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>
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@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|