Signed-off-by: Angus Salkeld <asalkeld(a)redhat.com>
---
README.devmap | 5 +-
exec/Makefile.am | 2 +-
exec/apidef.c | 7 +-
exec/main.c | 5 -
exec/timer.c | 266 +++++------------------------------------
exec/timer.h | 19 +--
exec/tlist.h | 318 -------------------------------------------------
exec/totemconfig.c | 2 +-
exec/totemsrp.c | 21 ++--
lib/votequorum.c | 1 +
services/pload.c | 7 +-
services/votequorum.c | 14 +-
12 files changed, 64 insertions(+), 603 deletions(-)
delete mode 100644 exec/tlist.h
diff --git a/README.devmap b/README.devmap
index 2300c38..89e4caf 100644
--- a/README.devmap
+++ b/README.devmap
@@ -289,10 +289,7 @@ exec/sync.{c|h}
The synchronization service implementation.
exec/timer.{c|h}
- Threaded based timer service.
-
-exec/tlist.h
- Timer list used to expire timers.
+ Threaded based timer service (deprecated - use qb_loop_timer).
exec/totemconfig.{c.h}
The totem configuration configurator from data parsed with aisparser
diff --git a/exec/Makefile.am b/exec/Makefile.am
index f877551..d5f71cc 100644
--- a/exec/Makefile.am
+++ b/exec/Makefile.am
@@ -68,7 +68,7 @@ SHARED_LIBS_SO = $(SHARED_LIBS:%.so.$(SONAME)=%.so)
SHARED_LIBS_SO_TWO = $(SHARED_LIBS:%.so.$(SONAME)=%.so.$(SOMAJOR))
noinst_HEADERS = apidef.h crypto.h mainconfig.h main.h tsafe.h \
- quorum.h service.h sync.h timer.h tlist.h totemconfig.h \
+ quorum.h service.h sync.h timer.h totemconfig.h \
totemmrp.h totemnet.h totemudp.h totemiba.h totemrrp.h \
totemsrp.h util.h vsf.h wthread.h schedwrk.h \
evil.h syncv2.h fsm.h
diff --git a/exec/apidef.c b/exec/apidef.c
index e477f2c..c101d4c 100644
--- a/exec/apidef.c
+++ b/exec/apidef.c
@@ -37,13 +37,16 @@
#include <stdlib.h>
#include <string.h>
+#include <qb/qbutil.h>
+#include <qb/qbloop.h>
+#include <qb/qbipcs.h>
+
#include <corosync/corotypes.h>
#include <corosync/lcr/lcr_ifact.h>
#include <corosync/totem/totempg.h>
#include <corosync/totem/totemip.h>
#include <corosync/totem/totem.h>
#include <corosync/engine/logsys.h>
-#include <qb/qbipcs.h>
#include "util.h"
#include "timer.h"
#include "sync.h"
@@ -96,7 +99,7 @@ static struct corosync_api_v1 apidef_corosync_api_v1 = {
.timer_add_duration = corosync_timer_add_duration,
.timer_add_absolute = corosync_timer_add_absolute,
.timer_delete = corosync_timer_delete,
- .timer_time_get = corosync_timer_time_get,
+ .timer_time_get = qb_util_nano_from_epoch_get,
.timer_expire_time_get = corosync_timer_expire_time_get,
.ipc_source_set = message_source_set,
.ipc_source_is_local = message_source_is_local,
diff --git a/exec/main.c b/exec/main.c
index 00ac197..30d8d0f 100644
--- a/exec/main.c
+++ b/exec/main.c
@@ -1433,11 +1433,6 @@ int main (int argc, char **argv, char **envp)
/* callthis after our fork() */
tsafe_init (envp);
- corosync_timer_init (
- serialize_lock,
- serialize_unlock,
- sched_priority);
-
corosync_poll_handle = qb_loop_create ();
/*
diff --git a/exec/timer.c b/exec/timer.c
index 1d71f14..92a2241 100644
--- a/exec/timer.c
+++ b/exec/timer.c
@@ -35,267 +35,57 @@
#include <config.h>
-#include <pthread.h>
-#include <pwd.h>
-#include <grp.h>
-#include <sys/types.h>
-#include <sys/poll.h>
-#include <sys/uio.h>
-#include <sys/mman.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <errno.h>
-#include <signal.h>
-#include <sched.h>
-#include <time.h>
-
-#include <corosync/swab.h>
-#include <corosync/corotypes.h>
-#include <corosync/list.h>
-#include <corosync/lcr/lcr_ifact.h>
-#include <qb/qbloop.h>
-#include <corosync/totem/totempg.h>
-#include <corosync/engine/objdb.h>
-#include <corosync/engine/config.h>
-#define LOG_SERVICE LOG_SERVICE_IPC
-#include <corosync/engine/logsys.h>
-
-#include "poll.h"
-#include "totemsrp.h"
-#include "mainconfig.h"
-#include "totemconfig.h"
-#include "main.h"
-#include "sync.h"
-#include "tlist.h"
-#include "util.h"
#include "timer.h"
-
-#define SERVER_BACKLOG 5
-
-static pthread_mutex_t timer_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-static pthread_t expiry_thread;
-
-static pthread_attr_t thread_attr;
-
-static struct timerlist timers_timerlist;
-
-static int sched_priority = 0;
-
-static void (*timer_serialize_lock_fn) (void);
-
-static void (*timer_serialize_unlock_fn) (void);
-
-static void *prioritized_timer_thread (void *data);
-
-extern void pthread_exit(void *) __attribute__((noreturn));
-
-/*
- * This thread runs at the highest priority to run system wide timers
- */
-static void *prioritized_timer_thread (void *data)
-{
- int fds;
- unsigned long long timeout;
-
-#if defined(HAVE_PTHREAD_SETSCHEDPARAM) && defined(HAVE_SCHED_GET_PRIORITY_MAX)
- if (sched_priority != 0) {
- struct sched_param sched_param;
-
- sched_param.sched_priority = sched_priority;
- pthread_setschedparam (expiry_thread, SCHED_RR, &sched_param);
- }
-#endif
-
- pthread_mutex_unlock (&timer_mutex);
- for (;;) {
- timer_serialize_lock_fn ();
- timeout = timerlist_msec_duration_to_expire (&timers_timerlist);
- if (timeout != -1 && timeout > 0xFFFFFFFF) {
- timeout = 0xFFFFFFFE;
- }
- timer_serialize_unlock_fn ();
- fds = poll (NULL, 0, timeout);
- if (fds < 0 && errno == EINTR) {
- continue;
- }
- if (fds < 0) {
- return NULL;
- }
- pthread_mutex_lock (&timer_mutex);
- timer_serialize_lock_fn ();
-
- timerlist_expire (&timers_timerlist);
-
- timer_serialize_unlock_fn ();
- pthread_mutex_unlock (&timer_mutex);
- }
-}
-
-static void sigusr1_handler (int num) {
-#ifdef COROSYNC_SOLARIS
- /* Rearm the signal facility */
- signal (num, sigusr1_handler);
-#endif
-}
-
-int corosync_timer_init (
- void (*serialize_lock_fn) (void),
- void (*serialize_unlock_fn) (void),
- int sched_priority_in)
-{
- int res;
-
- timer_serialize_lock_fn = serialize_lock_fn;
- timer_serialize_unlock_fn = serialize_unlock_fn;
- sched_priority = sched_priority_in;
-
- timerlist_init (&timers_timerlist);
-
- signal (SIGUSR1, sigusr1_handler);
-
- pthread_mutex_lock (&timer_mutex);
- pthread_attr_init (&thread_attr);
- pthread_attr_setstacksize (&thread_attr, 100000);
- pthread_attr_setdetachstate (&thread_attr, PTHREAD_CREATE_DETACHED);
- res = pthread_create (&expiry_thread, &thread_attr,
- prioritized_timer_thread, NULL);
-
- return (res);
-}
+#include "main.h"
+#include <qb/qbdefs.h>
+#include <qb/qbutil.h>
int corosync_timer_add_absolute (
- unsigned long long nanosec_from_epoch,
- void *data,
- void (*timer_fn) (void *data),
- timer_handle *handle)
+ unsigned long long nanosec_from_epoch,
+ void *data,
+ void (*timer_fn) (void *data),
+ corosync_timer_handle *handle)
{
- int res;
- int unlock;
-
- if (pthread_equal (pthread_self(), expiry_thread) != 0) {
- unlock = 0;
- } else {
- unlock = 1;
- pthread_mutex_lock (&timer_mutex);
- }
-
- res = timerlist_add_absolute (
- &timers_timerlist,
- timer_fn,
- data,
- nanosec_from_epoch,
- handle);
-
- if (unlock) {
- pthread_mutex_unlock (&timer_mutex);
- }
-
- pthread_kill (expiry_thread, SIGUSR1);
-
- return (res);
+ uint64_t expire_time = nanosec_from_epoch - qb_util_nano_current_get();
+ return qb_loop_timer_add(corosync_poll_handle_get(),
+ QB_LOOP_MED,
+ expire_time / QB_TIME_NS_IN_MSEC,
+ data,
+ timer_fn,
+ handle);
}
int corosync_timer_add_duration (
unsigned long long nanosec_duration,
void *data,
void (*timer_fn) (void *data),
- timer_handle *handle)
+ corosync_timer_handle *handle)
{
- int res;
- int unlock;
-
- if (pthread_equal (pthread_self(), expiry_thread) != 0) {
- unlock = 0;
- } else {
- unlock = 1;
- pthread_mutex_lock (&timer_mutex);
- }
-
- res = timerlist_add_duration (
- &timers_timerlist,
- timer_fn,
- data,
- nanosec_duration,
- handle);
-
- if (unlock) {
- pthread_mutex_unlock (&timer_mutex);
- }
-
- pthread_kill (expiry_thread, SIGUSR1);
-
- return (res);
+ return qb_loop_timer_add(corosync_poll_handle_get(),
+ QB_LOOP_MED,
+ nanosec_duration / QB_TIME_NS_IN_MSEC,
+ data,
+ timer_fn,
+ handle);
}
void corosync_timer_delete (
- timer_handle th)
+ corosync_timer_handle th)
{
- int unlock;
-
- if (th == 0) {
- return;
- }
-
- if (pthread_equal (pthread_self(), expiry_thread) != 0) {
- unlock = 0;
- } else {
- unlock = 1;
- pthread_mutex_lock (&timer_mutex);
- }
-
- timerlist_del (&timers_timerlist, th);
-
- if (unlock) {
- pthread_mutex_unlock (&timer_mutex);
- }
-}
-
-void corosync_timer_lock (void)
-{
- pthread_mutex_lock (&timer_mutex);
-}
-
-void corosync_timer_unlock (void)
-{
- pthread_mutex_unlock (&timer_mutex);
+ qb_loop_timer_del(corosync_poll_handle_get(), th);
}
-unsigned long long corosync_timer_time_get (void)
+uint64_t corosync_timer_expire_time_get (
+ corosync_timer_handle th)
{
- return (timerlist_nano_from_epoch());
-}
-
-unsigned long long corosync_timer_expire_time_get (
- timer_handle th)
-{
- int unlock;
- unsigned long long expire;
+ uint64_t expire;
if (th == 0) {
return (0);
}
- if (pthread_equal (pthread_self(), expiry_thread) != 0) {
- unlock = 0;
- } else {
- unlock = 1;
- pthread_mutex_lock (&timer_mutex);
- }
-
- expire = timerlist_expire_time (&timers_timerlist, th);
-
- if (unlock) {
- pthread_mutex_unlock (&timer_mutex);
- }
+ expire = qb_loop_timer_expire_time_get(corosync_poll_handle_get(), th);
return (expire);
}
+
diff --git a/exec/timer.h b/exec/timer.h
index 7d6826a..5f0e849 100644
--- a/exec/timer.h
+++ b/exec/timer.h
@@ -35,12 +35,11 @@
#ifndef TIMER_H_DEFINED
#define TIMER_H_DEFINED
-typedef void * corosync_timer_handle;
+#include <stdint.h>
+#include <time.h>
+#include <qb/qbloop.h>
-extern int corosync_timer_init (
- void (*serialize_lock) (void),
- void (*serialize_unlock) (void),
- int sched_priority);
+typedef qb_loop_timer_handle corosync_timer_handle;
extern int corosync_timer_add_duration (
unsigned long long nanosec_duration,
@@ -56,14 +55,6 @@ extern int corosync_timer_add_absolute (
extern void corosync_timer_delete (corosync_timer_handle handle);
-extern void corosync_timer_delete_data (corosync_timer_handle handle);
-
-extern void corosync_timer_lock (void);
-
-extern void corosync_timer_unlock (void);
-
-extern unsigned long long corosync_timer_time_get (void);
-
-extern unsigned long long corosync_timer_expire_time_get (corosync_timer_handle handle);
+extern uint64_t corosync_timer_expire_time_get (corosync_timer_handle handle);
#endif /* TIMER_H_DEFINED */
diff --git a/exec/tlist.h b/exec/tlist.h
deleted file mode 100644
index 7b568ee..0000000
--- a/exec/tlist.h
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Copyright (c) 2003-2004 MontaVista Software, Inc.
- * Copyright (c) 2006-2007, 2009 Red Hat, Inc.
- *
- * All rights reserved.
- *
- * Author: Steven Dake (sdake(a)redhat.com)
- *
- * This software licensed under BSD license, the text of which follows:
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * - Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * - Neither the name of the MontaVista Software, Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef TLIST_H_DEFINED
-#define TLIST_H_DEFINED
-
-#include <sys/time.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-#include <sys/param.h>
-#include <unistd.h>
-
-#include <corosync/list.h>
-
-#ifndef HZ
- #define HZ 100 /* 10ms */
-#endif
-
-#ifndef TIMER_HANDLE
-typedef void * timer_handle;
-#define TIMER_HANDLE
-#endif
-
-#define TIMERLIST_MS_IN_SEC 1000ULL
-#define TIMERLIST_US_IN_SEC 1000000ULL
-#define TIMERLIST_NS_IN_SEC 1000000000ULL
-#define TIMERLIST_US_IN_MSEC 1000ULL
-#define TIMERLIST_NS_IN_MSEC 1000000ULL
-#define TIMERLIST_NS_IN_USEC 1000ULL
-
-struct timerlist {
- struct list_head timer_head;
- struct list_head *timer_iter;
-};
-
-struct timerlist_timer {
- struct list_head list;
- unsigned long long expire_time;
- int is_absolute_timer;
- void (*timer_fn)(void *data);
- void *data;
- timer_handle handle_addr;
-};
-
-static inline void timerlist_init (struct timerlist *timerlist)
-{
- list_init (&timerlist->timer_head);
-}
-
-static inline unsigned long long timerlist_nano_from_epoch (void)
-{
- unsigned long long nano_from_epoch;
- struct timeval time_from_epoch;
- gettimeofday (&time_from_epoch, 0);
-
- nano_from_epoch = ((time_from_epoch.tv_sec * TIMERLIST_NS_IN_SEC) +
- (time_from_epoch.tv_usec * TIMERLIST_NS_IN_USEC));
-
- return (nano_from_epoch);
-}
-
-#if defined _POSIX_MONOTONIC_CLOCK && _POSIX_MONOTONIC_CLOCK >= 0
-static inline unsigned long long timerlist_nano_current_get (void)
-{
- unsigned long long nano_monotonic;
- struct timespec ts;
-
- clock_gettime (CLOCK_MONOTONIC, &ts);
-
- nano_monotonic = (ts.tv_sec * TIMERLIST_NS_IN_SEC) + (unsigned long long )ts.tv_nsec;
- return (nano_monotonic);
-}
-
-static inline unsigned long long timerlist_nano_monotonic_hz (void) {
- unsigned long long nano_monotonic_hz;
- struct timespec ts;
-
- clock_getres (CLOCK_MONOTONIC, &ts);
-
- nano_monotonic_hz = TIMERLIST_NS_IN_SEC / ((ts.tv_sec * TIMERLIST_NS_IN_SEC) +
ts.tv_nsec);
-
- return (nano_monotonic_hz);
-}
-#else
-#warning "Your system doesn't support monotonic timer. gettimeofday will be
used"
-static inline unsigned long long timerlist_nano_current_get (void)
-{
- return (timerlist_nano_from_epoch ());
-}
-
-static inline unsigned long long timerlist_nano_monotonic_hz (void) {
- return HZ;
-}
-#endif
-
-static inline void timerlist_add (struct timerlist *timerlist, struct timerlist_timer
*timer)
-{
- struct list_head *timer_list = 0;
- struct timerlist_timer *timer_from_list;
- int found;
-
- for (found = 0, timer_list = timerlist->timer_head.next;
- timer_list != &timerlist->timer_head;
- timer_list = timer_list->next) {
-
- timer_from_list = list_entry (timer_list,
- struct timerlist_timer, list);
-
- if (timer_from_list->expire_time > timer->expire_time) {
- list_add (&timer->list, timer_list->prev);
- found = 1;
- break; /* for timer iteration */
- }
- }
- if (found == 0) {
- list_add (&timer->list, timerlist->timer_head.prev);
- }
-}
-
-static inline int timerlist_add_absolute (struct timerlist *timerlist,
- void (*timer_fn) (void *data),
- void *data,
- unsigned long long nano_from_epoch,
- timer_handle *handle)
-{
- struct timerlist_timer *timer;
-
- timer = (struct timerlist_timer *)malloc (sizeof (struct timerlist_timer));
- if (timer == 0) {
- errno = ENOMEM;
- return (-1);
- }
-
- timer->expire_time = nano_from_epoch;
- timer->is_absolute_timer = 1;
- timer->data = data;
- timer->timer_fn = timer_fn;
- timer->handle_addr = handle;
- timerlist_add (timerlist, timer);
-
- *handle = timer;
- return (0);
-}
-
-static inline int timerlist_add_duration (struct timerlist *timerlist,
- void (*timer_fn) (void *data),
- void *data,
- unsigned long long nano_duration,
- timer_handle *handle)
-{
- struct timerlist_timer *timer;
-
- timer = (struct timerlist_timer *)malloc (sizeof (struct timerlist_timer));
- if (timer == 0) {
- errno = ENOMEM;
- return (-1);
- }
-
- timer->expire_time = timerlist_nano_current_get () + nano_duration;
- timer->is_absolute_timer = 0;
- timer->data = data;
- timer->timer_fn = timer_fn;
- timer->handle_addr = handle;
- timerlist_add (timerlist, timer);
-
- *handle = timer;
- return (0);
-}
-
-static inline void timerlist_del (struct timerlist *timerlist,
- timer_handle _timer_handle)
-{
- struct timerlist_timer *timer = (struct timerlist_timer *)_timer_handle;
-
- memset (timer->handle_addr, 0, sizeof (struct timerlist_timer *));
- /*
- * If the next timer after the currently expiring timer because
- * timerlist_del is called from a timer handler, get to the next
- * timer
- */
- if (timerlist->timer_iter == &timer->list) {
- timerlist->timer_iter = timerlist->timer_iter->next;
- }
- list_del (&timer->list);
- list_init (&timer->list);
- free (timer);
-}
-
-static inline unsigned long long timerlist_expire_time (struct timerlist *timerlist,
timer_handle _timer_handle)
-{
- struct timerlist_timer *timer = (struct timerlist_timer *)_timer_handle;
-
- return (timer->expire_time);
-}
-
-static inline void timerlist_pre_dispatch (struct timerlist *timerlist, timer_handle
_timer_handle)
-{
- struct timerlist_timer *timer = (struct timerlist_timer *)_timer_handle;
-
- memset (timer->handle_addr, 0, sizeof (struct timerlist_timer *));
- list_del (&timer->list);
- list_init (&timer->list);
-}
-
-static inline void timerlist_post_dispatch (struct timerlist *timerlist, timer_handle
_timer_handle)
-{
- struct timerlist_timer *timer = (struct timerlist_timer *)_timer_handle;
-
- free (timer);
-}
-
-/*
- * returns the number of msec until the next timer will expire for use with poll
- */
-static inline unsigned long long timerlist_msec_duration_to_expire (struct timerlist
*timerlist)
-{
- struct timerlist_timer *timer_from_list;
- volatile unsigned long long current_time;
- volatile unsigned long long msec_duration_to_expire;
-
- /*
- * empty list, no expire
- */
- if (timerlist->timer_head.next == &timerlist->timer_head) {
- return (-1);
- }
-
- timer_from_list = list_entry (timerlist->timer_head.next,
- struct timerlist_timer, list);
-
- if (timer_from_list->is_absolute_timer) {
- current_time = timerlist_nano_from_epoch ();
- } else {
- current_time = timerlist_nano_current_get ();
- }
-
- /*
- * timer at head of list is expired, zero msecs required
- */
- if (timer_from_list->expire_time < current_time) {
- return (0);
- }
-
- msec_duration_to_expire = ((timer_from_list->expire_time - current_time) /
TIMERLIST_NS_IN_MSEC) +
- (1000 / HZ);
- return (msec_duration_to_expire);
-}
-
-/*
- * Expires any timers that should be expired
- */
-static inline void timerlist_expire (struct timerlist *timerlist)
-{
- struct timerlist_timer *timer_from_list;
- unsigned long long current_time_from_epoch;
- unsigned long long current_monotonic_time;
- unsigned long long current_time;
-
- current_monotonic_time = timerlist_nano_current_get ();
- current_time_from_epoch = current_time = timerlist_nano_from_epoch ();
-
- for (timerlist->timer_iter = timerlist->timer_head.next;
- timerlist->timer_iter != &timerlist->timer_head;) {
-
- timer_from_list = list_entry (timerlist->timer_iter,
- struct timerlist_timer, list);
-
- current_time = (timer_from_list->is_absolute_timer ? current_time_from_epoch :
current_monotonic_time);
-
- if (timer_from_list->expire_time < current_time) {
- timerlist->timer_iter = timerlist->timer_iter->next;
-
- timerlist_pre_dispatch (timerlist, timer_from_list);
-
- timer_from_list->timer_fn (timer_from_list->data);
-
- timerlist_post_dispatch (timerlist, timer_from_list);
- } else {
- break; /* for timer iteration */
- }
- }
- timerlist->timer_iter = 0;
-}
-#endif /* TLIST_H_DEFINED */
diff --git a/exec/totemconfig.c b/exec/totemconfig.c
index ad1b116..e9eda46 100644
--- a/exec/totemconfig.c
+++ b/exec/totemconfig.c
@@ -50,6 +50,7 @@
#include <corosync/swab.h>
#include <corosync/list.h>
+#include <qb/qbdefs.h>
#include <corosync/totem/totem.h>
#include <corosync/engine/objdb.h>
#include <corosync/engine/config.h>
@@ -64,7 +65,6 @@
#include "util.h"
#include "totemconfig.h"
-#include "tlist.h" /* for HZ */
#define TOKEN_RETRANSMITS_BEFORE_LOSS_CONST 4
#define TOKEN_TIMEOUT 1000
diff --git a/exec/totemsrp.c b/exec/totemsrp.c
index 917d3ed..808ed7e 100644
--- a/exec/totemsrp.c
+++ b/exec/totemsrp.c
@@ -74,12 +74,16 @@
#include <sys/poll.h>
#include <limits.h>
+#include <qb/qbdefs.h>
+#include <qb/qbutil.h>
+#include <qb/qbloop.h>
+
#include <corosync/swab.h>
#include <corosync/cs_queue.h>
#include <corosync/sq.h>
#include <corosync/list.h>
#include <corosync/hdb.h>
-#include <qb/qbloop.h>
+
#define LOGSYS_UTILS_ONLY 1
#include <corosync/engine/logsys.h>
@@ -89,7 +93,6 @@
#include "wthread.h"
#include "crypto.h"
-#include "tlist.h"
#define LOCALHOST_IP inet_addr("127.0.0.1")
#define QUEUE_RTR_ITEMS_SIZE_MAX 16384 /* allow 16384 retransmit items */
@@ -694,8 +697,8 @@ static int pause_flush (struct totemsrp_instance *instance)
uint64_t timestamp_msec;
int res = 0;
- now_msec = (timerlist_nano_current_get () / TIMERLIST_NS_IN_MSEC);
- timestamp_msec = instance->pause_timestamp / TIMERLIST_NS_IN_MSEC;
+ now_msec = (qb_util_nano_current_get () / QB_TIME_NS_IN_MSEC);
+ timestamp_msec = instance->pause_timestamp / QB_TIME_NS_IN_MSEC;
if ((now_msec - timestamp_msec) > (instance->totem_config->token_timeout / 2))
{
log_printf (instance->totemsrp_log_level_notice,
@@ -714,9 +717,9 @@ static int token_event_stats_collector (enum totem_callback_token_type
type, con
{
struct totemsrp_instance *instance = (struct totemsrp_instance *)void_instance;
uint32_t time_now;
- unsigned long long nano_secs = timerlist_nano_current_get ();
+ unsigned long long nano_secs = qb_util_nano_current_get ();
- time_now = (nano_secs / TIMERLIST_NS_IN_MSEC);
+ time_now = (nano_secs / QB_TIME_NS_IN_MSEC);
if (type == TOTEM_CALLBACK_TOKEN_RECEIVED) {
/* incr latest token the index */
@@ -1524,7 +1527,7 @@ static void timer_function_pause_timeout (void *data)
{
struct totemsrp_instance *instance = data;
- instance->pause_timestamp = timerlist_nano_current_get ();
+ instance->pause_timestamp = qb_util_nano_current_get ();
reset_pause_timeout (instance);
}
@@ -3341,7 +3344,7 @@ static int message_handler_orf_token (
unsigned long long tv_current;
unsigned long long tv_diff;
- tv_current = timerlist_nano_current_get ();
+ tv_current = qb_util_nano_current_get ();
tv_diff = tv_current - tv_old;
tv_old = tv_current;
@@ -3573,7 +3576,7 @@ printf ("token seq %d\n", token->seq);
token_send (instance, token, forward_token);
#ifdef GIVEINFO
- tv_current = timerlist_nano_current_get ();
+ tv_current = qb_util_nano_current_get ();
tv_diff = tv_current - tv_old;
tv_old = tv_current;
log_printf (instance->totemsrp_log_level_debug,
diff --git a/lib/votequorum.c b/lib/votequorum.c
index 3f34160..470d318 100644
--- a/lib/votequorum.c
+++ b/lib/votequorum.c
@@ -45,6 +45,7 @@
#include <sys/socket.h>
#include <errno.h>
+#include <qb/qbdefs.h>
#include <qb/qbipcc.h>
#include <corosync/corotypes.h>
diff --git a/services/pload.c b/services/pload.c
index f7563c2..bd7240f 100644
--- a/services/pload.c
+++ b/services/pload.c
@@ -53,6 +53,7 @@
#include <assert.h>
#include <qb/qblist.h>
+#include <qb/qbutil.h>
#include <qb/qbipc_common.h>
#include <corosync/swab.h>
@@ -65,8 +66,6 @@
#include <corosync/list.h>
#include <corosync/engine/logsys.h>
-#include "../exec/tlist.h"
-
LOGSYS_DECLARE_SUBSYS ("PLOAD");
enum pload_exec_message_req_types {
@@ -363,11 +362,11 @@ static void message_handler_req_exec_pload_mcast (
last_msg_no = pload_mcast->msg_code;
if (msgs_delivered == 0) {
- tv1 = timerlist_nano_current_get ();
+ tv1 = qb_util_nano_current_get ();
}
msgs_delivered += 1;
if (msgs_delivered == msgs_wanted) {
- tv2 = timerlist_nano_current_get ();
+ tv2 = qb_util_nano_current_get ();
tv_elapsed = tv2 - tv1;
sprintf (log_buffer, "%5d Writes %d bytes per write %7.3f seconds runtime, %9.3f
TP/S, %9.3f MB/S.\n",
msgs_delivered,
diff --git a/services/votequorum.c b/services/votequorum.c
index f0832f2..9cb6aaf 100644
--- a/services/votequorum.c
+++ b/services/votequorum.c
@@ -55,8 +55,11 @@
#include <netinet/in.h>
#include <arpa/inet.h>
-#include <corosync/corotypes.h>
#include <qb/qbipc_common.h>
+#include <qb/qbdefs.h>
+#include <qb/qbutil.h>
+
+#include <corosync/corotypes.h>
#include <corosync/corodefs.h>
#include <corosync/cfg.h>
#include <corosync/list.h>
@@ -66,9 +69,6 @@
#include <corosync/engine/coroapi.h>
#include <corosync/engine/quorum.h>
#include <corosync/ipc_votequorum.h>
-#include <corosync/list.h>
-
-#include "../exec/tlist.h"
#define VOTEQUORUM_MAJOR_VERSION 7
#define VOTEQUORUM_MINOR_VERSION 0
@@ -1319,8 +1319,8 @@ static void quorum_device_timer_fn(void *arg)
if (!quorum_device || quorum_device->state == NODESTATE_DEAD)
return;
- if ( (quorum_device->last_hello / TIMERLIST_NS_IN_SEC) + quorumdev_poll/1000 <
- (timerlist_nano_current_get () / TIMERLIST_NS_IN_SEC)) {
+ if ( (quorum_device->last_hello / QB_TIME_NS_IN_SEC) + quorumdev_poll/1000 <
+ (qb_util_nano_current_get () / QB_TIME_NS_IN_SEC)) {
quorum_device->state = NODESTATE_DEAD;
log_printf(LOGSYS_LEVEL_INFO, "lost contact with quorum device\n");
@@ -1403,7 +1403,7 @@ static void message_handler_req_lib_votequorum_qdisk_poll (void
*conn,
if (quorum_device) {
if (req_lib_votequorum_qdisk_poll->state) {
- quorum_device->last_hello = timerlist_nano_current_get ();
+ quorum_device->last_hello = qb_util_nano_current_get ();
if (quorum_device->state == NODESTATE_DEAD) {
quorum_device->state = NODESTATE_MEMBER;
recalculate_quorum(0, 0);
--
1.7.3.1