previous | start | next

Execution

For any of the times that softirq's execute, a function do_softirq() is called and the following code executes.

unsigned int pending;

pending = local_softirq_pending();

if ( pending ) {
  struct softirq_action *h;

  /* clear the pending mask */
  set_softirq_pending(0);

  h = softirq_vec;
  do {
    if ( pending & 1 ) {
      h->action(h);
    }
    h++;
    pending >>= 1;
  } while( pending );
 }


previous | start | next