STRUCT IRB(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ NAME πŸŽ€

okay bestie, this is struct irb β€” aka the interruption response block β€” and we're reading it straight out of the Kernel API Manual πŸ’…. This is struct irb(9), and it's giving "the block that shows up when an interrupt happens" energy. ✨

✨ SYNOPSIS ✨

here's the exact shape of it, no cap:

struct irb {
    union scsw scsw;
    union {
      struct esw0 esw0;
      struct esw1 esw1;
      struct esw2 esw2;
      struct esw3 esw3;
      struct esw_eadm eadm;
    } esw;
    __u8 ecw[32];
 };

🫢 Members 🫢

okay so inside this icon we have:

  • scsw β€” subchannel status word, literally the status-word member πŸ’–
  • esw β€” extended status word, the extended one πŸ¦‹
  • ecw β€” extended control word, control-word bestie πŸŽ€

πŸ’– Description πŸ’–

so picture it: an interrupt happens, and the kernel hands this irb to the device driver. For solicited interrupts, the common I/O layer has already checked whether a field is valid β€” and if a field is not valid, it's always passed as 0, periodt. If a unit check occurred, ecw may contain sense data; that sense data gets retrieved by the common I/O layer itself when the device doesn't support concurrent sense (so the device driver never needs to perform basic sense itself, thank goodness 😭). For unsolicited interrupts, the irb is passed as-is (expect for sense data, if applicable). πŸ‘‘

🌈 SEE ALSO 🌈

the kernel file ./arch/s390/include/asm/cio.h is the source-y spot, and the full reference squad is:

  • struct ccw1(9)
  • struct ccw0(9)
  • struct erw(9)
  • struct erw_eadm(9)
  • struct sublog(9)
  • struct esw0(9)
  • struct esw1(9)
  • struct esw2(9)
  • struct esw3(9)
  • struct esw_eadm(9)
  • struct ciw(9)
  • struct ccw_dev_id(9)
  • ccw_dev_id_is_equal(9)
  • pathmask_to_pos(9)

okay that's the whole tea β˜• β€” source/version ./arch/s390/include/asm, date October 2026, all about struct irb(9). mwah, bestie πŸ’‹βœ¨

πŸ“¦ where this page comes from