command.c: Replace usleep() by nanosleep().
authorAndre Noll <maan@tuebingen.mpg.de>
Sun, 26 Oct 2014 10:36:35 +0000 (11:36 +0100)
committerAndre Noll <maan@tuebingen.mpg.de>
Sun, 9 Nov 2014 10:39:25 +0000 (11:39 +0100)
POSIX.1-2001 declares usleep() obsolete and POSIX.1-2008 removes the
specification. Fortunately, there is only a single user of usleep()
in the tree: com_sender() which needs to retry the command if another
sender command is currently running. This commit changes com_sender()
to call nanosleep() instead of usleep() and adds a comment which
explains why we are going to sleep at this point.

command.c

index db28b39..09c1b78 100644 (file)
--- a/command.c
+++ b/command.c
@@ -363,8 +363,10 @@ static int com_sender(struct command_context *cc)
        for (i = 0; i < 10; i++) {
                mutex_lock(mmd_mutex);
                if (mmd->sender_cmd_data.cmd_num >= 0) {
        for (i = 0; i < 10; i++) {
                mutex_lock(mmd_mutex);
                if (mmd->sender_cmd_data.cmd_num >= 0) {
+                       /* another sender command is active, retry in 100ms */
+                       struct timespec ts = {.tv_nsec = 100 * 1000 * 1000};
                        mutex_unlock(mmd_mutex);
                        mutex_unlock(mmd_mutex);
-                       usleep(100 * 1000);
+                       nanosleep(&ts, NULL);
                        continue;
                }
                mmd->sender_cmd_data = scd;
                        continue;
                }
                mmd->sender_cmd_data = scd;