Пример #1
0
void _starpu_timing_init(void)
{
  static starpu_tick_t t1, t2;
  int i;

  if (inited) return;

  residual = (unsigned long long)1 << 63;
  
  for(i = 0; i < 20; i++)
    {
      STARPU_GET_TICK(t1);
      STARPU_GET_TICK(t2);
      residual = STARPU_MIN(residual, TICK_RAW_DIFF(t1, t2));
    }
  
  {
    struct timeval tv1,tv2;
    
    STARPU_GET_TICK(t1);
    gettimeofday(&tv1,0);
    usleep(500000);
    STARPU_GET_TICK(t2);
    gettimeofday(&tv2,0);
    scale = ((tv2.tv_sec*1e6 + tv2.tv_usec) -
	     (tv1.tv_sec*1e6 + tv1.tv_usec)) / 
      (double)(TICK_DIFF(t1, t2));
  }

  STARPU_GET_TICK(reference_start_tick);

  inited = 1;
}
Пример #2
0
//Commands
local void Cblink(const char *cmd, const char *params, Player *p, const Target *target)
{
    if (target->type != T_ARENA)
        return; //Ignore non-pub commands

    PlayerData *pdata = getPlayerData(p);
    if (!pdata->canBlink)
    {
        chat->SendMessage(p, "You do not have an item capable of blink on your ship.");
        return;
    }

    if (TICK_DIFF(current_ticks(), pdata->lastBlink) < pdata->blinkDelay)
    {
        chat->SendMessage(p, "Blink is currently recharging.");
        return;
    }

    pdata->blinkActivated = true;

    if (!params || !*params)
        pdata->blinkDirection = rand()%360;
    else
        pdata->blinkDirection = atoi(params);
}
Пример #3
0
void starpu_clock_gettime(struct timespec *ts)
{
	starpu_tick_t tick_now;

	STARPU_GET_TICK(tick_now);

	uint64_t elapsed_ticks = TICK_DIFF(reference_start_tick, tick_now);

	/* We convert this number into nano-seconds so that we can fill the
	 * timespec structure. */
	uint64_t elapsed_ns = (uint64_t)(((double)elapsed_ticks)*(scale*1000.0));
	
	long tv_nsec = (elapsed_ns % 1000000000);
	time_t tv_sec = (elapsed_ns / 1000000000);

	ts->tv_sec = tv_sec;
	ts->tv_nsec = tv_nsec;
}
Пример #4
0
local void Ctime(const char *cmd, const char *params, Player *p, const Target *target)
{
	Arena *arena = p->arena;
	int tout;
	timerdata *td = P_ARENA_DATA(arena, tdkey);
	char time_string[40];

	if (td->enabled)
	{
		tout = TICK_DIFF(td->timeout, current_ticks());
		get_time_string(tout, time_string);
		chat->SendMessage(p, "Time left: %s.", time_string);
	}
	else if (td->timeout)
	{
		 get_time_string(td->timeout, time_string);
		 chat->SendMessage(p, "Timer paused at: %s.", time_string);
	}
	else
		chat->SendMessage(p, "Time left: 0 seconds.");
}
Пример #5
0
local int TimerMaster(void *nothing)
{
	ticks_t now = current_ticks();
	int j;
	Link *link;
	Arena *arena;
	timerdata *td;

	aman->Lock();
	FOR_EACH_ARENA_P(arena, td, tdkey)
		if (td->enabled && TICK_GT(now, td->timeout))
		{
			lm->LogA(L_DRIVEL, "game_timer", arena, "timer expired");
			DO_CBS(CB_TIMESUP, arena, GameTimerFunc, (arena));
			chat->SendArenaSoundMessage(arena, SOUND_HALLELLULA, "NOTICE: Game over");
			if (td->gamelen)
				td->timeout = TICK_MAKE(now+td->gamelen);
			else
			{
				td->enabled = 0;
				td->timeout = 0;
			}
		}
		else if (td->enabled)
		{
			now = TICK_DIFF(td->timeout, current_ticks())/100;
			for (j = 0; j < MAXWARNMSGS; j++)
				if (now && td->warnmsgs[j] == now)
				{
					if (!(td->warnmsgs[j]%60))
						chat->SendArenaMessage(arena, "NOTICE: %u minute%s remaining.", now/60, now == 60 ? "" : "s");
					else
						chat->SendArenaMessage(arena, "NOTICE: %u seconds remaining.", now);
				}
		}
	aman->Unlock();
	return TRUE;
}