From: Alex Wang Date: Wed, 16 Oct 2013 03:32:33 +0000 (+0000) Subject: cfm: Add cfm_wake_time() function. X-Git-Tag: sliver-openvswitch-2.0.90-1~7^2~58 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=526d174aaba5f3aa99e4294e89ca41cce96dbd35;p=sliver-openvswitch.git cfm: Add cfm_wake_time() function. This commit adds a new function "cfm_wake_time()" that returns the next wakeup time associated with the "struct cfm". Signed-off-by: Alex Wang Signed-off-by: Ethan Jackson Acked-by: Ethan Jackson --- diff --git a/lib/cfm.c b/lib/cfm.c index e8f86dc9f..730a00f81 100644 --- a/lib/cfm.c +++ b/lib/cfm.c @@ -580,12 +580,27 @@ cfm_compose_ccm(struct cfm *cfm, struct ofpbuf *packet, void cfm_wait(struct cfm *cfm) OVS_EXCLUDED(mutex) { + poll_timer_wait_until(cfm_wake_time(cfm)); +} + + +/* Returns the next cfm wakeup time. */ +long long int +cfm_wake_time(struct cfm *cfm) OVS_EXCLUDED(mutex) +{ + long long int retval; + + if (!cfm) { + return LLONG_MAX; + } + ovs_mutex_lock(&mutex); - timer_wait(&cfm->tx_timer); - timer_wait(&cfm->fault_timer); + retval = MIN(cfm->tx_timer.t, cfm->fault_timer.t); ovs_mutex_unlock(&mutex); + return retval; } + /* Configures 'cfm' with settings from 's'. */ bool cfm_configure(struct cfm *cfm, const struct cfm_settings *s) diff --git a/lib/cfm.h b/lib/cfm.h index cff713f98..9d1ea4c35 100644 --- a/lib/cfm.h +++ b/lib/cfm.h @@ -82,4 +82,5 @@ int cfm_get_opup(const struct cfm *); void cfm_get_remote_mpids(const struct cfm *, uint64_t **rmps, size_t *n_rmps); const char *cfm_fault_reason_to_str(int fault); +long long int cfm_wake_time(struct cfm*); #endif /* cfm.h */