src/C/softirq.c
void softirq_query(e_softirq_type sfq, e_task_id task_id, uint8_t irq,
                   physaddr_t irq_handler, physaddr_t *args)
{
    int ret;

    switch (sfq) {
    case SFQ_SYSCALL:
        ret = push_softirq(&syscall_queue, task_id, 0, 0, 0);
        if (ret) {
            panic("push_softirq() failed");
        }
        break;
    case SFQ_USR_ISR:
        ret = push_softirq(&isr_queue, task_id, irq, irq_handler, args);
        if (ret) {
            panic("push_softirq() failed");
        }
        break;
    default:
        panic("push_softirq(): unknown method!");
        break;
    }
    task_set_task_state (ID_SOFTIRQ, TASK_MODE_MAINTHREAD, TASK_STATE_RUNNABLE);
    request_schedule();
    full_memory_barrier();
}
/*
** Query for a new softirq
** executed in hander mode
*/
Query for a new softirq
executed in hander mode
Query for a new softirq executed in hander mode
void softirq_query(e_softirq_type sfq, e_task_id task_id, uint8_t irq,
                   physaddr_t irq_handler, physaddr_t *args)
{
    int ret;
    switch (sfq) {
    case SFQ_SYSCALL:
        ret = push_softirq(&syscall_queue, task_id, 0, 0, 0);
        if (ret) {
            panic("push_softirq() failed");
        }
        break;
    case SFQ_USR_ISR:
        ret = push_softirq(&isr_queue, task_id, irq, irq_handler, args);
        if (ret) {
            panic("push_softirq() failed");
        }
        break;
    default:
        panic("push_softirq(): unknown method!");
        break;
    }
    task_set_task_state (ID_SOFTIRQ, TASK_MODE_MAINTHREAD, TASK_STATE_RUNNABLE);
    request_schedule();
    full_memory_barrier();
}
void softirq_query ( e_softirq_type sfq , e_task_id task_id , uint8_t irq , physaddr_t irq_handler , physaddr_t * args ) { int ret ; switch ( sfq ) { case SFQ_SYSCALL : ret = push_softirq ( & syscall_queue , task_id , 0 , 0 , 0 ) ; if ( ret ) { panic ( " " ) ; } break ; case SFQ_USR_ISR : ret = push_softirq ( & isr_queue , task_id , irq , irq_handler , args ) ; if ( ret ) { panic ( " " ) ; } break ; default : panic ( " " ) ; break ; } task_set_task_state ( ID_SOFTIRQ , TASK_MODE_MAINTHREAD , TASK_STATE_RUNNABLE ) ; request_schedule ( ) ; full_memory_barrier ( ) ; }
Query for a new softirq
executed in hander mode
Query for a new softirq executed in hander mode