STRUCT FW_CDEV_QUEUE_ISO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸŽ€ struct fw_cdev_queue_iso(9) πŸŽ€

okay so this is a page from the Kernel API Manual β€” yes, that Kernel API Manual, the firewire-cdev one β€” and it's all about struct fw_cdev_queue_iso. bestie, this is the "queue up your isochronous packets for I/O" struct and honestly it's giving main character energy in the firewire world πŸ’…


✨ NAME ✨

struct fw_cdev_queue_iso β€” Queue isochronous packets for I/O πŸ¦‹


🌸 SYNOPSIS 🌸

struct fw_cdev_queue_iso {
    __u64 packets;
    __u64 data;
    __u32 size;
    __u32 handle;
 };

like literally that's the whole shape of it, no cap ✨


πŸ’– Members πŸ’–

  • packets β€” a userspace pointer to an array of fw_cdev_iso_packet. yes bestie, userspace, it's pointing at your array πŸ‘‘
  • data β€” a pointer into the mmap'ed payload buffer. mmap'ed, remember it 🫢
  • size β€” the size of the packets array, in bytes. bytes, not packets, okurrr πŸ“
  • handle β€” the isochronous context handle. it's giving "ticket to the iso party" 🎟️

πŸ”₯ Description πŸ”₯

So what does it do? It queues a number of isochronous packets for reception or transmission. either direction, she's versatile πŸ’…

This ioctl takes a pointer to an array of fw_cdev_iso_packet structs, which describe how to transmit from or receive into a contiguous region of a mmap'ed payload buffer. contiguous region, mmap'ed buffer, got it? 🧚

And here's the cute part: as part of transmit packet descriptors, a series of headers can be supplied, and those will be prepended to the payload during DMA. headers first, payload after, slay 🌈

lowkey important caveat: the kernel may or may not queue all packets. not all of them, maybe. but it will write back updated values of the packets, data and size fields β€” so the ioctl can be resubmitted easily. ngl that resubmit-friendliness is iconic, it ate πŸ’€
also a real one: in case of a multichannel receive context, data must be quadlet-aligned relative to the buffer start. quadlet-aligned, relative to buffer start, don't forget it or it's over πŸ™ˆ

🌟 SEE ALSO 🌟

Kernel file ./include/uapi/linux/firewire-cdev.h struct, plus the whole friend group πŸ‘‡

  • fw_cdev_event_common(9)
  • fw_cdev_event_bus_reset(9)
  • fw_cdev_event_response(9)
  • fw_cdev_event_response2(9)
  • fw_cdev_event_request(9)
  • fw_cdev_event_request2(9)
  • fw_cdev_event_request3(9)
  • fw_cdev_event_iso_interrupt(9)
  • fw_cdev_event_iso_interrupt_mc(9)
  • fw_cdev_event_iso_resource(9)
  • fw_cdev_event_phy_packet(9)
  • fw_cdev_event_phy_packet2(9)
  • union fw_cdev_event(9)
  • struct fw_cdev_get_info(9)
  • struct fw_cdev_send_request(9)
  • struct fw_cdev_send_response(9)
  • struct fw_cdev_allocate(9)
  • struct fw_cdev_deallocate(9)
  • struct fw_cdev_initiate_bus_reset(9)
  • struct fw_cdev_add_descriptor(9)
  • struct fw_cdev_remove_descriptor(9)
  • struct fw_cdev_create_iso_context(9)
  • struct fw_cdev_set_iso_channels(9)
  • struct fw_cdev_iso_packet(9)
  • struct fw_cdev_start_iso(9)
  • struct fw_cdev_stop_iso(9)
  • struct fw_cdev_flush_iso(9)
  • struct fw_cdev_get_cycle_timer(9)
  • struct fw_cdev_get_cycle_timer2(9)
  • struct fw_cdev_allocate_iso_resource(9)
  • struct fw_cdev_send_stream_packet(9)
  • struct fw_cdev_send_phy_packet(9)
  • struct fw_cdev_receive_phy_packets(9)

like, the whole squad showed up for this one πŸ˜­πŸ’œ


and that's the page, bestie! this one lives in ./include/uapi/linux, dated October 2026, and the manual name is struct fw_cdev_queue_iso(9) in case you forgot already πŸ“ go queue some packets, you absolute icon β­πŸ’…

πŸ“¦ where this page comes from