Exemple #1
0
static void cancel_timer_event_by_entry(fsif_entry_t *entry)
{
    static char  *stopped = "stopped";

    unsigned int  srcid;

    if (timer_active(entry)) {
        fsif_get_field_by_entry(entry, fldtype_unsignd, TIMER_SRCID, &srcid);
        cancel_timer_event_by_srcid(srcid);
        fsif_set_field_by_entry(entry, fldtype_string, TIMER_STATE, &stopped);
    }
}
Exemple #2
0
static int _bm_start_timer(unsigned int id)
{
	if (timer_active(id))
	{
		if(bm_get_time(bm_mycfg->tindex[id]->start)!=0)
		{
			LM_ERR("error getting current time\n");
			return -1;
		}
	}

	return 1;
}
Exemple #3
0
void
__ssx_timer_schedule(SsxTimer* timer)
{
    SsxTimeQueue* tq = &__ssx_time_queue;

    if (!timer_active(timer)) {
        ssx_deque_push_back((SsxDeque*)tq, (SsxDeque*)timer);
    }

    if (timer->timeout < tq->next_timeout) {
        tq->next_timeout = timer->timeout;
        if (tq->cursor == 0) {
            __ssx_schedule_hardware_timeout(tq->next_timeout);
        }
    }
}
Exemple #4
0
int
ssx_timer_info_get(SsxTimer    *timer,
                   SsxTimebase *timeout,
                   int         *active)
                   
{
    if (SSX_ERROR_CHECK_API) {
        SSX_ERROR_IF(timer == 0, SSX_INVALID_TIMER_AT_INFO);
    }

    if (timeout) {
        *timeout = timer->timeout;
    }
    if (active) {
        *active = timer_active(timer);
    }

    return SSX_OK;
}
Exemple #5
0
int
__ssx_timer_cancel(SsxTimer *timer)
{
    int rc;
    SsxDeque* timer_deque = (SsxDeque*)timer;
    SsxTimeQueue* tq = &__ssx_time_queue;

    if (!timer_active(timer)) {

        rc = -SSX_TIMER_NOT_ACTIVE;

    } else {

        if (timer_deque == tq->cursor) {
            tq->cursor = tq->cursor->next;
        }
        ssx_deque_delete(timer_deque);
        rc = 0;
    }
    return rc;
}
Exemple #6
0
static int _bm_log_timer(unsigned int id)
{
	/* BM_CLOCK_REALTIME */
	bm_timeval_t now;
	unsigned long long tdiff;
	benchmark_timer_t *timer;

	if (!timer_active(id))
		return 1;

	if(bm_get_time(&now)<0)
	{
		LM_ERR("error getting current time\n");
		return -1;
	}

	timer = bm_mycfg->tindex[id];
	tdiff = bm_diff_time(timer->start, &now);
	_bm_last_time_diff = (int)tdiff;

	/* What to do
	 * - update min, max, sum
	 * - if granularity hit: Log, reset min/max
	 */

	lock_get(timer->lock);

	timer->sum += tdiff;
	timer->last_sum += tdiff;
	timer->calls++;
	timer->global_calls++;

	if (tdiff < timer->last_min)
		timer->last_min = tdiff;

	if (tdiff > timer->last_max)
		timer->last_max = tdiff;

	if (tdiff < timer->global_min)
		timer->global_min = tdiff;

	if (tdiff > timer->global_max)
		timer->global_max = tdiff;


	if (bm_mycfg->granularity > 0 && timer->calls >= bm_mycfg->granularity)
	{
		LM_GEN1(bm_mycfg->loglevel, "benchmark (timer %s [%d]): %llu ["
			" msgs/total/min/max/avg - LR:"
			" %i/%lld/%lld/%lld/%f | GB: %lld/%lld/%lld/%lld/%f]\n",
			timer->name,
			id,
			tdiff,
			timer->calls,
			timer->last_sum,
			timer->last_min,
			timer->last_max,
			((double)timer->last_sum)/bm_mycfg->granularity,
			timer->global_calls,
			timer->sum,
			timer->global_min,
			timer->global_max,
			((double)timer->sum)/timer->global_calls);

		soft_reset_timer(timer);
	}

	lock_release(timer->lock);

	return 1;
}
Exemple #7
0
int _bm_log_timer(unsigned int id)
{
    /* BM_CLOCK_REALTIME */
    bm_timeval_t now;
    unsigned long long tdiff;

    if (!timer_active(id))
        return 1;

    if(bm_get_time(&now)<0)
    {
        LM_ERR("error getting current time\n");
        return -1;
    }

    tdiff = bm_diff_time(bm_mycfg->tindex[id]->start, &now);
    _bm_last_time_diff = (int)tdiff;

    /* What to do
     * - update min, max, sum
     * - if granularity hit: Log, reset min/max
     */

    bm_mycfg->tindex[id]->sum += tdiff;
    bm_mycfg->tindex[id]->last_sum += tdiff;
    bm_mycfg->tindex[id]->calls++;

    if (tdiff < bm_mycfg->tindex[id]->last_min)
        bm_mycfg->tindex[id]->last_min = tdiff;

    if (tdiff > bm_mycfg->tindex[id]->last_max)
        bm_mycfg->tindex[id]->last_max = tdiff;

    if (tdiff < bm_mycfg->tindex[id]->global_min)
        bm_mycfg->tindex[id]->global_min = tdiff;

    if (tdiff > bm_mycfg->tindex[id]->global_max)
        bm_mycfg->tindex[id]->global_max = tdiff;


    if ((bm_mycfg->tindex[id]->calls % bm_mycfg->granularity) == 0)
    {
        LM_GEN1(bm_mycfg->loglevel, "benchmark (timer %s [%d]): %llu ["
                " msgs/total/min/max/avg - LR:"
                " %i/%llu/%llu/%llu/%f | GB: %llu/%llu/%llu/%llu/%f]\n",
                bm_mycfg->tindex[id]->name,
                id,
                tdiff,
                bm_mycfg->granularity,
                bm_mycfg->tindex[id]->last_sum,
                bm_mycfg->tindex[id]->last_min,
                bm_mycfg->tindex[id]->last_max,
                ((double)bm_mycfg->tindex[id]->last_sum)/bm_mycfg->granularity,
                bm_mycfg->tindex[id]->calls,
                bm_mycfg->tindex[id]->sum,
                bm_mycfg->tindex[id]->global_min,
                bm_mycfg->tindex[id]->global_max,
                ((double)bm_mycfg->tindex[id]->sum)/bm_mycfg->tindex[id]->calls);

        bm_mycfg->tindex[id]->last_sum = 0;
        bm_mycfg->tindex[id]->last_max = 0;
        bm_mycfg->tindex[id]->last_min = 0xffffffff;
    }

    return 1;
}