ccw_device_start_timeout(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ ccw_device_start_timeout(9) ✨

okay so bestie, welcome to the Kernel API Manual πŸ’… this one lives in the s390 corner of the kernel and it's literally the girlboss that kicks off a channel program and sets a timer on it. no cap, she does both. πŸŽ€


🌸 NAME 🌸

ccw_device_start_timeout β€” start a s390 channel program with timeout


πŸ¦‹ SYNOPSIS πŸ¦‹

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

πŸ’– ARGUMENTS πŸ’–

  • cdev β€” the target ccw device, aka the one we're doing all this for 🫢
  • cpa β€” logical start address of the channel program
  • intparm β€” a user specific interruption parameter; it gets presented back to cdev's interrupt handler. it's giving "let a device driver associate the interrupt with a particular I/O request" energy, and honestly? iconic.
  • lpm β€” defines the channel path to be used for a specific I/O request. set it to 0 and cio will just use the opm instead, easy ✨
  • flags β€” additional flags; defines the action to be performed for I/O processing
  • expires β€” timeout value in jiffies ⏰

πŸ”₯ DESCRIPTION πŸ”₯

Start a S/390 channel program. that's the whole vibe.

When the interrupt arrives, the IRQ handler is called β€” and the way it shows up can be immediately, delayed (dev-end missing, or sense required), or never (no IRQ handler registered). three whole moods, we love range πŸ’€

This function notifies the device driver if the channel program has not completed during the time specified by expires. so if it's running late (rude), you will hear about it.

If a timeout occurs, the channel program is terminated via xsch, hsch or csch, and the device's interrupt handler will be called with an irb containing ERR_PTR(-ETIMEDOUT). 😭 yeah, it's that kind of party.

The interruption handler will echo back the intparm specified here β€” unless another interruption parameter is specified by a subsequent invocation of ccw_device_halt or ccw_device_clear. so like, don't be surprised if someone else changed the vibe check in the meantime πŸ™ˆ


⭐ 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. yes bestie, you gotta be holding the lock β€” no exceptions, periodt.


🌈 SEE ALSO 🌈

Kernel file ./drivers/s390/cio/device_ops.c

then the whole friend group, fr fr:

ccw_device_set_options_mask(9), ccw_device_set_options(9), ccw_device_clear_options(9), ccw_device_is_pathgroup(9), ccw_device_is_multipath(9), ccw_device_clear(9), ccw_device_start_timeout_key(9), ccw_device_start_key(9), ccw_device_start(9), ccw_device_halt(9), ccw_device_resume(9), ccw_device_get_ciw(9), ccw_device_get_path_mask(9), ccw_device_get_chp_desc(9), ccw_device_get_util_str(9), ccw_device_get_id(9), ccw_device_tm_start_timeout_key(9), ccw_device_tm_start_key(9), ccw_device_tm_start(9), ccw_device_tm_start_timeout(9), ccw_device_get_mdc(9), ccw_device_tm_intrg(9), ccw_device_get_schid(9), ccw_device_pnso(9), ccw_device_get_cssid(9), ccw_device_get_iid(9), ccw_device_get_chpid(9), ccw_device_get_chid(9)


okay that's the whole page, you ate that πŸ“ mwah πŸ’œ

✨ cute sign-off ✨ this beauty comes from ./drivers/s390/cio and it's dated October 2026. go forth and start your channel programs, bestie, but mind the expires 🧚
πŸ“¦ where this page comes from