示例#1
0
文件: crono.c 项目: rjack/thesis
void
gettime (struct timeval *tv)
{
	assert (tv != NULL);

	gettimeofday (tv, NULL);
	tv_normalize (tv);
}
示例#2
0
void bfd_recvtimer_update(struct bfd_session *bs)
{
	struct timeval tv = {.tv_sec = 0, .tv_usec = bs->detect_TO};

	/* Don't add event if peer is deactivated. */
	if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN))
		return;

	tv_normalize(&tv);
#ifdef BFD_EVENT_DEBUG
	log_debug("%s: sec = %ld, usec = %ld", __func__, tv.tv_sec, tv.tv_usec);
#endif /* BFD_EVENT_DEBUG */

	/* Remove previous schedule if any. */
	if (bs->recvtimer_ev)
		bfd_recvtimer_delete(bs);

	thread_add_timer_tv(master, bfd_recvtimer_cb, bs, &tv,
			    &bs->recvtimer_ev);
}

void bfd_echo_recvtimer_update(struct bfd_session *bs)
{
	struct timeval tv = {.tv_sec = 0, .tv_usec = bs->echo_detect_TO};

	/* Don't add event if peer is deactivated. */
	if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN))
		return;

	tv_normalize(&tv);
#ifdef BFD_EVENT_DEBUG
	log_debug("%s: sec = %ld, usec = %ld", __func__, tv.tv_sec, tv.tv_usec);
#endif /* BFD_EVENT_DEBUG */

	/* Remove previous schedule if any. */
	if (bs->echo_recvtimer_ev)
		bfd_echo_recvtimer_delete(bs);

	thread_add_timer_tv(master, bfd_echo_recvtimer_cb, bs, &tv,
			    &bs->echo_recvtimer_ev);
}

void bfd_xmttimer_update(struct bfd_session *bs, uint64_t jitter)
{
	struct timeval tv = {.tv_sec = 0, .tv_usec = jitter};

	/* Don't add event if peer is deactivated. */
	if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN))
		return;

	tv_normalize(&tv);
#ifdef BFD_EVENT_DEBUG
	log_debug("%s: sec = %ld, usec = %ld", __func__, tv.tv_sec, tv.tv_usec);
#endif /* BFD_EVENT_DEBUG */

	/* Remove previous schedule if any. */
	if (bs->xmttimer_ev)
		bfd_xmttimer_delete(bs);

	thread_add_timer_tv(master, bfd_xmt_cb, bs, &tv, &bs->xmttimer_ev);
}

void bfd_echo_xmttimer_update(struct bfd_session *bs, uint64_t jitter)
{
	struct timeval tv = {.tv_sec = 0, .tv_usec = jitter};

	/* Don't add event if peer is deactivated. */
	if (BFD_CHECK_FLAG(bs->flags, BFD_SESS_FLAG_SHUTDOWN))
		return;

	tv_normalize(&tv);
#ifdef BFD_EVENT_DEBUG
	log_debug("%s: sec = %ld, usec = %ld", __func__, tv.tv_sec, tv.tv_usec);
#endif /* BFD_EVENT_DEBUG */

	/* Remove previous schedule if any. */
	if (bs->echo_xmttimer_ev)
		bfd_echo_xmttimer_delete(bs);

	thread_add_timer_tv(master, bfd_echo_xmt_cb, bs, &tv,
			    &bs->echo_xmttimer_ev);
}

void bfd_recvtimer_delete(struct bfd_session *bs)
{
	if (bs->recvtimer_ev == NULL)
		return;

	thread_cancel(bs->recvtimer_ev);
	bs->recvtimer_ev = NULL;
}

void bfd_echo_recvtimer_delete(struct bfd_session *bs)
{
	if (bs->echo_recvtimer_ev == NULL)
		return;

	thread_cancel(bs->echo_recvtimer_ev);
	bs->echo_recvtimer_ev = NULL;
}

void bfd_xmttimer_delete(struct bfd_session *bs)
{
	if (bs->xmttimer_ev == NULL)
		return;

	thread_cancel(bs->xmttimer_ev);
	bs->xmttimer_ev = NULL;
}

void bfd_echo_xmttimer_delete(struct bfd_session *bs)
{
	if (bs->echo_xmttimer_ev == NULL)
		return;

	thread_cancel(bs->echo_xmttimer_ev);
	bs->echo_xmttimer_ev = NULL;
}