#include "common.h"
#include "cq.h"
#include "misc.h"
#include "tm.h"
#include "walloc.h"
#include "override.h"
Defines | |
#define | HASH_SIZE 1024 /**< Hash list size, must be power of 2 */ |
Hash list size, must be power of 2. | |
#define | HASH_MASK (HASH_SIZE - 1) |
#define | EV_MAGIC 0xc0110172U /**< Magic number for event marking */ |
Magic number for event marking. | |
#define | EV_HASH(x) (((x) >> 5) & HASH_MASK) |
#define | EV_OVER(x) (((x) >> 5) & ~HASH_MASK) |
#define | valid_ptr(a) ((gpointer) (a) > GUINT_TO_POINTER(100U)) |
#define | CALLOUT_PERIOD 100 /* milliseconds */ |
Functions | |
RCSID ("$Id:cq.c, v 1.13 2005/11/03 08:37:39 rmanfredi Exp $") | |
cqueue_t * | cq_make (time_t now) |
Create a new callout queue object. | |
void | cq_free (cqueue_t *cq) |
Free the callout queue and all contained event objects. | |
void | ev_link (cqueue_t *cq, cevent_t *ev) |
Link event into the callout queue. | |
void | ev_unlink (cqueue_t *cq, cevent_t *ev) |
Unlink event from callout queue. | |
gpointer | cq_insert (cqueue_t *cq, gint delay, cq_service_t fn, gpointer arg) |
Insert a new event in the callout queue and return an opaque handle that can be used to cancel the event. | |
void | cq_cancel (cqueue_t *cq, gpointer handle) |
Cancel a recorded timeout. | |
void | cq_resched (cqueue_t *cq, gpointer handle, gint delay) |
Reschedule event at some other point in time. | |
void | cq_expire (cqueue_t *cq, cevent_t *ev) |
Expire timeout by removing it out of the queue and firing its callback. | |
void | cq_clock (cqueue_t *cq, gint elapsed) |
The heartbeat of our callout queue. | |
gboolean | callout_timer (gpointer p) |
Called every CALLOUT_PERIOD to heartbeat the callout queue. | |
gdouble | callout_queue_coverage (gint old_ticks) |
Returns percentage of coverage of the callout timer, i.e. | |
void | cq_init (void) |
Initialization. | |
void | cq_close (void) |
Final cleanup. | |
Variables | |
cqueue_t * | callout_queue |
|
|
|
|
|
Magic number for event marking.
|
|
|
|
|
|
Hash list size, must be power of 2.
|
|
|
|
Returns percentage of coverage of the callout timer, i.e. the real amount of ticks we processed divided by the theoretical number, yielding a number between 0.0 and 1.0.
|
|
Called every CALLOUT_PERIOD to heartbeat the callout queue.
|
|
Cancel a recorded timeout. They give us the opaque handle we returned via cq_insert().
|
|
The heartbeat of our callout queue. Called to notify us about the elapsed "time" so that we can expire timeouts and maintain our notion of "current time". |
|
Final cleanup.
|
|
Expire timeout by removing it out of the queue and firing its callback.
|
|
Free the callout queue and all contained event objects.
|
|
Initialization.
|
|
Insert a new event in the callout queue and return an opaque handle that can be used to cancel the event. The event is specified to occur in some "delay" amount of time, at which time we shall call fn(cq, arg), where cq is the callout queue from where we triggered, and arg is an additional argument.
|
|
Create a new callout queue object. The 'now' parameter is used to initialize the "current time". Use zero if you don't care... |
|
Reschedule event at some other point in time. It is the responsibility of the user code to determine that the handle for the event has not yet expired, i.e. that the event has not triggered yet. |
|
Link event into the callout queue.
|
|
Unlink event from callout queue.
|
|
|
|
|