From: Dmitry Safonov <dima@arista.com> To: linux-kernel@vger.kernel.org Cc: Dmitry Safonov <0x7f454c46@gmail.com>, Andrei Vagin <avagin@openvz.org>, Dmitry Safonov <dima@arista.com>, Adrian Reber <adrian@lisas.de>, Andy Lutomirski <luto@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Christian Brauner <christian.brauner@ubuntu.com>, Cyrill Gorcunov <gorcunov@openvz.org>, "Eric W. Biederman" <ebiederm@xmission.com>, "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>, Jann Horn <jannh@google.com>, Jeff Dike <jdike@addtoit.com>, Oleg Nesterov <oleg@redhat.com>, Pavel Emelyanov <xemul@virtuozzo.com>, Shuah Khan <shuah@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Vincenzo Frascino <vincenzo.frascino@arm.com>, containers@lists.linux-foundation.org, criu@openvz.org, linux-api@vger.kernel.org, x86@kernel.org, Andrei Vagin <avagin@gmail.com> Subject: [PATCHv8 32/34] selftests/timens: Add timer offsets test Date: Tue, 12 Nov 2019 01:27:21 +0000 [thread overview] Message-ID: <20191112012724.250792-33-dima@arista.com> (raw) In-Reply-To: <20191112012724.250792-1-dima@arista.com> From: Andrei Vagin <avagin@openvz.org> Check that timer_create() takes into account clock offsets. Output on success: 1..3 ok 1 clockid=7 ok 2 clockid=1 ok 3 clockid=9 # Pass 3 Fail 0 Xfail 0 Xpass 0 Skip 0 Error 0 Output with lack of permissions: 1..3 not ok 1 # SKIP need to run as root Output without support of time namespaces: 1..3 not ok 1 # SKIP Time namespaces are not supported Signed-off-by: Andrei Vagin <avagin@gmail.com> Co-developed-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Dmitry Safonov <dima@arista.com> --- tools/testing/selftests/timens/.gitignore | 1 + tools/testing/selftests/timens/Makefile | 2 +- tools/testing/selftests/timens/timer.c | 123 ++++++++++++++++++++++ 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/timens/timer.c diff --git a/tools/testing/selftests/timens/.gitignore b/tools/testing/selftests/timens/.gitignore index 94ffdd9cead7..3b7eda8f35ce 100644 --- a/tools/testing/selftests/timens/.gitignore +++ b/tools/testing/selftests/timens/.gitignore @@ -1,4 +1,5 @@ clock_nanosleep procfs timens +timer timerfd diff --git a/tools/testing/selftests/timens/Makefile b/tools/testing/selftests/timens/Makefile index 8a33df7111c4..08164548a49d 100644 --- a/tools/testing/selftests/timens/Makefile +++ b/tools/testing/selftests/timens/Makefile @@ -1,4 +1,4 @@ -TEST_GEN_PROGS := timens timerfd clock_nanosleep procfs +TEST_GEN_PROGS := timens timerfd timer clock_nanosleep procfs CFLAGS := -Wall -Werror -pthread LDFLAGS := -lrt diff --git a/tools/testing/selftests/timens/timer.c b/tools/testing/selftests/timens/timer.c new file mode 100644 index 000000000000..58a43cb407fb --- /dev/null +++ b/tools/testing/selftests/timens/timer.c @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: GPL-2.0 +#define _GNU_SOURCE +#include <sched.h> + +#include <sys/syscall.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <time.h> +#include <unistd.h> +#include <stdlib.h> +#include <stdio.h> +#include <stdint.h> +#include <signal.h> +#include <time.h> + +#include "log.h" +#include "timens.h" + +int run_test(int clockid, struct timespec now) +{ + struct itimerspec new_value; + long long elapsed; + timer_t fd; + int i; + + for (i = 0; i < 2; i++) { + struct sigevent sevp = {.sigev_notify = SIGEV_NONE}; + int flags = 0; + + new_value.it_value.tv_sec = 3600; + new_value.it_value.tv_nsec = 0; + new_value.it_interval.tv_sec = 1; + new_value.it_interval.tv_nsec = 0; + + if (i == 1) { + new_value.it_value.tv_sec += now.tv_sec; + new_value.it_value.tv_nsec += now.tv_nsec; + } + + if (timer_create(clockid, &sevp, &fd) == -1) { + if (errno == ENOSYS) { + ksft_test_result_skip("Posix Clocks & timers are supported\n"); + return 0; + } + return pr_perror("timerfd_create"); + } + + if (i == 1) + flags |= TIMER_ABSTIME; + if (timer_settime(fd, flags, &new_value, NULL) == -1) + return pr_perror("timerfd_settime"); + + if (timer_gettime(fd, &new_value) == -1) + return pr_perror("timerfd_gettime"); + + elapsed = new_value.it_value.tv_sec; + if (abs(elapsed - 3600) > 60) { + ksft_test_result_fail("clockid: %d elapsed: %lld\n", + clockid, elapsed); + return 1; + } + } + + ksft_test_result_pass("clockid=%d\n", clockid); + + return 0; +} + +int main(int argc, char *argv[]) +{ + int ret, status, len, fd; + char buf[4096]; + pid_t pid; + struct timespec btime_now, mtime_now; + + nscheck(); + + ksft_set_plan(3); + + clock_gettime(CLOCK_MONOTONIC, &mtime_now); + clock_gettime(CLOCK_BOOTTIME, &btime_now); + + if (unshare_timens()) + return 1; + + len = snprintf(buf, sizeof(buf), "%d %d 0\n%d %d 0", + CLOCK_MONOTONIC, 70 * 24 * 3600, + CLOCK_BOOTTIME, 9 * 24 * 3600); + fd = open("/proc/self/timens_offsets", O_WRONLY); + if (fd < 0) + return pr_perror("/proc/self/timens_offsets"); + + if (write(fd, buf, len) != len) + return pr_perror("/proc/self/timens_offsets"); + + close(fd); + mtime_now.tv_sec += 70 * 24 * 3600; + btime_now.tv_sec += 9 * 24 * 3600; + + pid = fork(); + if (pid < 0) + return pr_perror("Unable to fork"); + if (pid == 0) { + ret = 0; + ret |= run_test(CLOCK_BOOTTIME, btime_now); + ret |= run_test(CLOCK_MONOTONIC, mtime_now); + ret |= run_test(CLOCK_BOOTTIME_ALARM, btime_now); + + if (ret) + ksft_exit_fail(); + ksft_exit_pass(); + return ret; + } + + if (waitpid(pid, &status, 0) != pid) + return pr_perror("Unable to wait the child process"); + + if (WIFEXITED(status)) + return WEXITSTATUS(status); + + return 1; +} + -- 2.24.0
WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Safonov <dima@arista.com> To: linux-kernel@vger.kernel.org Cc: Dmitry Safonov <0x7f454c46@gmail.com>, Andrei Vagin <avagin@openvz.org>, Dmitry Safonov <dima@arista.com>, Adrian Reber <adrian@lisas.de>, Andy Lutomirski <luto@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Christian Brauner <christian.brauner@ubuntu.com>, Cyrill Gorcunov <gorcunov@openvz.org>, "Eric W. Biederman" <ebiederm@xmission.com>, "H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>, Jann Horn <jannh@google.com>, Jeff Dike <jdike@addtoit.com>, Oleg Nesterov <oleg@redhat.com>, Pavel Emelyanov <xemul@virtuozzo.com>, Shuah Khan <shuah@kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Vincenzo Frascino <vincenzo.frascino@arm.com>, containers@lists.linux-foundation.org, criu@openvz.org, linux-api@vger.kernel.org, x86@kernel.org Subject: [PATCHv8 32/34] selftests/timens: Add timer offsets test Date: Tue, 12 Nov 2019 01:27:21 +0000 [thread overview] Message-ID: <20191112012724.250792-33-dima@arista.com> (raw) In-Reply-To: <20191112012724.250792-1-dima@arista.com> From: Andrei Vagin <avagin@openvz.org> Check that timer_create() takes into account clock offsets. Output on success: 1..3 ok 1 clockid=7 ok 2 clockid=1 ok 3 clockid=9 # Pass 3 Fail 0 Xfail 0 Xpass 0 Skip 0 Error 0 Output with lack of permissions: 1..3 not ok 1 # SKIP need to run as root Output without support of time namespaces: 1..3 not ok 1 # SKIP Time namespaces are not supported Signed-off-by: Andrei Vagin <avagin@gmail.com> Co-developed-by: Dmitry Safonov <dima@arista.com> Signed-off-by: Dmitry Safonov <dima@arista.com> --- tools/testing/selftests/timens/.gitignore | 1 + tools/testing/selftests/timens/Makefile | 2 +- tools/testing/selftests/timens/timer.c | 123 ++++++++++++++++++++++ 3 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 tools/testing/selftests/timens/timer.c diff --git a/tools/testing/selftests/timens/.gitignore b/tools/testing/selftests/timens/.gitignore index 94ffdd9cead7..3b7eda8f35ce 100644 --- a/tools/testing/selftests/timens/.gitignore +++ b/tools/testing/selftests/timens/.gitignore @@ -1,4 +1,5 @@ clock_nanosleep procfs timens +timer timerfd diff --git a/tools/testing/selftests/timens/Makefile b/tools/testing/selftests/timens/Makefile index 8a33df7111c4..08164548a49d 100644 --- a/tools/testing/selftests/timens/Makefile +++ b/tools/testing/selftests/timens/Makefile @@ -1,4 +1,4 @@ -TEST_GEN_PROGS := timens timerfd clock_nanosleep procfs +TEST_GEN_PROGS := timens timerfd timer clock_nanosleep procfs CFLAGS := -Wall -Werror -pthread LDFLAGS := -lrt diff --git a/tools/testing/selftests/timens/timer.c b/tools/testing/selftests/timens/timer.c new file mode 100644 index 000000000000..58a43cb407fb --- /dev/null +++ b/tools/testing/selftests/timens/timer.c @@ -0,0 +1,123 @@ +// SPDX-License-Identifier: GPL-2.0 +#define _GNU_SOURCE +#include <sched.h> + +#include <sys/syscall.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <time.h> +#include <unistd.h> +#include <stdlib.h> +#include <stdio.h> +#include <stdint.h> +#include <signal.h> +#include <time.h> + +#include "log.h" +#include "timens.h" + +int run_test(int clockid, struct timespec now) +{ + struct itimerspec new_value; + long long elapsed; + timer_t fd; + int i; + + for (i = 0; i < 2; i++) { + struct sigevent sevp = {.sigev_notify = SIGEV_NONE}; + int flags = 0; + + new_value.it_value.tv_sec = 3600; + new_value.it_value.tv_nsec = 0; + new_value.it_interval.tv_sec = 1; + new_value.it_interval.tv_nsec = 0; + + if (i == 1) { + new_value.it_value.tv_sec += now.tv_sec; + new_value.it_value.tv_nsec += now.tv_nsec; + } + + if (timer_create(clockid, &sevp, &fd) == -1) { + if (errno == ENOSYS) { + ksft_test_result_skip("Posix Clocks & timers are supported\n"); + return 0; + } + return pr_perror("timerfd_create"); + } + + if (i == 1) + flags |= TIMER_ABSTIME; + if (timer_settime(fd, flags, &new_value, NULL) == -1) + return pr_perror("timerfd_settime"); + + if (timer_gettime(fd, &new_value) == -1) + return pr_perror("timerfd_gettime"); + + elapsed = new_value.it_value.tv_sec; + if (abs(elapsed - 3600) > 60) { + ksft_test_result_fail("clockid: %d elapsed: %lld\n", + clockid, elapsed); + return 1; + } + } + + ksft_test_result_pass("clockid=%d\n", clockid); + + return 0; +} + +int main(int argc, char *argv[]) +{ + int ret, status, len, fd; + char buf[4096]; + pid_t pid; + struct timespec btime_now, mtime_now; + + nscheck(); + + ksft_set_plan(3); + + clock_gettime(CLOCK_MONOTONIC, &mtime_now); + clock_gettime(CLOCK_BOOTTIME, &btime_now); + + if (unshare_timens()) + return 1; + + len = snprintf(buf, sizeof(buf), "%d %d 0\n%d %d 0", + CLOCK_MONOTONIC, 70 * 24 * 3600, + CLOCK_BOOTTIME, 9 * 24 * 3600); + fd = open("/proc/self/timens_offsets", O_WRONLY); + if (fd < 0) + return pr_perror("/proc/self/timens_offsets"); + + if (write(fd, buf, len) != len) + return pr_perror("/proc/self/timens_offsets"); + + close(fd); + mtime_now.tv_sec += 70 * 24 * 3600; + btime_now.tv_sec += 9 * 24 * 3600; + + pid = fork(); + if (pid < 0) + return pr_perror("Unable to fork"); + if (pid == 0) { + ret = 0; + ret |= run_test(CLOCK_BOOTTIME, btime_now); + ret |= run_test(CLOCK_MONOTONIC, mtime_now); + ret |= run_test(CLOCK_BOOTTIME_ALARM, btime_now); + + if (ret) + ksft_exit_fail(); + ksft_exit_pass(); + return ret; + } + + if (waitpid(pid, &status, 0) != pid) + return pr_perror("Unable to wait the child process"); + + if (WIFEXITED(status)) + return WEXITSTATUS(status); + + return 1; +} + -- 2.24.0
next prev parent reply other threads:[~2019-11-12 1:28 UTC|newest] Thread overview: 160+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-11-12 1:26 [PATCHv8 00/34] kernel: Introduce Time Namespace Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2019-11-12 1:26 ` [PATCHv8 01/34] lib/vdso: Add unlikely() hint into vdso_read_begin() Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 02/34] lib/vdso: make do_hres and do_coarse as __always_inline Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-10 9:45 ` Vincenzo Frascino 2020-01-10 9:45 ` Vincenzo Frascino 2020-01-10 11:42 ` Thomas Gleixner 2020-01-10 11:47 ` Vincenzo Frascino 2020-01-10 11:47 ` Vincenzo Frascino 2020-01-10 12:02 ` Thomas Gleixner 2020-01-10 12:18 ` Vincenzo Frascino 2020-01-10 12:18 ` Vincenzo Frascino 2020-01-13 5:27 ` Andrei Vagin 2020-01-13 5:27 ` Andrei Vagin 2020-01-13 19:09 ` [tip: timers/core] lib/vdso: Mark do_hres() and do_coarse() " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 03/34] ns: Introduce Time Namespace Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2020-01-27 14:12 ` [PATCHv8 03/34] " Dmitry Vyukov 2020-01-27 14:12 ` Dmitry Vyukov 2020-01-27 14:19 ` Dmitry Safonov 2020-01-27 14:19 ` Dmitry Safonov 2020-02-17 14:20 ` Time Namespaces: CLONE_NEWTIME and clone3()? Michael Kerrisk 2020-02-17 14:59 ` Christian Brauner 2020-02-17 21:47 ` Michael Kerrisk (man-pages) 2020-02-17 23:03 ` Christian Brauner 2020-02-17 23:29 ` Thomas Gleixner 2020-02-18 2:37 ` Eric W. Biederman 2020-02-18 17:11 ` Adrian Reber 2020-02-18 17:26 ` Christian Brauner 2019-11-12 1:26 ` [PATCHv8 04/34] time: Add timens_offsets to be used for tasks in timens Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] time: Add timens_offsets to be used for tasks in time namespace tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 05/34] posix-clocks: Rename the clock_get() callback to clock_get_timespec() Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 06/34] posix-clocks: Rename .clock_get_timespec() callbacks accordingly Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 07/34] alarmtimer: Rename gettime() callback to get_ktime() Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 08/34] alarmtimer: Provide get_timespec() callback Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 09/34] posix-clocks: Introduce clock_get_ktime() callback Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:26 ` [PATCHv8 10/34] posix-timers: Use clock_get_ktime() in common_timer_get() Dmitry Safonov 2019-11-12 1:26 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 11/34] posix-clocks: Wire up clock_gettime() with timens offsets Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 12/34] kernel: Add do_timens_ktime_to_host() helper Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] time: " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 13/34] timerfd: Make timerfd_settime() time namespace aware Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 14/34] posix-timers: Make timer_settime() " Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 15/34] alarmtimer: Make nanosleep " Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] alarmtimer: Make nanosleep() " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 16/34] hrtimers: Prepare hrtimer_nanosleep() for time namespaces Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 17/34] posix-timers: Make clock_nanosleep() time namespace aware Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 18/34] fs/proc: Respect boottime inside time namespace for /proc/uptime Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 19/34] x86/vdso: Restrict splitting VVAR VMA Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 20/34] lib/vdso: Prepare for time namespace support Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-12 10:32 ` Thomas Gleixner 2020-01-12 10:32 ` Thomas Gleixner 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Thomas Gleixner 2020-01-14 13:02 ` tip-bot2 for Thomas Gleixner 2019-11-12 1:27 ` [PATCHv8 21/34] x86/vdso: Provide vdso_data offset on vvar_page Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 22/34] x86/vdso: Add timens page Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] x86/vdso: Add time napespace page tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 23/34] time: Allocate per-timens vvar page Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 24/34] x86/vdso: Handle faults on timens page Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 25/34] x86/vdso: On timens page fault prefault also VVAR page Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 26/34] x86/vdso: Zap vvar pages on switch a time namspace Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] x86/vdso: Zap vvar pages when switching to a time namespace tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 27/34] fs/proc: Introduce /proc/pid/timens_offsets Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 28/34] selftests/timens: Add Time Namespace test for supported clocks Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` [PATCHv8 29/34] selftests/timens: Add a test for timerfd Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 30/34] selftests/timens: Add a test for clock_nanosleep() Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 31/34] selftests/timens: Add procfs selftest Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Dmitry Safonov 2020-01-14 13:02 ` tip-bot2 for Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov [this message] 2019-11-12 1:27 ` [PATCHv8 32/34] selftests/timens: Add timer offsets test Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 33/34] selftests/timens: Add a simple perf test for clock_gettime() Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-12 1:27 ` [PATCHv8 34/34] selftests/timens: Check for right timens offsets after fork and exec Dmitry Safonov 2019-11-12 1:27 ` Dmitry Safonov 2020-01-13 19:09 ` [tip: timers/core] " tip-bot2 for Andrei Vagin 2020-01-14 13:02 ` tip-bot2 for Andrei Vagin 2019-11-21 18:05 ` [PATCHv8 00/34] kernel: Introduce Time Namespace Andrei Vagin 2019-12-11 20:38 ` Dmitry Safonov 2020-01-09 21:09 ` Thomas Gleixner 2020-01-10 9:52 ` Vincenzo Frascino
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=20191112012724.250792-33-dima@arista.com \ --to=dima@arista.com \ --cc=0x7f454c46@gmail.com \ --cc=adrian@lisas.de \ --cc=arnd@arndb.de \ --cc=avagin@gmail.com \ --cc=avagin@openvz.org \ --cc=christian.brauner@ubuntu.com \ --cc=containers@lists.linux-foundation.org \ --cc=criu@openvz.org \ --cc=ebiederm@xmission.com \ --cc=gorcunov@openvz.org \ --cc=hpa@zytor.com \ --cc=jannh@google.com \ --cc=jdike@addtoit.com \ --cc=linux-api@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@kernel.org \ --cc=mingo@redhat.com \ --cc=oleg@redhat.com \ --cc=shuah@kernel.org \ --cc=tglx@linutronix.de \ --cc=vincenzo.frascino@arm.com \ --cc=x86@kernel.org \ --cc=xemul@virtuozzo.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: linkBe 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.