// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include "config.h"

#include <stddef.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sched.h>
#include <unistd.h>

#ifdef HAVE_SYS_SELECT_H
#include <sys/select.h>
#endif

#if defined (__i386__) || defined (__x86_64__)
#include <xmmintrin.h>
#endif

#include "runtime.h"

/* Spin wait.  */

void
runtime_procyield (uint32 cnt)
{
  volatile uint32 i;

  for (i = 0; i < cnt; ++i)
    {
#if defined (__i386__) || defined (__x86_64__)
      _mm_pause ();
#endif
    }
}

/* Ask the OS to reschedule this thread.  */

void runtime_osyield(void)
  __attribute__ ((no_split_stack));

void
runtime_osyield (void)
{
  sched_yield ();
}

/* Sleep for some number of microseconds.  */

void
runtime_usleep (uint32 us)
{
  struct timeval tv;

  tv.tv_sec = us / 1000000;
  tv.tv_usec = us % 1000000;
  select (0, NULL, NULL, NULL, &tv);
}
