/* public functions ========================================================= */ int speed_init(void) { if (running) { goto err_running; } if ((ostream = fopen("speed", "w")) == NULL) { goto err_ostream; } rt_intr_create(&intr, NULL, 81, 0); rt_intr_enable(&intr); rt_mutex_create(&mutex_instant, NULL); rt_mutex_create(&mutex_average, NULL); rt_queue_create(&queue, "irq81", QUEUE_SIZE, Q_UNLIMITED, Q_FIFO); rt_task_spawn(&task_soft, NULL, 0, 80, 0, task_soft_routine, NULL); rt_task_spawn(&task_hard, NULL, 0, 90, 0, task_hard_routine, NULL); instant = 0; average = 0; running = 1; return 0; err_ostream: err_running: return -1; }
int main (int argc, char *argv[]) { int err; mlockall(MCL_CURRENT|MCL_FUTURE); /* Version With 4 param only on userSpace */ err = rt_intr_create(&intr_desc,"MyIrq",70,0); if (err != 0){ printf("rt_intr_create : error\n"); return 1; } err = rt_task_create(&server_desc, "MyIrqServer", TASK_STKSZ, TASK_PRIO, TASK_MODE); if (err == 0) rt_task_start(&server_desc,&irq_server,NULL); else{ printf("rt_task_start : error\n"); return 1; } getchar(); cleanup(); return 0; }
void keyboard_handler(void *arg) { RT_INTR intr; rt_intr_create(&intr, "keyboard handler", KBDIRQ, I_PROPAGATE); int kps = 0; while(1){ rt_printf("#Kbd interrupt %d\n", kps += rt_intr_wait(&intr, TM_INFINITE)); } }
//startup code void startup() { rt_intr_create(&keypress, NULL, KEYBOARD_IRQ, I_PROPAGATE); rt_task_create(&key_isr, NULL,0,50,0); rt_task_start(&key_isr, &key_handler, NULL); // Higher priority rt_task_create(&dummy, NULL,0,53,0); rt_task_start(&dummy, &dummy_task, NULL); }
//startup code void startup() { // define interrupt rt_printf("Creating interrupt...\n"); rt_intr_create(&lightsens_intr,NULL,PARA_PORT_IRQ,I_PROPAGATE); // define interrupt handler rt_printf("Creating handler task...\n"); rt_task_create(&handlertask,NULL,0,99,0); rt_printf("Starting task...\n"); rt_task_start(&handlertask,&handler,NULL); }
int __init init_module(void) { int err; /* Initialisation du timer */ if (TIMER_PERIODIC) err = rt_timer_set_mode(MS); else err = rt_timer_set_mode(TM_ONESHOT); if (err != 0) { printk("rt-app: %s: Error timer: %d\n", __func__, err); return -1; } /* Initialize FB */ fb_init(); printk("rt-app: Framebuffer initialized\n"); xeno_ts_init(); printk("rt-app: Touchscreen initialized\n"); /* Open Philips controller err = pca9554_open(NULL, NULL); if (err != 0) { printk("rt-app: %s: I2C slave open error: %d\n", __func__, err); goto fail_open; }*/ /* Initializing IRQ */ err = rt_intr_create(&isrDesc, "IMX_I2C", INT_I2C, imx_i2c_handler, NULL, 0); if (err != 0) { printk("rt-app: %s: Error interrupt registration: %d\n", __func__, err); goto fail_intr; } printk("rt-app: ISR initialized\n"); /* To Be Completed */ return space_invader(); //fail_open: // pca9554_close(NULL, NULL); fail_intr: xeno_ts_exit(); return -1; }
//startup code void startup(){ int err = 0; // set timing to ns rt_timer_set_mode(BASEPERIOD); err = rt_intr_create(&keypress, NULL, LPT1_IRQ, I_PROPAGATE); if(err < 0) rt_printf("Failed creating interrupt: %d: %s", err, strerror(-err)); err = 0; err = rt_task_create(&taskP, "high", 0, 50, 0); if(err < 0) rt_printf("Failed to create task ; error: %d: %s", err, strerror(-err)); err = 0; err = rt_task_start(&taskP, &task, 0); if(err < 0) rt_printf("Failed to start task; error: %d: %s", err, strerror(-err)); err = 0; }
int __init init_module(void) { int err; /* Initialisation du timer */ if (TIMER_PERIODIC) err = rt_timer_set_mode(MS); else err = rt_timer_set_mode(TM_ONESHOT); if (err != 0) { printk("rt-app: %s: Error timer: %d\n", __func__, err); return -1; } /* Initialize FB */ fb_init(); printk("rt-app: Framebuffer initialized\n"); xeno_ts_init(); printk("rt-app: Touchscreen initialized\n"); /* Initializing IRQ */ err = rt_intr_create(&isrDesc, "IMX_I2C", INT_I2C, imx_i2c_handler, NULL, 0); if (err != 0) { printk("rt-app: %s: Error interrupt registration: %d\n", __func__, err); goto fail_intr; } printk("rt-app: ISR initialized\n"); printk("rt-app: i2c driver call\n"); printk("rt_app: i2c driver ok\n"); return space_invader(); fail_intr: xeno_ts_exit(); return -1; }