OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
task_timer_api.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef vnsw_agent_task_timer_api_h
6 #define vnsw_agent_task_timer_api_h
7 
8 #include "mcast_common.h"
9 #include <time.h>
10 #include "task_int.h"
11 #include "task_thread_api.h"
12 
13 typedef struct task_timer_ task_timer;
14 
15 typedef void (*timer_callback)(task_timer *, time_t);
16 
17 typedef struct task_timer_root_ {
20 
21 typedef struct task_timer_ {
22  task *tp;
25  int timeout;
26  boolean oneshot;
27  void *tdata;
28  boolean rescheduled;
30 } task_timer;
31 
32 THREAD_TO_STRUCT(task_timer_list_entry, task_timer, deleted_entry);
33 
34 typedef struct utime_t_ {
35  time_t ut_sec;
36  time_t ut_usec;
37 } utime_t;
38 
39 #define MSECS_PER_SEC 1000
40 #define USECS_PER_MSEC 1000
41 
42 extern void task_timer_init(task *tp);
43 extern void task_timer_cleanup_deleted(task *tp);
44 extern task_timer *task_timer_create_idle_leaf(task *tp, const char *name,
45  flag_t flags, task_timer *parent,
46  timer_callback tjob, void *data);
47 extern void task_timer_delete(task_timer *timer);
50  task_timer *timer, utime_t *offset, uint32_t jitter);
51 extern void task_timer_reset(task_timer *timer);
53 extern void *task_timer_data(task_timer *timer);
54 extern void task_timer_utime_left(task_timer *timer, utime_t *remaining);
55 extern boolean task_timer_running(task_timer *timer);
56 
57 #endif /* vnsw_agent_task_timer_api_h */
void * task_timer_data(task_timer *timer)
void task_timer_delete(task_timer *timer)
void task_timer_init(task *tp)
task_timer * task_timer_create_idle_leaf(task *tp, const char *name, flag_t flags, task_timer *parent, timer_callback tjob, void *data)
void task_timer_reset(task_timer *timer)
#define THREAD_TO_STRUCT(function, structure, member)
Definition: task_int.h:10
void(* timer_callback)(task_timer *, time_t)
void task_timer_uset_alt_root_auto_parent_oneshot(task_timer_root *root, task_timer *timer, utime_t *offset, u_int jitter)
struct task_timer_ task_timer
time_t ut_sec
unsigned long flag_t
Definition: mcast_common.h:12
timer_callback callback
void * agent_timer_map
void task_timer_utime_left(task_timer *timer, utime_t *remaining)
void task_timer_smear_auto_parent_timers(task_timer_root *root)
task_timer_root * task_timer_get_auto_parent_root(void)
boolean rescheduled
struct utime_t_ utime_t
boolean task_timer_running(task_timer *timer)
struct task_timer_root_ task_timer_root
void task_timer_cleanup_deleted(task *tp)
time_t ut_usec
boolean oneshot
task_thread deleted_entry