corosync  3.1.0
timer.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2002-2006 MontaVista Software, Inc.
3  * Copyright (c) 2006-2010 Red Hat, Inc.
4  *
5  * All rights reserved.
6  *
7  * Author: Steven Dake (sdake@redhat.com)
8  *
9  * This software licensed under BSD license, the text of which follows:
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions are met:
13  *
14  * - Redistributions of source code must retain the above copyright notice,
15  * this list of conditions and the following disclaimer.
16  * - Redistributions in binary form must reproduce the above copyright notice,
17  * this list of conditions and the following disclaimer in the documentation
18  * and/or other materials provided with the distribution.
19  * - Neither the name of the MontaVista Software, Inc. nor the names of its
20  * contributors may be used to endorse or promote products derived from this
21  * software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
30  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
31  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
32  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
33  * THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 
36 #include <config.h>
37 
38 #include "timer.h"
39 #include "main.h"
40 #include <qb/qbdefs.h>
41 #include <qb/qbutil.h>
42 
44  unsigned long long nanosec_from_epoch,
45  void *data,
46  void (*timer_fn) (void *data),
48 {
49  uint64_t expire_time = nanosec_from_epoch - qb_util_nano_current_get();
50  return qb_loop_timer_add(cs_poll_handle_get(),
51  QB_LOOP_MED,
52  expire_time,
53  data,
54  timer_fn,
55  handle);
56 }
57 
59  unsigned long long nanosec_duration,
60  void *data,
61  void (*timer_fn) (void *data),
63 {
64  return qb_loop_timer_add(cs_poll_handle_get(),
65  QB_LOOP_MED,
66  nanosec_duration,
67  data,
68  timer_fn,
69  handle);
70 }
71 
74 {
75  qb_loop_timer_del(cs_poll_handle_get(), th);
76 }
77 
78 unsigned long long corosync_timer_expire_time_get (
80 {
81  uint64_t expire;
82 
83  if (th == 0) {
84  return (0);
85  }
86 
87  expire = qb_loop_timer_expire_time_get(cs_poll_handle_get(), th);
88 
89  return (expire);
90 }
91 
92 unsigned long long cs_timer_time_get (void)
93 {
94  return qb_util_nano_from_epoch_get();
95 }
96 
corosync_timer_expire_time_get
unsigned long long corosync_timer_expire_time_get(corosync_timer_handle_t th)
Definition: timer.c:78
corosync_timer_add_duration
int corosync_timer_add_duration(unsigned long long nanosec_duration, void *data, void(*timer_fn)(void *data), corosync_timer_handle_t *handle)
Definition: timer.c:58
cs_poll_handle_get
qb_loop_t * cs_poll_handle_get(void)
Definition: main.c:170
corosync_timer_delete
void corosync_timer_delete(corosync_timer_handle_t th)
Definition: timer.c:72
timer.h
corosync_timer_add_absolute
int corosync_timer_add_absolute(unsigned long long nanosec_from_epoch, void *data, void(*timer_fn)(void *data), corosync_timer_handle_t *handle)
Definition: timer.c:43
main.h
config.h
cs_timer_time_get
unsigned long long cs_timer_time_get(void)
Definition: timer.c:92
corosync_timer_handle_t
qb_loop_timer_handle corosync_timer_handle_t
corosync_timer_handle_t
Definition: coroapi.h:74