Module Name:    src
Committed By:   justin
Date:           Wed Apr  2 17:09:23 UTC 2014

Modified Files:
        src/lib/librumpclient: rumpclient.c
        src/lib/librumphijack: hijack.c
        src/lib/librumpuser: rumpuser_dl.c rumpuser_port.h rumpuser_pth.c
        src/sys/rump/include/rump: rump.h

Log Message:
Add Android support for rump kernel.

Reviewed by pooka@


To generate a diff of this commit:
cvs rdiff -u -r1.59 -r1.60 src/lib/librumpclient/rumpclient.c
cvs rdiff -u -r1.106 -r1.107 src/lib/librumphijack/hijack.c
cvs rdiff -u -r1.27 -r1.28 src/lib/librumpuser/rumpuser_dl.c
cvs rdiff -u -r1.31 -r1.32 src/lib/librumpuser/rumpuser_port.h
cvs rdiff -u -r1.39 -r1.40 src/lib/librumpuser/rumpuser_pth.c
cvs rdiff -u -r1.61 -r1.62 src/sys/rump/include/rump/rump.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/librumpclient/rumpclient.c
diff -u src/lib/librumpclient/rumpclient.c:1.59 src/lib/librumpclient/rumpclient.c:1.60
--- src/lib/librumpclient/rumpclient.c:1.59	Wed Apr  2 15:04:19 2014
+++ src/lib/librumpclient/rumpclient.c	Wed Apr  2 17:09:23 2014
@@ -1,4 +1,4 @@
-/*      $NetBSD: rumpclient.c,v 1.59 2014/04/02 15:04:19 pooka Exp $	*/
+/*      $NetBSD: rumpclient.c,v 1.60 2014/04/02 17:09:23 justin Exp $	*/
 
 /*
  * Copyright (c) 2010, 2011 Antti Kantee.  All Rights Reserved.
@@ -46,11 +46,11 @@
 #ifdef __NetBSD__
 #define USE_KQUEUE
 #endif
-#ifdef __linux__
+#if defined(__linux__) && !defined(__ANDROID__)
 #define USE_SIGNALFD
 #endif
 
-__RCSID("$NetBSD: rumpclient.c,v 1.59 2014/04/02 15:04:19 pooka Exp $");
+__RCSID("$NetBSD: rumpclient.c,v 1.60 2014/04/02 17:09:23 justin Exp $");
 
 #include <sys/param.h>
 #include <sys/mman.h>
@@ -86,9 +86,17 @@ int	(*host_socket)(int, int, int);
 int	(*host_close)(int);
 int	(*host_connect)(int, const struct sockaddr *, socklen_t);
 int	(*host_fcntl)(int, int, ...);
+#ifdef __ANDROID__
+int	(*host_poll)(struct pollfd *, nfds_t, long);
+#else
 int	(*host_poll)(struct pollfd *, nfds_t, int);
+#endif
 ssize_t	(*host_read)(int, void *, size_t);
+#ifdef __ANDROID__
+int	(*host_sendmsg)(int, const struct msghdr *, unsigned int);
+#else
 ssize_t (*host_sendmsg)(int, const struct msghdr *, int);
+#endif
 int	(*host_setsockopt)(int, int, int, const void *, socklen_t);
 int	(*host_dup)(int);
 

Index: src/lib/librumphijack/hijack.c
diff -u src/lib/librumphijack/hijack.c:1.106 src/lib/librumphijack/hijack.c:1.107
--- src/lib/librumphijack/hijack.c:1.106	Tue Sep 10 16:53:06 2013
+++ src/lib/librumphijack/hijack.c	Wed Apr  2 17:09:23 2014
@@ -1,4 +1,4 @@
-/*      $NetBSD: hijack.c,v 1.106 2013/09/10 16:53:06 pooka Exp $	*/
+/*      $NetBSD: hijack.c,v 1.107 2014/04/02 17:09:23 justin Exp $	*/
 
 /*-
  * Copyright (c) 2011 Antti Kantee.  All Rights Reserved.
@@ -28,7 +28,7 @@
 #include <rump/rumpuser_port.h>
 
 #if !defined(lint)
-__RCSID("$NetBSD: hijack.c,v 1.106 2013/09/10 16:53:06 pooka Exp $");
+__RCSID("$NetBSD: hijack.c,v 1.107 2014/04/02 17:09:23 justin Exp $");
 #endif
 
 #include <sys/param.h>
@@ -38,10 +38,13 @@ __RCSID("$NetBSD: hijack.c,v 1.106 2013/
 #include <sys/mount.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
-#include <sys/statvfs.h>
 #include <sys/time.h>
 #include <sys/uio.h>
 
+#ifdef PLATFORM_HAS_NBVFSSTAT
+#include <sys/statvfs.h>
+#endif
+
 #ifdef PLATFORM_HAS_KQUEUE
 #include <sys/event.h>
 #endif

Index: src/lib/librumpuser/rumpuser_dl.c
diff -u src/lib/librumpuser/rumpuser_dl.c:1.27 src/lib/librumpuser/rumpuser_dl.c:1.28
--- src/lib/librumpuser/rumpuser_dl.c:1.27	Fri Mar 14 01:18:39 2014
+++ src/lib/librumpuser/rumpuser_dl.c	Wed Apr  2 17:09:23 2014
@@ -1,4 +1,4 @@
-/*      $NetBSD: rumpuser_dl.c,v 1.27 2014/03/14 01:18:39 justin Exp $	*/
+/*      $NetBSD: rumpuser_dl.c,v 1.28 2014/04/02 17:09:23 justin Exp $	*/
 
 /*
  * Copyright (c) 2009 Antti Kantee.  All Rights Reserved.
@@ -40,7 +40,7 @@
 #include "rumpuser_port.h"
 
 #if !defined(lint)
-__RCSID("$NetBSD: rumpuser_dl.c,v 1.27 2014/03/14 01:18:39 justin Exp $");
+__RCSID("$NetBSD: rumpuser_dl.c,v 1.28 2014/04/02 17:09:23 justin Exp $");
 #endif /* !lint */
 
 #include <sys/types.h>
@@ -59,8 +59,8 @@ __RCSID("$NetBSD: rumpuser_dl.c,v 1.27 2
 #include <rump/rumpuser.h>
 
 #if defined(__ELF__) && (defined(__NetBSD__) || defined(__FreeBSD__)	\
-    || (defined(__sun__) && defined(__svr4__))) || defined(__linux__)	\
-    || defined(__DragonFly__)
+    || (defined(__sun__) && defined(__svr4__))) || defined(__DragonFly__)	\
+    || (defined(__linux__) && !defined(__ANDROID__))
 #include <elf.h>
 #include <link.h>
 

Index: src/lib/librumpuser/rumpuser_port.h
diff -u src/lib/librumpuser/rumpuser_port.h:1.31 src/lib/librumpuser/rumpuser_port.h:1.32
--- src/lib/librumpuser/rumpuser_port.h:1.31	Fri Mar 21 16:03:35 2014
+++ src/lib/librumpuser/rumpuser_port.h	Wed Apr  2 17:09:23 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpuser_port.h,v 1.31 2014/03/21 16:03:35 pooka Exp $	*/
+/*	$NetBSD: rumpuser_port.h,v 1.32 2014/04/02 17:09:23 justin Exp $	*/
 
 /*
  * Portability header for non-NetBSD platforms.
@@ -42,8 +42,15 @@
 #define PLATFORM_HAS_NBVFSSTAT
 #endif /* __NetBSD__ */
 
+#ifndef MIN
+#define MIN(a,b)        ((/*CONSTCOND*/(a)<(b))?(a):(b))
+#endif
+#ifndef MAX
+#define MAX(a,b)        ((/*CONSTCOND*/(a)>(b))?(a):(b))
+#endif
+
 /* might not be 100% accurate, maybe need to revisit later */
-#if defined(__linux__) || defined(__sun__)
+#if (defined(__linux__) && !defined(__ANDROID__)) || defined(__sun__)
 #define HAVE_CLOCK_NANOSLEEP
 #endif
 
@@ -54,6 +61,22 @@
 #include <features.h>
 #endif
 
+#ifdef __ANDROID__
+#include <stdint.h>
+typedef uint16_t in_port_t;
+#include <sys/select.h>
+#define atomic_inc_uint(x)  __sync_fetch_and_add(x, 1)
+#define atomic_dec_uint(x)  __sync_fetch_and_sub(x, 1)
+static inline int getsubopt(char **optionp, char * const *tokens, char **valuep);
+static inline int
+getsubopt(char **optionp, char * const *tokens, char **valuep)
+{
+
+	/* TODO make a definition */
+	return -1;
+}
+#endif
+
 #if defined(__sun__)
 #  if defined(RUMPUSER_NO_FILE_OFFSET_BITS)
 #    undef _FILE_OFFSET_BITS
@@ -226,7 +249,7 @@ posix_memalign(void **ptr, size_t align,
 #define MSG_NOSIGNAL 0
 #endif
 
-#if defined(__sun__) && !defined(RUMP_REGISTER_T)
+#if (defined(__sun__) || defined(__ANDROID__)) && !defined(RUMP_REGISTER_T)
 #define RUMP_REGISTER_T long
 typedef RUMP_REGISTER_T register_t;
 #endif

Index: src/lib/librumpuser/rumpuser_pth.c
diff -u src/lib/librumpuser/rumpuser_pth.c:1.39 src/lib/librumpuser/rumpuser_pth.c:1.40
--- src/lib/librumpuser/rumpuser_pth.c:1.39	Fri Mar 21 16:03:07 2014
+++ src/lib/librumpuser/rumpuser_pth.c	Wed Apr  2 17:09:23 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpuser_pth.c,v 1.39 2014/03/21 16:03:07 pooka Exp $	*/
+/*	$NetBSD: rumpuser_pth.c,v 1.40 2014/04/02 17:09:23 justin Exp $	*/
 
 /*
  * Copyright (c) 2007-2010 Antti Kantee.  All Rights Reserved.
@@ -28,7 +28,7 @@
 #include "rumpuser_port.h"
 
 #if !defined(lint)
-__RCSID("$NetBSD: rumpuser_pth.c,v 1.39 2014/03/21 16:03:07 pooka Exp $");
+__RCSID("$NetBSD: rumpuser_pth.c,v 1.40 2014/04/02 17:09:23 justin Exp $");
 #endif /* !lint */
 
 #include <sys/queue.h>
@@ -254,7 +254,7 @@ rumpuser_mutex_owner(struct rumpuser_mtx
 
 struct rumpuser_rw {
 	pthread_rwlock_t pthrw;
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__ANDROID__)
 	char pad[64 - sizeof(pthread_rwlock_t)];
 	pthread_spinlock_t spin;
 #endif
@@ -317,7 +317,7 @@ static inline void
 rw_readup(struct rumpuser_rw *rw)
 {
 
-#if defined(__NetBSD__) || defined(__APPLE__)
+#if defined(__NetBSD__) || defined(__APPLE__) || defined(__ANDROID__)
 	atomic_inc_uint(&rw->readers);
 #else
 	pthread_spin_lock(&rw->spin);
@@ -330,7 +330,7 @@ static inline void
 rw_readdown(struct rumpuser_rw *rw)
 {
 
-#if defined(__NetBSD__) || defined(__APPLE__)
+#if defined(__NetBSD__) || defined(__APPLE__) || defined(__ANDROID__)
 	atomic_dec_uint(&rw->readers);
 #else
 	pthread_spin_lock(&rw->spin);
@@ -346,7 +346,7 @@ rumpuser_rw_init(struct rumpuser_rw **rw
 
 	NOFAIL(*rw = aligned_alloc(sizeof(struct rumpuser_rw)));
 	NOFAIL_ERRNO(pthread_rwlock_init(&((*rw)->pthrw), NULL));
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && !defined(__ANDROID__)
 	NOFAIL_ERRNO(pthread_spin_init(&((*rw)->spin),PTHREAD_PROCESS_PRIVATE));
 #endif
 	(*rw)->readers = 0;
@@ -452,7 +452,7 @@ rumpuser_rw_destroy(struct rumpuser_rw *
 {
 
 	NOFAIL_ERRNO(pthread_rwlock_destroy(&rw->pthrw));
-#if !defined(__APPLE__)
+#if !defined(__APPLE__) && ! defined(__ANDROID__)
 	NOFAIL_ERRNO(pthread_spin_destroy(&rw->spin));
 #endif
 	free(rw);

Index: src/sys/rump/include/rump/rump.h
diff -u src/sys/rump/include/rump/rump.h:1.61 src/sys/rump/include/rump/rump.h:1.62
--- src/sys/rump/include/rump/rump.h:1.61	Mon Mar 10 22:48:29 2014
+++ src/sys/rump/include/rump/rump.h	Wed Apr  2 17:09:23 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rump.h,v 1.61 2014/03/10 22:48:29 pooka Exp $	*/
+/*	$NetBSD: rump.h,v 1.62 2014/04/02 17:09:23 justin Exp $	*/
 
 /*
  * Copyright (c) 2007-2011 Antti Kantee.  All Rights Reserved.
@@ -57,7 +57,7 @@ typedef struct prop_dictionary *prop_dic
 #endif
 #endif /* __NetBSD__ */
 
-#if defined(__sun__) && !defined(RUMP_REGISTER_T)
+#if (!defined(_KERNEL)) && (defined(__sun__) || defined(__ANDROID__)) && !defined(RUMP_REGISTER_T)
 #define RUMP_REGISTER_T long
 typedef RUMP_REGISTER_T register_t;
 #endif

Reply via email to