next up previous
Next: System security in embedded Up: Real-time Multitasking: rectangle.o Previous: Real-time Multitasking: rectangle.o

rectangle.c


#include <linux/module.h>
#include <linux/kernel.h>
#include <rtl_time.h>
#include <rtl_sched.h>
#include <asm/io.h>
#include <time.h>
#include "common.h"

int period[2]={20000000,1000000};
int periodic_mode=0;
int nibl=0xff;

pthread_t THREAD[2];

void *bit_toggle(void *t) {

   int index = (int)t;
   pthread_make_periodic_np(THREAD[index], 
      gethrtime(), period[index]);

   while (1){
      outb(nibl,LPT);
      nibl = ~nibl;
       pthread_wait_np();
      }
}


int init_module(void)
{
   pthread_attr_t attr;
   struct sched_param sched_param;

   pthread_attr_init (&attr);
   sched_param.sched_priority = 1;
   pthread_attr_setschedparam (&attr, 
      &sched_param);
   pthread_create (&THREAD[0],  &attr, 
      bit_toggle, (void *)0);
   pthread_create (&THREAD[1],  &attr, 
      bit_toggle, (void *)1);

   return 0;
}

void cleanup_module(void)
{
   pthread_delete_np (THREAD[0]);
   pthread_delete_np (THREAD[1]);
}


Der Herr Hofrat
2002-03-08