[Spice-devel] [spice 1/7] server: Rename red_get_monotonic_time() to spice_get_monotonic_time_ns()

Frediano Ziglio fziglio at redhat.com
Fri Dec 11 04:59:45 PST 2015


> 
> This is a generic function not tied to the red_xxx functionality and the
> new name clarifies that it returns the time in nanoseconds (unlike
> g_get_monotonic_time()).
> 
> Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
> ---
>  server/dcc-send.c        |  2 +-
>  server/dcc.c             |  4 ++--
>  server/display-channel.c |  8 ++++----
>  server/main-channel.c    |  2 +-
>  server/mjpeg-encoder.c   |  6 +++---
>  server/red-channel.c     | 20 ++++++++++----------
>  server/red-worker.c      | 12 ++++++------
>  server/stream.c          |  2 +-
>  server/utils.h           |  2 +-
>  9 files changed, 29 insertions(+), 29 deletions(-)
> 
> Of course this will conflict with the 'framerate estimate' patch but it
> has not been committed yet anyway. So I'm resubmitting it at the end of
> this patch series since it seems to systematically getting stuck in
> limbo.
> 
> diff --git a/server/dcc-send.c b/server/dcc-send.c
> index 30303e7..a8f42db 100644
> --- a/server/dcc-send.c
> +++ b/server/dcc-send.c
> @@ -1689,7 +1689,7 @@ static int red_marshall_stream_data(RedChannelClient
> *rcc,
>      }
>  
>      StreamAgent *agent = &dcc->stream_agents[get_stream_id(display,
>      stream)];
> -    uint64_t time_now = red_get_monotonic_time();
> +    uint64_t time_now = spice_get_monotonic_time_ns();
>      size_t outbuf_size;
>  
>      if (!dcc->use_mjpeg_encoder_rate_control) {
> diff --git a/server/dcc.c b/server/dcc.c
> index a893ea4..f47cbec 100644
> --- a/server/dcc.c
> +++ b/server/dcc.c
> @@ -415,7 +415,7 @@ static void dcc_create_all_streams(DisplayChannelClient
> *dcc)
>  static int display_channel_client_wait_for_init(DisplayChannelClient *dcc)
>  {
>      dcc->expect_init = TRUE;
> -    uint64_t end_time = red_get_monotonic_time() + DISPLAY_CLIENT_TIMEOUT;
> +    uint64_t end_time = spice_get_monotonic_time_ns() +
> DISPLAY_CLIENT_TIMEOUT;
>      for (;;) {
>          red_channel_client_receive(RED_CHANNEL_CLIENT(dcc));
>          if (!red_channel_client_is_connected(RED_CHANNEL_CLIENT(dcc))) {
> @@ -431,7 +431,7 @@ static int
> display_channel_client_wait_for_init(DisplayChannelClient *dcc)
>              }
>              return TRUE;
>          }
> -        if (red_get_monotonic_time() > end_time) {
> +        if (spice_get_monotonic_time_ns() > end_time) {
>              spice_warning("timeout");
>              red_channel_client_disconnect(RED_CHANNEL_CLIENT(dcc));
>              break;
> diff --git a/server/display-channel.c b/server/display-channel.c
> index 7cbcea5..442b8fa 100644
> --- a/server/display-channel.c
> +++ b/server/display-channel.c
> @@ -181,7 +181,7 @@ int display_channel_get_streams_timeout(DisplayChannel
> *display)
>      Ring *ring = &display->streams;
>      RingItem *item = ring;
>  
> -    red_time_t now = red_get_monotonic_time();
> +    red_time_t now = spice_get_monotonic_time_ns();
>      while ((item = ring_next(ring, item))) {
>          Stream *stream;
>  
> @@ -1187,7 +1187,7 @@ void display_channel_process_draw(DisplayChannel
> *display, RedDrawable *red_draw
>  
>  int display_channel_wait_for_migrate_data(DisplayChannel *display)
>  {
> -    uint64_t end_time = red_get_monotonic_time() +
> DISPLAY_CLIENT_MIGRATE_DATA_TIMEOUT;
> +    uint64_t end_time = spice_get_monotonic_time_ns() +
> DISPLAY_CLIENT_MIGRATE_DATA_TIMEOUT;
>      RedChannel *channel = &display->common.base;
>      RedChannelClient *rcc;
>      int ret = FALSE;
> @@ -1212,7 +1212,7 @@ int
> display_channel_wait_for_migrate_data(DisplayChannel *display)
>              ret = TRUE;
>              break;
>          }
> -        if (red_get_monotonic_time() > end_time) {
> +        if (spice_get_monotonic_time_ns() > end_time) {
>              spice_warning("timeout");
>              red_channel_client_disconnect(rcc);
>              break;
> @@ -1371,7 +1371,7 @@ Drawable
> *display_channel_drawable_try_new(DisplayChannel *display,
>  
>      bzero(drawable, sizeof(Drawable));
>      drawable->refs = 1;
> -    drawable->creation_time = red_get_monotonic_time();
> +    drawable->creation_time = spice_get_monotonic_time_ns();
>      ring_item_init(&drawable->list_link);
>      ring_item_init(&drawable->surface_list_link);
>      ring_item_init(&drawable->tree_item.base.siblings_link);
> diff --git a/server/main-channel.c b/server/main-channel.c
> index e74ba76..6cd2e59 100644
> --- a/server/main-channel.c
> +++ b/server/main-channel.c
> @@ -588,7 +588,7 @@ static void main_channel_marshall_notify(RedChannelClient
> *rcc,
>      SpiceMsgNotify notify;
>  
>      red_channel_client_init_send_data(rcc, SPICE_MSG_NOTIFY, &item->base);
> -    notify.time_stamp = red_get_monotonic_time(); // TODO - move to
> main_new_notify_item
> +    notify.time_stamp = spice_get_monotonic_time_ns(); // TODO - move to
> main_new_notify_item
>      notify.severity = SPICE_NOTIFY_SEVERITY_WARN;
>      notify.visibilty = SPICE_NOTIFY_VISIBILITY_HIGH;
>      notify.what = SPICE_WARN_GENERAL;
> diff --git a/server/mjpeg-encoder.c b/server/mjpeg-encoder.c
> index 08af1eb..9c51f7b 100644
> --- a/server/mjpeg-encoder.c
> +++ b/server/mjpeg-encoder.c
> @@ -716,7 +716,7 @@ static int mjpeg_encoder_start_frame(MJpegEncoder
> *encoder,
>          uint64_t now;
>          uint64_t interval;
>  
> -        now = red_get_monotonic_time();
> +        now = spice_get_monotonic_time_ns();
>  
>          if (!rate_control->adjusted_fps_start_time) {
>              rate_control->adjusted_fps_start_time = now;
> @@ -995,7 +995,7 @@ static void mjpeg_encoder_decrease_bit_rate(MJpegEncoder
> *encoder)
>      if (rate_control->warmup_start_time) {
>          uint64_t now;
>  
> -        now = red_get_monotonic_time();
> +        now = spice_get_monotonic_time_ns();
>          if (now - rate_control->warmup_start_time < MJPEG_WARMUP_TIME) {
>              spice_debug("during warmup. ignoring");
>              return;
> @@ -1351,7 +1351,7 @@ MJpegEncoder *mjpeg_encoder_new(uint64_t
> starting_bit_rate,
>          encoder->rate_control.during_quality_eval = TRUE;
>          encoder->rate_control.quality_eval_data.type =
>          MJPEG_QUALITY_EVAL_TYPE_SET;
>          encoder->rate_control.quality_eval_data.reason =
>          MJPEG_QUALITY_EVAL_REASON_RATE_CHANGE;
> -        encoder->rate_control.warmup_start_time = red_get_monotonic_time();
> +        encoder->rate_control.warmup_start_time =
> spice_get_monotonic_time_ns();
>      } else {
>          encoder->cbs.get_roundtrip_ms = NULL;
>          mjpeg_encoder_reset_quality(encoder, MJPEG_LEGACY_STATIC_QUALITY_ID,
>          MJPEG_MAX_FPS, 0);
> diff --git a/server/red-channel.c b/server/red-channel.c
> index 7dfb9bf..361f1a5 100644
> --- a/server/red-channel.c
> +++ b/server/red-channel.c
> @@ -553,7 +553,7 @@ static void red_channel_client_send_ping(RedChannelClient
> *rcc)
>  
>      red_channel_client_init_send_data(rcc, SPICE_MSG_PING, NULL);
>      ping.id = rcc->latency_monitor.id;
> -    ping.timestamp = red_get_monotonic_time();
> +    ping.timestamp = spice_get_monotonic_time_ns();
>      spice_marshall_msg_ping(rcc->send_data.marshaller, &ping);
>      red_channel_client_begin_send_message(rcc);
>  }
> @@ -1432,7 +1432,7 @@ static void
> red_channel_client_restart_ping_timer(RedChannelClient *rcc)
>  {
>      uint64_t passed, timeout;
>  
> -    passed = red_get_monotonic_time();
> +    passed = spice_get_monotonic_time_ns();
>      passed = passed - rcc->latency_monitor.last_pong_time;
>      passed /= 1000*1000;
>      timeout = PING_TEST_IDLE_NET_TIMEOUT_MS;
> @@ -1480,7 +1480,7 @@ static void
> red_channel_client_handle_pong(RedChannelClient *rcc, SpiceMsgPing *
>          return;
>      }
>  
> -    now = red_get_monotonic_time();
> +    now = spice_get_monotonic_time_ns();
>  
>      if (rcc->latency_monitor.state == PING_STATE_WARMUP) {
>          rcc->latency_monitor.state = PING_STATE_LATENCY;
> @@ -2318,7 +2318,7 @@ int
> red_channel_client_wait_outgoing_item(RedChannelClient *rcc,
>          return TRUE;
>      }
>      if (timeout != -1) {
> -        end_time = red_get_monotonic_time() + timeout;
> +        end_time = spice_get_monotonic_time_ns() + timeout;
>      } else {
>          end_time = UINT64_MAX;
>      }
> @@ -2329,7 +2329,7 @@ int
> red_channel_client_wait_outgoing_item(RedChannelClient *rcc,
>          red_channel_client_receive(rcc);
>          red_channel_client_send(rcc);
>      } while ((blocked = red_channel_client_blocked(rcc)) &&
> -             (timeout == -1 || red_get_monotonic_time() < end_time));
> +             (timeout == -1 || spice_get_monotonic_time_ns() < end_time));
>  
>      if (blocked) {
>          spice_warning("timeout");
> @@ -2351,7 +2351,7 @@ int
> red_channel_client_wait_pipe_item_sent(RedChannelClient *rcc,
>      spice_info(NULL);
>  
>      if (timeout != -1) {
> -        end_time = red_get_monotonic_time() + timeout;
> +        end_time = spice_get_monotonic_time_ns() + timeout;
>      } else {
>          end_time = UINT64_MAX;
>      }
> @@ -2365,7 +2365,7 @@ int
> red_channel_client_wait_pipe_item_sent(RedChannelClient *rcc,
>      red_channel_client_push(rcc);
>  
>      while((item_in_pipe = ring_item_is_linked(&item->link)) &&
> -          (timeout == -1 || red_get_monotonic_time() < end_time)) {
> +          (timeout == -1 || spice_get_monotonic_time_ns() < end_time)) {
>          usleep(CHANNEL_BLOCKED_SLEEP_DURATION);
>          red_channel_client_receive(rcc);
>          red_channel_client_send(rcc);
> @@ -2378,7 +2378,7 @@ int
> red_channel_client_wait_pipe_item_sent(RedChannelClient *rcc,
>          return FALSE;
>      } else {
>          return red_channel_client_wait_outgoing_item(rcc,
> -                                                     timeout == -1 ? -1 :
> end_time - red_get_monotonic_time());
> +                                                     timeout == -1 ? -1 :
> end_time - spice_get_monotonic_time_ns());
>      }
>  }
>  
> @@ -2390,7 +2390,7 @@ int red_channel_wait_all_sent(RedChannel *channel,
>      int blocked = FALSE;
>  
>      if (timeout != -1) {
> -        end_time = red_get_monotonic_time() + timeout;
> +        end_time = spice_get_monotonic_time_ns() + timeout;
>      } else {
>          end_time = UINT64_MAX;
>      }
> @@ -2398,7 +2398,7 @@ int red_channel_wait_all_sent(RedChannel *channel,
>      red_channel_push(channel);
>      while (((max_pipe_size = red_channel_max_pipe_size(channel)) ||
>             (blocked = red_channel_any_blocked(channel))) &&
> -           (timeout == -1 || red_get_monotonic_time() < end_time)) {
> +           (timeout == -1 || spice_get_monotonic_time_ns() < end_time)) {
>          spice_debug("pipe-size %u blocked %d", max_pipe_size, blocked);
>          usleep(CHANNEL_BLOCKED_SLEEP_DURATION);
>          red_channel_receive(channel);
> diff --git a/server/red-worker.c b/server/red-worker.c
> index baa8458..15e7d12 100644
> --- a/server/red-worker.c
> +++ b/server/red-worker.c
> @@ -228,7 +228,7 @@ static int red_process_display(RedWorker *worker,
> uint32_t max_pipe_size, int *r
>  {
>      QXLCommandExt ext_cmd;
>      int n = 0;
> -    uint64_t start = red_get_monotonic_time();
> +    uint64_t start = spice_get_monotonic_time_ns();
>  
>      if (!worker->running) {
>          *ring_is_empty = TRUE;
> @@ -330,7 +330,7 @@ static int red_process_display(RedWorker *worker,
> uint32_t max_pipe_size, int *r
>          n++;
>          if ((worker->display_channel &&
>               red_channel_all_blocked(&worker->display_channel->common.base))
> -            || red_get_monotonic_time() - start > 10 * 1000 * 1000) {
> +            || spice_get_monotonic_time_ns() - start > 10 * 1000 * 1000) {
>              worker->event_timeout = 0;
>              return n;
>          }
> @@ -397,7 +397,7 @@ static void flush_display_commands(RedWorker *worker)
>          if (ring_is_empty) {
>              break;
>          }
> -        end_time = red_get_monotonic_time() + DISPLAY_CLIENT_TIMEOUT;
> +        end_time = spice_get_monotonic_time_ns() + DISPLAY_CLIENT_TIMEOUT;
>          int sleep_count = 0;
>          for (;;) {
>              red_channel_push(RED_CHANNEL(worker->display_channel));
> @@ -410,7 +410,7 @@ static void flush_display_commands(RedWorker *worker)
>              red_channel_send(channel);
>              // TODO: MC: the whole timeout will break since it takes lowest
>              timeout, should
>              // do it client by client.
> -            if (red_get_monotonic_time() >= end_time) {
> +            if (spice_get_monotonic_time_ns() >= end_time) {
>                  spice_warning("update timeout");
>                  red_disconnect_all_display_TODO_remove_me(channel);
>              } else {
> @@ -441,7 +441,7 @@ static void flush_cursor_commands(RedWorker *worker)
>          if (ring_is_empty) {
>              break;
>          }
> -        end_time = red_get_monotonic_time() + DISPLAY_CLIENT_TIMEOUT;
> +        end_time = spice_get_monotonic_time_ns() + DISPLAY_CLIENT_TIMEOUT;
>          int sleep_count = 0;
>          for (;;) {
>              red_channel_push(RED_CHANNEL(worker->cursor_channel));
> @@ -452,7 +452,7 @@ static void flush_cursor_commands(RedWorker *worker)
>              RedChannel *channel = (RedChannel *)worker->cursor_channel;
>              red_channel_receive(channel);
>              red_channel_send(channel);
> -            if (red_get_monotonic_time() >= end_time) {
> +            if (spice_get_monotonic_time_ns() >= end_time) {
>                  spice_warning("flush cursor timeout");
>                  cursor_channel_disconnect(worker->cursor_channel);
>                  worker->cursor_channel = NULL;
> diff --git a/server/stream.c b/server/stream.c
> index cb7271e..0a569b0 100644
> --- a/server/stream.c
> +++ b/server/stream.c
> @@ -888,7 +888,7 @@ void stream_timeout(DisplayChannel *display)
>      Ring *ring = &display->streams;
>      RingItem *item;
>  
> -    red_time_t now = red_get_monotonic_time();
> +    red_time_t now = spice_get_monotonic_time_ns();
>      item = ring_get_head(ring);
>      while (item) {
>          Stream *stream = SPICE_CONTAINEROF(item, Stream, link);
> diff --git a/server/utils.h b/server/utils.h
> index d7b9e40..7c94880 100644
> --- a/server/utils.h
> +++ b/server/utils.h
> @@ -51,7 +51,7 @@ static inline int test_bit(int index, uint32_t val)
>  typedef int64_t red_time_t;
>  
>  /* FIXME: consider g_get_monotonic_time (), but in microseconds */
> -static inline red_time_t red_get_monotonic_time(void)
> +static inline red_time_t spice_get_monotonic_time_ns(void)
>  {
>      struct timespec time;
>  

Acked-by: Frediano Ziglio <fziglio at redhat.com>

Frediano


More information about the Spice-devel mailing list