2 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 * Copyright 1998-2017 The OpenLDAP Foundation.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted only as authorized by the OpenLDAP
11 * A copy of this license is available in file LICENSE in the
12 * top-level directory of the distribution or, alternatively, at
13 * <http://www.OpenLDAP.org/license.html>.
19 #include <ldap_cdefs.h>
24 struct timeval next_sched;
25 struct timeval interval;
26 LDAP_STAILQ_ENTRY(re_s) tnext; /* it includes running */
27 LDAP_STAILQ_ENTRY(re_s) rnext;
28 ldap_pvt_thread_start_t *routine;
35 typedef struct runqueue_s {
36 LDAP_STAILQ_HEAD(l, re_s) task_list;
37 LDAP_STAILQ_HEAD(rl, re_s) run_list;
38 ldap_pvt_thread_mutex_t rq_mutex;
41 LDAP_F( struct re_s* )
42 ldap_pvt_runqueue_insert(
43 struct runqueue_s* rq,
45 ldap_pvt_thread_start_t* routine,
51 LDAP_F( struct re_s* )
52 ldap_pvt_runqueue_find(
53 struct runqueue_s* rq,
54 ldap_pvt_thread_start_t* routine,
59 ldap_pvt_runqueue_remove(
60 struct runqueue_s* rq,
64 LDAP_F( struct re_s* )
65 ldap_pvt_runqueue_next_sched(
66 struct runqueue_s* rq,
67 struct timeval* next_run
71 ldap_pvt_runqueue_runtask(
72 struct runqueue_s* rq,
77 ldap_pvt_runqueue_stoptask(
78 struct runqueue_s* rq,
83 ldap_pvt_runqueue_isrunning(
84 struct runqueue_s* rq,
89 ldap_pvt_runqueue_resched(
90 struct runqueue_s* rq,
96 ldap_pvt_runqueue_persistent_backload(