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