2 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 * Copyright 1998-2004 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;
32 typedef struct runqueue_s {
33 LDAP_STAILQ_HEAD(l, re_s) task_list;
34 LDAP_STAILQ_HEAD(rl, re_s) run_list;
35 ldap_pvt_thread_mutex_t rq_mutex;
39 ldap_pvt_runqueue_insert(
40 struct runqueue_s* rq,
42 ldap_pvt_thread_start_t* routine,
47 ldap_pvt_runqueue_remove(
48 struct runqueue_s* rq,
52 LDAP_F( struct re_s* )
53 ldap_pvt_runqueue_next_sched(
54 struct runqueue_s* rq,
55 struct timeval** next_run
59 ldap_pvt_runqueue_runtask(
60 struct runqueue_s* rq,
65 ldap_pvt_runqueue_stoptask(
66 struct runqueue_s* rq,
71 ldap_pvt_runqueue_isrunning(
72 struct runqueue_s* rq,
77 ldap_pvt_runqueue_resched(
78 struct runqueue_s* rq,
84 ldap_pvt_runqueue_persistent_backload(