1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
/* ###--------------------------------------------------------------### */
/* file : sch110.h */
/* date : Aug 10 1999 */
/* version : v110 */
/* author : Nizar ABDALLAH, Pirouz BAZARGAN SABET */
/* contents : defines and structure definitions used in SCH library */
/* ###--------------------------------------------------------------### */
#ifndef SCH_SCHDEF
#define SCH_SCHDEF
#include "mut.h"
/* ###------------------------------------------------------### */
/* basic defines */
/* ###------------------------------------------------------### */
#define SCH_DFN_TRABLOCK 1024 /* size of block */
#define SCH_DFN_ENTBLOCK 256 /* size of block */
#define SCH_DFN_WAVBLOCK 256 /* size of block */
#define SCH_TRA_DELNONE 0x00 /* transcation flag: no action */
#define SCH_TRA_DELAFTER 0x01 /* transcation flag: del after */
#define SCH_TRA_DELBEFORE 0x02 /* transcation flag: del before */
#define SCH_TRA_ENTFIRST 0x04 /* transcation flag: 1 of list */
/* ###------------------------------------------------------### */
/* complexe defines */
/* ###------------------------------------------------------### */
#define SCH_TRA_DELALL SCH_TRA_DELAFTER | SCH_TRA_DELBEFORE
/* ###------------------------------------------------------### */
/* structure definitions */
/* ###------------------------------------------------------### */
struct shdul /* scheduler */
{
struct shdul *NEXT ; /* next scheduler */
void *LABEL ; /* scheduler's label */
struct shent **TTABLE ; /* time table */
struct shwav **ITABLE ; /* identifier table */
unsigned int CURTIME ; /* current absolute time */
};
struct shtra /* transaction */
{
struct shtra *NEXT ; /* next transaction */
struct shtra *PREV ; /* previous transaction */
struct shtra *WAVE ; /* waveform for the same identifier */
unsigned int DATE ; /* transaction's date */
void *IDENT ; /* main identifier */
void *SCDID ; /* second identifier */
unsigned int UFLAG ; /* user's flags */
unsigned char COND ; /* condition value */
unsigned char VALU ; /* value */
unsigned short FLAGS ; /* flags */
};
struct shent /* scheduler entry */
{
struct shent *NEXT ; /* next entry */
unsigned int DATE ; /* entry's date (high order bits) */
struct shtra *TRANS [8]; /* list of transactions */
};
struct shwav /* waveform */
{
struct shwav *NEXT ; /* next waveform */
void *IDENT ; /* main identifier */
struct shtra *TRANS ; /* list of transactions */
};
/* ###------------------------------------------------------### */
/* global variables */
/* ###------------------------------------------------------### */
extern struct shtra *SCH_FREE_SHTRA ;
extern struct shent *SCH_FREE_SHENT ;
extern struct shwav *SCH_FREE_SHWAV ;
/* ###------------------------------------------------------### */
/* functions */
/* ###------------------------------------------------------### */
extern void sch_bug ();
extern int sch_error ();
extern void sch_message ();
extern void sch_debug ();
extern unsigned int sch_hash ();
extern struct shtra *sch_addshtra ();
extern struct shwav *sch_addshwav ();
extern struct shent *sch_addshent ();
extern struct shtra *sch_rmventry ();
extern void sch_insentry ();
extern void sch_inswave ();
extern struct shdul *sch_CreateScheduler ();
extern void sch_AddTranscation ();
extern struct shtra *sch_GetCurrentTransactions ();
extern int sch_GotoNextTime ();
extern int sch_GetNextTime ();
extern void sch_FreeTransactions ();
extern unsigned int sch_GetCurrentTime ();
#endif
|