Back to index

courier  0.68.2
Classes | Defines | Functions | Variables
pcpdtimer.h File Reference
#include "config.h"
#include <time.h>
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  pcpdtimer

Defines

#define pcpdtimer_init(p)   memset((p), 0, sizeof(*p))

Functions

void pcpdtimer_install (struct pcpdtimer *, time_t)
void pcpdtimer_triggered (struct pcpdtimer *)

Variables

struct pcpdtimerfirst_timer
struct pcpdtimerlast_timer

Define Documentation

#define pcpdtimer_init (   p)    memset((p), 0, sizeof(*p))

Definition at line 25 of file pcpdtimer.h.


Function Documentation

void pcpdtimer_install ( struct pcpdtimer ,
time_t   
)

Definition at line 16 of file pcpdtimer.c.

{
       struct pcpdtimer *q;

       if (p->alarm)
       {
              if (p->prev)
                     p->prev->next=p->next;
              else
                     first_timer=p->next;

              if (p->next)
                     p->next->prev=p->prev;
              else
                     last_timer=p->prev;
       }

       time(&p->alarm);
       p->alarm += nseconds;

       for (q=first_timer; q; q=q->next)
       {
              if (q->alarm > p->alarm)
                     break;
       }

       if (!q)
       {
              if ((p->prev=last_timer) != 0)
                     p->prev->next=p;
              else
                     first_timer=p;
              p->next=0;
              last_timer=p;
       }
       else
       {
              if ((p->prev=q->prev) != 0)
                     p->prev->next=p;
              else
                     first_timer=p;

              p->next=q;
              q->prev=p;
       }
}

Here is the caller graph for this function:

void pcpdtimer_triggered ( struct pcpdtimer )

Definition at line 63 of file pcpdtimer.c.

{
       if (!p->alarm)
              return;

       if (p->prev)
              p->prev->next=p->next;
       else
              first_timer=p->next;

       if (p->next)
              p->next->prev=p->prev;
       else
              last_timer=p->prev;

       p->alarm=0;
}

Here is the caller graph for this function:


Variable Documentation