title: xv6 - what does '+' mean in a switch sentence
body: <p>I'm modifying XV6 and i'm trying to understand something about trap.c</p>
  
  <pre><code>switch(tf-&gt;trapno){
    case T_IRQ0 + IRQ_TIMER:
      if(cpu-&gt;id == 0){
        acquire(&amp;tickslock);
        ticks++;
        wakeup(&amp;ticks);
        release(&amp;tickslock);
      }
      lapiceoi();
      break;
    case T_IRQ0 + IRQ_IDE:
      ideintr();
      lapiceoi();
      break;
    case T_IRQ0 + IRQ_IDE+1:
      // Bochs generates spurious IDE1 interrupts.
      break;
    case T_IRQ0 + IRQ_KBD:
      kbdintr();
      lapiceoi();
      break;
    case T_IRQ0 + IRQ_COM1:
      uartintr();
      lapiceoi();
      break;
    case T_IRQ0 + 7:
    case T_IRQ0 + IRQ_SPURIOUS:
      cprintf("cpu%d: spurious interrupt at %x:%x\n",
              cpu-&gt;id, tf-&gt;cs, tf-&gt;eip);
      lapiceoi();
      break;
  
    //PAGEBREAK: 13
    default:
      if(proc == 0 || (tf-&gt;cs&amp;3) == 0){
        // In kernel, it must be our mistake.
        cprintf("unexpected trap %d from cpu %d eip %x (cr2=0x%x)\n",
                tf-&gt;trapno, cpu-&gt;id, tf-&gt;eip, rcr2());
        panic("trap");
      }
      // In user space, assume process misbehaved.
      cprintf("pid %d %s: trap %d err %d on cpu %d "
              "eip 0x%x addr 0x%x--kill proc\n",
              proc-&gt;pid, proc-&gt;name, tf-&gt;trapno, tf-&gt;err, cpu-&gt;id, tf-&gt;eip, 
              rcr2());
      proc-&gt;killed = 1;
    }
  </code></pre>
  
  <p>when it says "case T_IRQ0 + IRQ_IDE" does that mean both of those must happen?</p>
  
  <p>can a single process enter more than one case?</p>