Newer
Older
ubix / src / sys / include / ubixos / schedule.h
@reddawg reddawg on 11 May 2002 1 KB Woot
/**************************************************************************************
 Copyright (c) 2002
      The UbixOS Project

 $Id$
**************************************************************************************/

#ifndef _SCHEDULE_H
#define _SCHEDULE_H

#define LATCH (1193180/500)

#define numTasks  1024
#define RUNABLE   3
#define ACTIVE    2
#define INACTIVE  1
#define AVAILABLE 0

struct tssStruct {
  short back_link;
  short back_link_reserved;
  long  esp0;
  short ss0;
  short ss0_reserved;
  long  esp1;
  short ss1;
  short ss1_reserved;
  long  esp2;
  short ss2;
  short ss2_reserved;
  long  cr3;
  long  eip;
  long  eflags;
  long  eax,ecx,edx,ebx;
  long  esp;
  long  ebp;
  long  esi;
  long  edi;
  short es;
  short es_reserved;
  short cs;
  short cs_reserved;
  short ss;
  short ss_reserved;
  short ds;
  short ds_reserved;
  short fs;
  short fs_reserved;
  short gs;
  short gs_reserved;
  short ldt;
  short ldt_reserved;
  long  trace_bitmap;   /* bits: trace 0, bitmap 16-31 */
  };

struct i387Struct {
  long cwd;
  long swd;
  long twd;
  long fip;
  long fcs;
  long foo;
  long fos;
  long st_space[20];   /* 8*10 bytes for each FP-reg = 80 bytes */
  };

struct taskStruct {
  struct tssStruct tss;
  struct i387Struct i387;
  int id;
  int status;
  int usedMath;
  };

extern struct taskStruct taskList[numTasks];
extern struct taskStruct *_current,*_usedMath;
extern int currentProc;

void initScheduler();
int findTask();
void timerInt();

#endif