int main() { KernelInit(); SchedulerStartup(); TimesRead = 0; TimesWritten = 0; SchedulerCreateThread( & Reader1, 5, Reader1Stack, STACK_SIZE, Reader, NULL, TRUE); SchedulerCreateThread( & Reader2, 5, Reader2Stack, STACK_SIZE, Reader, NULL, TRUE); SchedulerCreateThread( & Reader3, 5, Reader3Stack, STACK_SIZE, Reader, NULL, TRUE); SchedulerCreateThread( & Writer1, 5, Writer1Stack, STACK_SIZE, Writer, NULL, TRUE); SchedulerCreateThread( & Writer2, 5, Writer2Stack, STACK_SIZE, Writer, NULL, TRUE); KernelStart(); return 0; }
void RestartThreadMain( void * arg ) { while(TRUE) { SchedulerStartCritical(); if( SchedulerIsThreadDead( &DeathThread ) ) { SchedulerCreateThread( &DeathThread, 1, DeathThreadStack, STACK_SIZE, DeathThreadMain, NULL, TRUE); DeathCount--; } if( SchedulerIsThreadBlocked( &StallThread ) ) { SchedulerResumeThread( &StallThread ); StallCount--; } SchedulerEndCritical(); } }
int main() { //Initialize the kernel structures. KernelInit(); SchedulerStartup(); //Initialize variables DeathCount = 0; TotalDeath = 0; StallCount = 0; TotalStall = 0; //Initialize Threads SchedulerCreateThread( &DeathThread, 1, DeathThreadStack, STACK_SIZE, DeathThreadMain, NULL, TRUE); SchedulerCreateThread( &StallThread, 1, StallThreadStack, STACK_SIZE, StallThreadMain, NULL, TRUE); SchedulerCreateThread( &RestartThread, 1, RestartThreadStack, STACK_SIZE, RestartThreadMain, NULL, TRUE); KernelStart(); return 0; }
int main() { //Initialize the kernel structures. KernelInit(); SchedulerStartup(); //Initialize Threads SchedulerCreateThread( &TestThread1, 2, TestThread1Stack, STACK_SIZE, Test1ThreadMain, &Value1, TRUE); SchedulerCreateThread( &TestThread2, 4, TestThread2Stack, STACK_SIZE, Test1ThreadMain, &Value2, TRUE); SchedulerCreateThread( &TestThread3, 8, TestThread3Stack, STACK_SIZE, Test1ThreadMain, &Value3, TRUE); KernelStart(); return 0; }
void WorkerCreateWorker( struct WORKER_QUEUE * queue, char * stack, unsigned int stackSize) { LinkedListInit( &queue->List ); SemaphoreInit( &queue->Lock, 0 ); SchedulerCreateThread( &queue->Thread, 10, stack, stackSize, WorkerThreadMain, queue, TRUE); }
int main() { KernelInit(); SchedulerStartup(); SetupPipe(MessageBuffer1, &Pipe1, &ProducerContext1, &ConsumerContext1, 1, 2); SetupPipe(MessageBuffer2, &Pipe2, &ProducerContext2, &ConsumerContext2, 3, 4); SetupPipe(MessageBuffer3, &Pipe3, &ProducerContext3, &ConsumerContext3, 5, 6); SchedulerCreateThread( &Producer1, QUANTUM, ProducerStack1, STACK_SIZE, ProducerMain, & ProducerContext1, TRUE ); SchedulerCreateThread( &Producer2, QUANTUM, ProducerStack2, STACK_SIZE, ProducerMain, & ProducerContext2, TRUE ); SchedulerCreateThread( &Producer3, QUANTUM, ProducerStack3, STACK_SIZE, ProducerMain, & ProducerContext3, TRUE ); SchedulerCreateThread( &Consumer1, QUANTUM, ConsumerStack1, STACK_SIZE, ConsumerMain, & ConsumerContext1, TRUE ); SchedulerCreateThread( &Consumer2, QUANTUM, ConsumerStack2, STACK_SIZE, ConsumerMain, & ConsumerContext2, TRUE ); SchedulerCreateThread( &Consumer3, QUANTUM, ConsumerStack3, STACK_SIZE, ConsumerMain, & ConsumerContext3, TRUE ); WatchdogEnable( TIMEOUT ); KernelStart(); return 0; }