From: Hajime Tazaki <thehajime@gmail.com>
To: linux-um@lists.infradead.org
Cc: Octavian Purdila <tavi.purdila@gmail.com>,
Akira Moroo <retrage01@gmail.com>,
linux-kernel-library@freelists.org, linux-arch@vger.kernel.org,
Conrad Meyer <cem@FreeBSD.org>,
Mark Stillwell <mark@stillwell.me>,
Patrick Collins <pscollins@google.com>,
Pierre-Hugues Husson <phh@phh.me>,
Thomas Liebetraut <thomas@tommie-lie.de>,
Yuan Liu <liuyuan@google.com>,
Hajime Tazaki <thehajime@gmail.com>
Subject: [RFC v3 17/26] lkl tools: host lib: posix host operations
Date: Wed, 5 Feb 2020 16:30:26 +0900 [thread overview]
Message-ID: <dfac3acf5ddc3d4d2352d2210377c0f4290fdbd6.1580882335.git.thehajime@gmail.com> (raw)
In-Reply-To: <cover.1580882335.git.thehajime@gmail.com>
From: Octavian Purdila <tavi.purdila@gmail.com>
Implement LKL host operations for POSIX hosts.
Cc: Conrad Meyer <cem@FreeBSD.org>
Cc: Mark Stillwell <mark@stillwell.me>
Cc: Patrick Collins <pscollins@google.com>
Cc: Pierre-Hugues Husson <phh@phh.me>
Cc: Thomas Liebetraut <thomas@tommie-lie.de>
Cc: Yuan Liu <liuyuan@google.com>
Signed-off-by: Hajime Tazaki <thehajime@gmail.com>
Signed-off-by: Octavian Purdila <tavi.purdila@gmail.com>
---
tools/lkl/lib/Build | 2 +
tools/lkl/lib/posix-host.c | 353 +++++++++++++++++++++++++++++++++++++
2 files changed, 355 insertions(+)
create mode 100644 tools/lkl/lib/posix-host.c
diff --git a/tools/lkl/lib/Build b/tools/lkl/lib/Build
index dba530424e4a..0e711e260a3a 100644
--- a/tools/lkl/lib/Build
+++ b/tools/lkl/lib/Build
@@ -1,8 +1,10 @@
CFLAGS_config.o += -I$(srctree)/tools/perf/pmu-events
+CFLAGS_posix-host.o += -D_FILE_OFFSET_BITS=64
liblkl-y += fs.o
liblkl-y += net.o
liblkl-y += jmp_buf.o
+liblkl-$(LKL_HOST_CONFIG_POSIX) += posix-host.o
liblkl-y += utils.o
liblkl-y += dbg.o
liblkl-y += dbg_handler.o
diff --git a/tools/lkl/lib/posix-host.c b/tools/lkl/lib/posix-host.c
new file mode 100644
index 000000000000..4be1611a8942
--- /dev/null
+++ b/tools/lkl/lib/posix-host.c
@@ -0,0 +1,353 @@
+// SPDX-License-Identifier: GPL-2.0
+#include <pthread.h>
+#include <stdlib.h>
+#include <sys/time.h>
+#include <time.h>
+#include <signal.h>
+#include <assert.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <time.h>
+#include <stdint.h>
+#include <sys/uio.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/syscall.h>
+#include <poll.h>
+#include <lkl_host.h>
+#include "jmp_buf.h"
+
+/* Let's see if the host has semaphore.h */
+#include <unistd.h>
+
+#ifdef _POSIX_SEMAPHORES
+#include <semaphore.h>
+/* TODO(pscollins): We don't support fork() for now, but maybe one day
+ * we will?
+ */
+#define SHARE_SEM 0
+#endif /* _POSIX_SEMAPHORES */
+
+static void print(const char *str, int len)
+{
+ int ret __attribute__((unused));
+
+ ret = write(STDOUT_FILENO, str, len);
+}
+
+struct lkl_mutex {
+ pthread_mutex_t mutex;
+};
+
+struct lkl_sem {
+#ifdef _POSIX_SEMAPHORES
+ sem_t sem;
+#else
+ pthread_mutex_t lock;
+ int count;
+ pthread_cond_t cond;
+#endif /* _POSIX_SEMAPHORES */
+};
+
+struct lkl_tls_key {
+ pthread_key_t key;
+};
+
+#define WARN_UNLESS(exp) do { \
+ if (exp < 0) \
+ lkl_printf("%s: %s\n", #exp, strerror(errno)); \
+ } while (0)
+
+static int _warn_pthread(int ret, char *str_exp)
+{
+ if (ret > 0)
+ lkl_printf("%s: %s\n", str_exp, strerror(ret));
+
+ return ret;
+}
+
+
+/* pthread_* functions use the reverse convention */
+#define WARN_PTHREAD(exp) _warn_pthread(exp, #exp)
+
+static struct lkl_sem *sem_alloc(int count)
+{
+ struct lkl_sem *sem;
+
+ sem = malloc(sizeof(*sem));
+ if (!sem)
+ return NULL;
+
+#ifdef _POSIX_SEMAPHORES
+ if (sem_init(&sem->sem, SHARE_SEM, count) < 0) {
+ lkl_printf("sem_init: %s\n", strerror(errno));
+ free(sem);
+ return NULL;
+ }
+#else
+ pthread_mutex_init(&sem->lock, NULL);
+ sem->count = count;
+ WARN_PTHREAD(pthread_cond_init(&sem->cond, NULL));
+#endif /* _POSIX_SEMAPHORES */
+
+ return sem;
+}
+
+static void sem_free(struct lkl_sem *sem)
+{
+#ifdef _POSIX_SEMAPHORES
+ WARN_UNLESS(sem_destroy(&sem->sem));
+#else
+ WARN_PTHREAD(pthread_cond_destroy(&sem->cond));
+ WARN_PTHREAD(pthread_mutex_destroy(&sem->lock));
+#endif /* _POSIX_SEMAPHORES */
+ free(sem);
+}
+
+static void sem_up(struct lkl_sem *sem)
+{
+#ifdef _POSIX_SEMAPHORES
+ WARN_UNLESS(sem_post(&sem->sem));
+#else
+ WARN_PTHREAD(pthread_mutex_lock(&sem->lock));
+ sem->count++;
+ if (sem->count > 0)
+ WARN_PTHREAD(pthread_cond_signal(&sem->cond));
+ WARN_PTHREAD(pthread_mutex_unlock(&sem->lock));
+#endif /* _POSIX_SEMAPHORES */
+
+}
+
+static void sem_down(struct lkl_sem *sem)
+{
+#ifdef _POSIX_SEMAPHORES
+ int err;
+
+ do {
+ err = sem_wait(&sem->sem);
+ } while (err < 0 && errno == EINTR);
+ if (err < 0 && errno != EINTR)
+ lkl_printf("sem_wait: %s\n", strerror(errno));
+#else
+ WARN_PTHREAD(pthread_mutex_lock(&sem->lock));
+ while (sem->count <= 0)
+ WARN_PTHREAD(pthread_cond_wait(&sem->cond, &sem->lock));
+ sem->count--;
+ WARN_PTHREAD(pthread_mutex_unlock(&sem->lock));
+#endif /* _POSIX_SEMAPHORES */
+}
+
+static struct lkl_mutex *mutex_alloc(int recursive)
+{
+ struct lkl_mutex *_mutex = malloc(sizeof(struct lkl_mutex));
+ pthread_mutex_t *mutex = NULL;
+ pthread_mutexattr_t attr;
+
+ if (!_mutex)
+ return NULL;
+
+ mutex = &_mutex->mutex;
+ WARN_PTHREAD(pthread_mutexattr_init(&attr));
+
+ /* PTHREAD_MUTEX_ERRORCHECK is *very* useful for debugging,
+ * but has some overhead, so we provide an option to turn it
+ * off.
+ */
+#ifdef DEBUG
+ if (!recursive)
+ WARN_PTHREAD(pthread_mutexattr_settype(
+ &attr, PTHREAD_MUTEX_ERRORCHECK));
+#endif /* DEBUG */
+
+ if (recursive)
+ WARN_PTHREAD(pthread_mutexattr_settype(
+ &attr, PTHREAD_MUTEX_RECURSIVE));
+
+ WARN_PTHREAD(pthread_mutex_init(mutex, &attr));
+
+ return _mutex;
+}
+
+static void mutex_lock(struct lkl_mutex *mutex)
+{
+ WARN_PTHREAD(pthread_mutex_lock(&mutex->mutex));
+}
+
+static void mutex_unlock(struct lkl_mutex *_mutex)
+{
+ pthread_mutex_t *mutex = &_mutex->mutex;
+
+ WARN_PTHREAD(pthread_mutex_unlock(mutex));
+}
+
+static void mutex_free(struct lkl_mutex *_mutex)
+{
+ pthread_mutex_t *mutex = &_mutex->mutex;
+
+ WARN_PTHREAD(pthread_mutex_destroy(mutex));
+ free(_mutex);
+}
+
+static lkl_thread_t thread_create(void (*fn)(void *), void *arg)
+{
+ pthread_t thread;
+
+ if (WARN_PTHREAD(pthread_create(&thread, NULL, (void *)fn,
+ arg)))
+ return 0;
+ else
+ return (lkl_thread_t) thread;
+}
+
+static void thread_detach(void)
+{
+ WARN_PTHREAD(pthread_detach(pthread_self()));
+}
+
+static void thread_exit(void)
+{
+ pthread_exit(NULL);
+}
+
+static int thread_join(lkl_thread_t tid)
+{
+ if (WARN_PTHREAD(pthread_join((pthread_t)tid, NULL)))
+ return (-1);
+ else
+ return 0;
+}
+
+static lkl_thread_t thread_self(void)
+{
+ return (lkl_thread_t)pthread_self();
+}
+
+static int thread_equal(lkl_thread_t a, lkl_thread_t b)
+{
+ return pthread_equal((pthread_t)a, (pthread_t)b);
+}
+
+static struct lkl_tls_key *tls_alloc(void (*destructor)(void *))
+{
+ struct lkl_tls_key *ret = malloc(sizeof(struct lkl_tls_key));
+
+ if (WARN_PTHREAD(pthread_key_create(&ret->key, destructor))) {
+ free(ret);
+ return NULL;
+ }
+ return ret;
+}
+
+static void tls_free(struct lkl_tls_key *key)
+{
+ WARN_PTHREAD(pthread_key_delete(key->key));
+ free(key);
+}
+
+static int tls_set(struct lkl_tls_key *key, void *data)
+{
+ if (WARN_PTHREAD(pthread_setspecific(key->key, data)))
+ return (-1);
+ return 0;
+}
+
+static void *tls_get(struct lkl_tls_key *key)
+{
+ return pthread_getspecific(key->key);
+}
+
+static unsigned long long time_ns(void)
+{
+ struct timespec ts;
+
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+
+ return 1e9*ts.tv_sec + ts.tv_nsec;
+}
+
+static void *timer_alloc(void (*fn)(void *), void *arg)
+{
+ int err;
+ timer_t timer;
+ struct sigevent se = {
+ .sigev_notify = SIGEV_THREAD,
+ .sigev_value = {
+ .sival_ptr = arg,
+ },
+ .sigev_notify_function = (void *)fn,
+ };
+
+ err = timer_create(CLOCK_REALTIME, &se, &timer);
+ if (err)
+ return NULL;
+
+ return (void *)(long)timer;
+}
+
+static int timer_set_oneshot(void *_timer, unsigned long ns)
+{
+ timer_t timer = (timer_t)(long)_timer;
+ struct itimerspec ts = {
+ .it_value = {
+ .tv_sec = ns / 1000000000,
+ .tv_nsec = ns % 1000000000,
+ },
+ };
+
+ return timer_settime(timer, 0, &ts, NULL);
+}
+
+static void timer_free(void *_timer)
+{
+ timer_t timer = (timer_t)(long)_timer;
+
+ timer_delete(timer);
+}
+
+static void panic(void)
+{
+ assert(0);
+}
+
+static long _gettid(void)
+{
+#ifdef __FreeBSD__
+ return (long)pthread_self();
+#else
+ return syscall(SYS_gettid);
+#endif
+}
+
+struct lkl_host_operations lkl_host_ops = {
+ .panic = panic,
+ .thread_create = thread_create,
+ .thread_detach = thread_detach,
+ .thread_exit = thread_exit,
+ .thread_join = thread_join,
+ .thread_self = thread_self,
+ .thread_equal = thread_equal,
+ .sem_alloc = sem_alloc,
+ .sem_free = sem_free,
+ .sem_up = sem_up,
+ .sem_down = sem_down,
+ .mutex_alloc = mutex_alloc,
+ .mutex_free = mutex_free,
+ .mutex_lock = mutex_lock,
+ .mutex_unlock = mutex_unlock,
+ .tls_alloc = tls_alloc,
+ .tls_free = tls_free,
+ .tls_set = tls_set,
+ .tls_get = tls_get,
+ .time = time_ns,
+ .timer_alloc = timer_alloc,
+ .timer_set_oneshot = timer_set_oneshot,
+ .timer_free = timer_free,
+ .print = print,
+ .mem_alloc = (void *)malloc,
+ .mem_free = free,
+ .gettid = _gettid,
+ .jmp_buf_set = jmp_buf_set,
+ .jmp_buf_longjmp = jmp_buf_longjmp,
+};
+
--
2.21.0 (Apple Git-122.2)
next prev parent reply other threads:[~2020-02-05 7:31 UTC|newest]
Thread overview: 251+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-05 7:30 [RFC v3 00/26] Unifying LKL into UML Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 01/26] asm-generic: atomic64: allow using generic atomic64 on 64bit platforms Hajime Tazaki
2020-02-05 9:34 ` Peter Zijlstra
2020-02-05 12:24 ` Octavian Purdila
2020-02-05 12:29 ` Anton Ivanov
2020-02-05 12:49 ` Peter Zijlstra
2020-02-05 14:00 ` Octavian Purdila
2020-02-05 17:13 ` Peter Zijlstra
2020-02-07 12:32 ` Octavian Purdila
[not found] ` <cover.1580882335.git.thehajime-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2020-02-05 7:30 ` [RFC v3 02/26] arch: add __SYSCALL_DEFINE_ARCH Hajime Tazaki
2020-02-05 7:30 ` Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 03/26] um lkl: architecture skeleton for Linux kernel library Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 04/26] um lkl: host interface Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 05/26] um lkl: memory handling Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 06/26] um lkl: kernel threads support Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 07/26] um lkl: interrupt support Hajime Tazaki
2020-02-05 10:47 ` Anton Ivanov
2020-02-05 14:46 ` Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 08/26] um lkl: system call interface and application API Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 09/26] um lkl: timers, time and delay support Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 10/26] um lkl: basic kernel console support Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 11/26] um lkl: initialization and cleanup Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 12/26] um lkl: plug in the build system Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 13/26] lkl tools: skeleton for host side library Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 14/26] lkl tools: host lib: add utilities functions Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 15/26] lkl tools: host lib: filesystem helpers Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 16/26] lkl tools: host lib: networking helpers Hajime Tazaki
2020-02-05 7:30 ` Hajime Tazaki [this message]
2020-02-05 7:30 ` [RFC v3 18/26] lkl tools: add test programs Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 19/26] lkl tools: cptofs that reads/writes to/from a filesystem image Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 20/26] lkl tools: fs2tar that converts a filesystem image to tar Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 21/26] lkl tools: add lklfuse Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 22/26] um lkl: add documentation Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 23/26] um lkl: add CI scripts to conduct regression tests Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 24/26] um lkl: add UML network driver for lkl Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 25/26] um lkl: add UML block device driver (ubd) " Hajime Tazaki
2020-02-05 7:30 ` [RFC v3 26/26] um: fix clone flags to be familar with valgrind Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 00/25] Unifying LKL into UML Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 01/25] arch: add __SYSCALL_DEFINE_ARCH Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 02/25] um lkl: architecture skeleton for Linux kernel library Hajime Tazaki
2020-03-30 21:53 ` Johannes Berg
2020-03-30 22:12 ` Richard Weinberger
2020-03-30 22:12 ` Richard Weinberger
2020-03-31 7:08 ` Hajime Tazaki
2020-03-31 20:16 ` Johannes Berg
2020-04-02 6:44 ` Hajime Tazaki
2020-04-07 19:25 ` Octavian Purdila
2020-04-07 19:25 ` Octavian Purdila
2020-03-30 14:45 ` [RFC v4 03/25] um lkl: host interface Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 04/25] um lkl: memory handling Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 05/25] um lkl: kernel threads support Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 06/25] um lkl: interrupt support Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 07/25] um lkl: system call interface and application API Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 08/25] um lkl: timers, time and delay support Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 09/25] um lkl: basic kernel console support Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 10/25] um lkl: initialization and cleanup Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 11/25] um lkl: plug in the build system Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 12/25] lkl tools: skeleton for host side library Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 13/25] lkl tools: host lib: add utilities functions Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 14/25] lkl tools: host lib: filesystem helpers Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 15/25] lkl tools: host lib: networking helpers Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 16/25] lkl tools: host lib: posix host operations Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 17/25] lkl tools: add test programs Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 18/25] lkl tools: cptofs that reads/writes to/from a filesystem image Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 19/25] lkl tools: fs2tar that converts a filesystem image to tar Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 20/25] lkl tools: add lklfuse Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 21/25] um lkl: add documentation Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 22/25] um lkl: add CI scripts to conduct regression tests Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 23/25] um lkl: add UML network driver for lkl Hajime Tazaki
2020-03-30 21:31 ` Johannes Berg
2020-03-31 2:38 ` Hajime Tazaki
2020-03-31 19:52 ` Johannes Berg
2020-03-30 14:45 ` [RFC v4 24/25] um lkl: add UML block device driver (ubd) " Hajime Tazaki
2020-03-30 14:45 ` [RFC v4 25/25] um: fix clone flags to be familiar with valgrind Hajime Tazaki
2020-07-02 14:06 ` [RFC v5 00/21] Unifying LKL into UML Hajime Tazaki
2020-07-02 14:06 ` [RFC v5 01/21] um: split build in kernel and host parts Hajime Tazaki
2020-09-21 16:01 ` Anton Ivanov
2020-09-21 22:27 ` Hajime Tazaki
2020-07-02 14:06 ` [RFC v5 02/21] um: add os init and exit calls Hajime Tazaki
2020-07-02 14:06 ` [RFC v5 03/21] um: move arch/um/os-Linux dir to tools/um/uml Hajime Tazaki
2020-07-02 14:06 ` [RFC v5 04/21] um: host: implement os_initcalls and os_exitcalls Hajime Tazaki
2020-07-02 14:06 ` [RFC v5 05/21] um: move arch/x86/um/os-Linux to tools/um/uml/ Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 06/21] scritps: um: suppress warnings if SRCARCH=um Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 07/21] um: extend arch_switch_to for alternate SUBARCH Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 08/21] um: add nommu mode for UML library mode Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 09/21] um: nommu: host interface Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 10/21] um: nommu: memory handling Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 11/21] um: nommu: kernel thread support Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 12/21] um: nommu: system call interface and application API Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 13/21] um: nommu: basic console support Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 14/21] um: nommu: initialization and cleanup Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 15/21] um: nommu: integrate with irq infrastructure of UML Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 16/21] um: nommu: plug in the build system Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 17/21] um: host: add nommu build for ARCH=um Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 18/21] um: host: add utilities functions Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 19/21] um: host: posix host operations Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 20/21] um: host: add test programs Hajime Tazaki
2020-07-02 14:07 ` [RFC v5 21/21] um: nommu: add block device support of UML Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 00/21] Unifying LKL into UML Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 01/21] um: split build in kernel and host parts Hajime Tazaki
2020-09-24 7:33 ` Anton Ivanov
2020-09-24 8:26 ` Hajime Tazaki
2020-09-24 8:37 ` Anton Ivanov
2020-09-24 7:36 ` Anton Ivanov
2020-09-24 8:13 ` Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 02/21] um: add os init and exit calls Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 03/21] um: move arch/um/os-Linux dir to tools/um/uml Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 04/21] um: host: implement os_initcalls and os_exitcalls Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 05/21] um: move arch/x86/um/os-Linux to tools/um/uml/ Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 06/21] scritps: um: suppress warnings if SRCARCH=um Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 07/21] um: extend arch_switch_to for alternate SUBARCH Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 08/21] um: add nommu mode for UML library mode Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 09/21] um: nommu: host interface Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 10/21] um: nommu: memory handling Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 11/21] um: nommu: kernel thread support Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 12/21] um: nommu: system call interface and application API Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 13/21] um: nommu: basic console support Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 14/21] um: nommu: initialization and cleanup Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 15/21] um: nommu: integrate with irq infrastructure of UML Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 16/21] um: nommu: plug in the build system Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 17/21] um: host: add nommu build for ARCH=um Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 18/21] um: host: add utilities functions Hajime Tazaki
2020-09-24 7:12 ` [RFC v6 19/21] um: host: posix host operations Hajime Tazaki
2020-09-24 7:13 ` [RFC v6 20/21] um: host: add test programs Hajime Tazaki
2020-09-24 7:13 ` [RFC v6 21/21] um: nommu: add block device support of UML Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 00/21] Unifying LKL into UML Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 01/21] um: split build in kernel and host parts Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 02/21] um: add os init and exit calls Hajime Tazaki
2020-10-07 15:13 ` Johannes Berg
2020-10-08 13:18 ` Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 03/21] um: move arch/um/os-Linux dir to tools/um/uml Hajime Tazaki
2020-10-07 15:20 ` Johannes Berg
2020-10-08 17:48 ` Octavian Purdila
2020-10-08 19:46 ` Johannes Berg
2020-10-08 20:53 ` Octavian Purdila
2020-10-09 15:59 ` Johannes Berg
2020-10-06 9:44 ` [RFC v7 04/21] um: host: implement os_initcalls and os_exitcalls Hajime Tazaki
2020-10-07 15:22 ` Johannes Berg
2020-10-08 13:16 ` Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 05/21] um: move arch/x86/um/os-Linux to tools/um/uml/ Hajime Tazaki
2020-10-07 15:23 ` Johannes Berg
2020-10-06 9:44 ` [RFC v7 06/21] scritps: um: suppress warnings if SRCARCH=um Hajime Tazaki
2020-10-07 15:24 ` Johannes Berg
2020-10-09 1:13 ` Hajime Tazaki
2020-10-09 16:00 ` Johannes Berg
2020-10-06 9:44 ` [RFC v7 07/21] um: extend arch_switch_to for alternate SUBARCH Hajime Tazaki
2020-10-07 15:25 ` Johannes Berg
2020-10-09 1:24 ` Hajime Tazaki
2020-10-09 16:02 ` Johannes Berg
2020-10-06 9:44 ` [RFC v7 08/21] um: add nommu mode for UML library mode Hajime Tazaki
2020-10-07 15:44 ` Johannes Berg
2020-10-09 3:38 ` Hajime Tazaki
2020-10-09 16:06 ` Johannes Berg
2020-10-20 8:44 ` Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 09/21] um: nommu: host interface Hajime Tazaki
2020-10-07 15:45 ` Johannes Berg
2020-10-08 18:10 ` Octavian Purdila
2020-10-06 9:44 ` [RFC v7 10/21] um: nommu: memory handling Hajime Tazaki
2020-10-07 15:47 ` Johannes Berg
2020-10-08 18:07 ` Octavian Purdila
2020-10-06 9:44 ` [RFC v7 11/21] um: nommu: kernel thread support Hajime Tazaki
2020-10-07 18:57 ` Johannes Berg
2020-10-08 18:54 ` Octavian Purdila
2020-10-08 19:39 ` Johannes Berg
2020-10-08 20:25 ` Octavian Purdila
2020-10-06 9:44 ` [RFC v7 12/21] um: nommu: system call interface and application API Hajime Tazaki
2020-10-07 19:05 ` Johannes Berg
2020-10-08 19:03 ` Octavian Purdila
2020-10-08 19:40 ` Johannes Berg
2020-10-06 9:44 ` [RFC v7 13/21] um: nommu: basic console support Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 14/21] um: nommu: initialization and cleanup Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 15/21] um: nommu: integrate with irq infrastructure of UML Hajime Tazaki
2020-10-07 19:09 ` Johannes Berg
2020-10-06 9:44 ` [RFC v7 16/21] um: nommu: plug in the build system Hajime Tazaki
2020-10-07 19:20 ` Johannes Berg
2020-10-09 7:40 ` Hajime TAZAKI
2020-10-06 9:44 ` [RFC v7 17/21] um: host: add nommu build for ARCH=um Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 18/21] um: host: add utilities functions Hajime Tazaki
2020-10-07 14:53 ` Anton Ivanov
2020-10-07 15:02 ` Johannes Berg
2020-10-07 15:03 ` Johannes Berg
2020-10-07 15:10 ` Anton Ivanov
2020-10-08 12:52 ` Hajime Tazaki
2020-10-08 19:19 ` Octavian Purdila
2020-10-08 12:53 ` Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 19/21] um: host: posix host operations Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 20/21] um: host: add test programs Hajime Tazaki
2020-10-07 19:23 ` Johannes Berg
2020-10-09 6:24 ` Hajime Tazaki
2020-10-06 9:44 ` [RFC v7 21/21] um: nommu: add block device support of UML Hajime Tazaki
2020-10-07 14:17 ` Anton Ivanov
2020-10-08 12:13 ` Hajime Tazaki
2020-10-07 13:30 ` [RFC v7 00/21] Unifying LKL into UML Anton Ivanov
2020-10-08 12:12 ` Hajime Tazaki
2020-10-08 12:50 ` Anton Ivanov
2020-10-08 17:13 ` Octavian Purdila
2020-10-08 17:18 ` Anton Ivanov
2020-10-08 17:24 ` Octavian Purdila
2021-01-20 2:27 ` [RFC v8 00/20] " Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 01/20] um: split build in kernel and host parts Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 02/20] um: move arch/um/os-Linux dir to tools/um/uml Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 03/20] um: move arch/x86/um/os-Linux to tools/um/uml/ Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 04/20] um: implement os_initcalls and os_exitcalls Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 05/20] um: extend arch_switch_to for alternate SUBARCH Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 06/20] um: add UML library mode Hajime Tazaki
2021-03-14 16:49 ` Johannes Berg
2021-03-16 1:17 ` Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 07/20] um: lkl: host interface Hajime Tazaki
2021-03-14 16:50 ` Johannes Berg
2021-03-16 1:17 ` Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 08/20] um: lkl: memory handling Hajime Tazaki
2021-03-14 16:53 ` Johannes Berg
2021-03-16 1:18 ` Hajime Tazaki
2021-03-16 21:31 ` Johannes Berg
2021-03-18 0:12 ` Hajime Tazaki
2021-03-18 8:00 ` Johannes Berg
2021-01-20 2:27 ` [RFC v8 09/20] um: lkl: kernel thread support Hajime Tazaki
2021-03-14 17:01 ` Johannes Berg
2021-03-16 1:18 ` Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 10/20] um: lkl: system call interface and application API Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 11/20] um: lkl: basic console support Hajime Tazaki
2021-03-14 20:42 ` Johannes Berg
2021-03-16 1:19 ` Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 12/20] um: lkl: initialization and cleanup Hajime Tazaki
2021-03-14 20:40 ` Johannes Berg
2021-03-16 1:19 ` Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 13/20] um: lkl: integrate with irq infrastructure of UML Hajime Tazaki
2021-03-14 20:45 ` Johannes Berg
2021-03-16 1:20 ` Hajime Tazaki
2021-03-16 21:36 ` Johannes Berg
2021-01-20 2:27 ` [RFC v8 14/20] um: lkl: plug in the build system Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 15/20] um: host: add library mode build for ARCH=um Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 16/20] um: host: add utilities functions Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 17/20] um: host: posix host operations Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 18/20] selftests/um: lkl: add test programs for library mode of UML Hajime Tazaki
2021-01-20 2:27 ` [RFC v8 19/20] um: lkl: add block device support " Hajime Tazaki
2021-03-14 20:37 ` Johannes Berg
2021-03-16 1:19 ` Hajime Tazaki
2021-03-16 21:32 ` Johannes Berg
2021-03-17 14:19 ` Octavian Purdila
2021-03-17 14:28 ` Johannes Berg
2021-03-18 0:15 ` Hajime Tazaki
2021-03-18 0:43 ` Octavian Purdila
2021-01-20 2:27 ` [RFC v8 20/20] um: lkl: add documentation Hajime Tazaki
2021-03-14 21:03 ` [RFC v8 00/20] Unifying LKL into UML Johannes Berg
2021-03-16 1:17 ` Hajime Tazaki
2021-03-16 21:29 ` Johannes Berg
2021-03-17 14:03 ` Octavian Purdila
2021-03-17 14:24 ` Johannes Berg
2021-03-18 14:17 ` Hajime Tazaki
2021-03-18 16:28 ` Johannes Berg
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=dfac3acf5ddc3d4d2352d2210377c0f4290fdbd6.1580882335.git.thehajime@gmail.com \
--to=thehajime@gmail.com \
--cc=cem@FreeBSD.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel-library@freelists.org \
--cc=linux-um@lists.infradead.org \
--cc=liuyuan@google.com \
--cc=mark@stillwell.me \
--cc=phh@phh.me \
--cc=pscollins@google.com \
--cc=retrage01@gmail.com \
--cc=tavi.purdila@gmail.com \
--cc=thomas@tommie-lie.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).