From: Christian Brauner Date: Wed, 15 Aug 2018 22:39:50 +0000 (+0200) Subject: state: s/sleep()/nanosleep()/ X-Git-Tag: lxc-3.1.0~161^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2531%2Fhead;p=thirdparty%2Flxc.git state: s/sleep()/nanosleep()/ sleep() is not thread-safe but nanosleep() is. Since no resources are allocated in lxc_wait() it is safe to call nanosleep() without cancellation handlers. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/state.c b/src/lxc/state.c index 5afce9a6a..d8a8dab25 100644 --- a/src/lxc/state.c +++ b/src/lxc/state.c @@ -100,8 +100,8 @@ static int fillwaitedstates(const char *strstates, lxc_state_t *states) return 0; } -extern int lxc_wait(const char *lxcname, const char *states, int timeout, - const char *lxcpath) +int lxc_wait(const char *lxcname, const char *states, int timeout, + const char *lxcpath) { int state = -1; lxc_state_t s[MAX_STATE] = {0}; @@ -110,6 +110,11 @@ extern int lxc_wait(const char *lxcname, const char *states, int timeout, return -1; for (;;) { + struct timespec onesec = { + .tv_sec = 1, + .tv_nsec = 0, + }; + state = lxc_cmd_sock_get_state(lxcname, lxcpath, s, timeout); if (state >= 0) break; @@ -125,7 +130,7 @@ extern int lxc_wait(const char *lxcname, const char *states, int timeout, if (timeout == 0) return -1; - sleep(1); + (void)nanosleep(&onesec, NULL); } if (state < 0) {