]> jfr.im git - irc/quakenet/newserv.git/blob - core/schedulealloc.c
merge
[irc/quakenet/newserv.git] / core / schedulealloc.c
1 /* schedulealloc.c */
2
3 #include "schedule.h"
4 #include <stdlib.h>
5
6 #define ALLOCUNIT 100
7
8 schedule *freescheds;
9
10 void initschedulealloc() {
11 freescheds=NULL;
12 }
13
14 schedule *getschedule() {
15 int i;
16 schedule *sp;
17
18 if (freescheds==NULL) {
19 freescheds=(schedule *)malloc(ALLOCUNIT*sizeof(schedule));
20 for (i=0;i<ALLOCUNIT-1;i++) {
21 freescheds[i].callbackparam=(void *)&(freescheds[i+1]);
22 }
23 freescheds[ALLOCUNIT-1].callbackparam=NULL;
24 }
25
26 sp=freescheds;
27 freescheds=(schedule *)sp->callbackparam;
28
29 return sp;
30 }
31
32 void freeschedule(schedule *sp) {
33 sp->callbackparam=(void *)freescheds;
34 sp->callback=NULL;
35 freescheds=sp;
36 }
37