ccw_device_start_key(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… ccw_device_start_key β€” like, the key-flavored version of starting an s390 channel program

okay so bestie, welcome to the Kernel API Manual entry for ccw_device_start_key. yes it's a section 9 page, yes it's about mainframe I/O, and yes it's iconic. buckle up. πŸŽ€


✨ NAME ✨

ccw_device_start_key β€” start a s390 channel program with key πŸ”‘


✨ SYNOPSIS ✨

int ccw_device_start_key (struct ccw_device *cdev , struct ccw1 *cpa ,
unsigned long intparm , __u8 lpm , __u8 key , unsigned long flags );

✨ ARGUMENTS ✨

  • cdev β€” the target ccw device. like, the device we're doing the thing to 🫢
  • cpa β€” logical start address of the channel program. the address, bestie ✨
  • intparm β€” a user specific interruption parameter. it gets presented back to cdev's interrupt handler, which lets a device driver associate that interrupt with one particular I/O request. it's giving "remember me" energy πŸ’–
  • lpm β€” defines the channel path to be used for a specific I/O request. and heads up: a value of 0 will make cio use the opm πŸ‘€
  • key β€” the storage key to be used for the I/O πŸ”‘
  • flags β€” additional flags; defines the action to be performed for I/O processing 🚩

✨ DESCRIPTION ✨

So you're starting a S/390 channel program. slay. πŸŽ‰

When the interrupt arrives, the IRQ handler is called β€” and the timing is very main character, because it can be:

  • immediately
  • delayed (dev-end missing, or sense required) 😭
  • never (no IRQ handler registered) πŸ’€

The interruption handler will echo back the intparm you specified here β€” unless another interruption parameter gets specified by a subsequent invocation of ccw_device_halt or ccw_device_clear. so like, don't count on it if someone else on the chat is also passing notes πŸ™ˆ


✨ RETURN ✨

  • 0 β€” if the operation was successful ✨
  • -EBUSY β€” if the device is busy, or status pending 😀
  • -EACCES β€” if no path specified in lpm is operational 🚫
  • -ENODEV β€” if the device is not operational πŸ’€

✨ CONTEXT ✨

Interrupts disabled, ccw device lock held. fr fr, you gotta be holding that lock. no cap. πŸ”’

✨ SEE ALSO ✨

The kernel file ./drivers/s390/cio/device_ops.c β€” that's literally where this lives πŸ—‚οΈ

and then the whole friend group, all of them, not skipping a single one πŸ‘‘


that's the whole page bestie, go start some channel programs responsibly πŸ’œ

β€” source/version: ./drivers/s390/cio, dated October 2026 β€” mwah, xoxo, the Kernel API Manual πŸ§šβ€β™€οΈ

πŸ“¦ where this page comes from