From 196cf5ad4180bf1f9981f1523833f6de47760e7b Mon Sep 17 00:00:00 2001 From: Jia Zhang Date: Fri, 28 Aug 2020 14:38:53 +0000 Subject: [PATCH] rune/libenclave: Work around nanosleep() issue nanosleep() may return the remaining duration longer than requested one due to timer slack. Signed-off-by: Jia Zhang --- rune/libenclave/internal/runtime/pal/pal_linux.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/rune/libenclave/internal/runtime/pal/pal_linux.go b/rune/libenclave/internal/runtime/pal/pal_linux.go index 5f2c7a6..069979b 100644 --- a/rune/libenclave/internal/runtime/pal/pal_linux.go +++ b/rune/libenclave/internal/runtime/pal/pal_linux.go @@ -1,5 +1,14 @@ package enclave_runtime_pal // import "github.com/opencontainers/runc/libenclave/internal/runtime/pal" +/* +#include + +static void workaround_nanosleep(void) { + // nanosleep() may return the remaining duration longer than + // requested one due to timer slack. + prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); +} +*/ import "C" import ( @@ -26,6 +35,8 @@ func (pal *enclaveRuntimePal) Init(args string, logLevel string) error { } pal.version = ver + C.workaround_nanosleep(); + return api.init(args, logLevel) } -- GitLab