--- xmil/statsave.c 2004/08/18 15:42:28 1.6 +++ xmil/statsave.c 2005/02/04 06:42:07 1.7 @@ -340,125 +340,80 @@ static int flagload_common(STFLAGH sfh, // ---- event typedef struct { + UINT32 next; SINT32 clock; - SINT32 base; - UINT32 param; + SINT32 baseclock; UINT32 proc; } NEVTITEM; typedef struct { - UINT readys; - UINT events; - UINT32 ready[NEVENT_MAXEVENTS]; - UINT32 event[NEVENT_MAXEVENTS]; + NEVTITEM item[NEVENT_MAXEVENTS]; + UINT32 first; } NEVTSAVE; -static UINT32 evt2id(UINT evt) { +static UINT32 evt2id(NEVENTITEM next) { - UINT i; - - for (i=0; iclock; - nit.base = ne->baseclock; - nit.proc = proc2id((INTPTR)ne->proc, evtproc, NELEMENTS(evtproc)); - nit.param = ne->param; - return(statflag_write(sfh, &nit, sizeof(nit))); + if (n == (UINT32)-2) { + return(NEVENTITEM_NONE); + } + else if (n == (UINT32)-1) { + return(NEVENTITEM_TERM); + } + else if (n < NEVENT_MAXEVENTS) { + return(nevent.item + n); + } + else { + // error! + return(NEVENTITEM_TERM); + } } static int flagsave_evt(STFLAGH sfh, const SFENTRY *tbl) { NEVTSAVE nevt; UINT i; - UINT32 id; - UINT eventid[NEVENT_MAXEVENTS]; - int ret; - ZeroMemory(&nevt, sizeof(nevt)); - for (i=0; i= NEVENT_MAXEVENTS) { - return(STATFLAG_FAILURE); - } - ne = nevent.item + evt; - ne->clock = nit.clock; - ne->baseclock = nit.base; - ne->proc = (NEVENTCB)id2proc(nit.proc, evtproc, NELEMENTS(evtproc)); - ne->param = nit.param; - return(ret); + return(statflag_write(sfh, &nevt, sizeof(nevt))); } static int flagload_evt(STFLAGH sfh, const SFENTRY *tbl) { - int ret; NEVTSAVE nevt; + int ret; UINT i; - UINT evt; - UINT readyevents; ret = statflag_read(sfh, &nevt, sizeof(nevt)); - readyevents = 0; - for (i=0; i