From: Samuel Thibault <samuel.thibault@eu.citrix.com>
To: Xen-devel@lists.xensource.com
Subject: [PATCH] stubdom: permit compilation without lwip
Date: Fri, 6 Jun 2008 11:46:04 +0100 [thread overview]
Message-ID: <20080606104604.GE4637@implementation.uk.xensource.com> (raw)
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. */
reply other threads:[~2008-06-06 10:46 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080606104604.GE4637@implementation.uk.xensource.com \
--to=samuel.thibault@eu.citrix.com \
--cc=Xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.