Main Page | Data Structures | File List | Globals | Related Pages

scheduler.h

Go to the documentation of this file.
00001 
00011 #ifndef __KERN_SCHEDULER_H__
00012 #define __KERN_SCHEDULER_H__
00013 
00014 #include <list.h>
00015 #include <register.h>
00016 
00017 struct Thread;
00018 
00019 /* a scheduling resource for threads to wait upon */
00020 typedef struct
00021 {
00022         /* the list of waiting threads */
00023         List waitingThreads;
00024 } Resource;
00025 
00026 /* a thread scheduler for managing ready/running threads */
00027 typedef struct
00028 {
00029         /* the currently running thread */
00030         struct Thread * currentThread; 
00031         /* any threads ready to run immediately */
00032         List readyThreads;
00033 } Scheduler;
00034 
00042 extern int scheduler_initialize (void);
00043 
00050 extern void scheduler_tick (void);
00059 extern void scheduler_context_switch (Registers * registers);
00066 extern void scheduler_jump (void);
00067 
00076 extern void scheduler_schedule (struct Thread * thread);
00086 extern void scheduler_unschedule (struct Thread * thread);
00097 extern void scheduler_yield (struct Thread * thread);
00098 
00108 extern int resource_create (Resource * resource);
00117 extern void resource_destroy (Resource * resource);
00118 
00131 extern void resource_wait (Resource * resource, struct Thread * thread, void (* waitingHandler) (struct Thread *, void *), void * waitingData);
00142 extern void resource_rewait (Resource * resource, struct Thread * thread);
00152 extern int resource_wake (Resource * resource, int amount);
00153 
00154 #endif /* __KERN_SCHEDULER_H__ */
00155 

Generated on Fri Apr 9 21:59:16 2004 for 15-410 Project 3 by doxygen 1.3.2