STRUCT FW_CDEV_EVENT_RESPONSE2(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct fw_cdev_event_response2(9) πŸ¦‹

okay bestie, welcome to the Kernel API Manual β€” this one's a struct page and honestly it's kinda iconic. no cap, it's giving "the response you've been waiting for" energy. πŸ’Œ


✨ NAME ✨

struct fw_cdev_event_response2 β€” the event that gets sent when a response packet shows up in your life πŸŽ€


🌸 SYNOPSIS 🌸

struct fw_cdev_event_response2 {
    __u64 closure;
    __u32 type;
    __u32 rcode;
    __u32 length;
    __u32 request_tstamp;
    __u32 response_tstamp;
    __u32 padding;
    __u32 data[];
 };

look at her. flawless. every field accounted for. πŸ‘‘


πŸ’œ Members πŸ’œ

  • closure β€” see fw_cdev_event_common; this one gets set by FW_CDEV_IOC_SEND_REQUEST or FW_CDEV_IOC_SEND_BROADCAST_REQUEST or the FW_CDEV_IOC_SEND_STREAM_PACKET ioctl. it's literally your lil "this belongs to that" tag, iykyk 🏷️
  • type β€” see fw_cdev_event_common; this is always FW_CDEV_EVENT_RESPONSE. no surprises, main character stays consistent πŸ’…
  • rcode β€” the response code the remote node sent back. it's the "how did it go" field, okurrr πŸ’€
  • length β€” the data length, like, the response's payload size in bytes πŸ“
  • request_tstamp β€” the time stamp of the isochronous cycle at which the request was sent. ⏰
  • response_tstamp β€” the time stamp of the isochronous cycle at which the response was sent. ⏱️
  • padding β€” padding, bestie. it's there to keep the size of the structure as multiples of 8 across various architectures, since 4 byte alignment is used for 8 byte of object type in System V ABI for the i386 architecture. she's just doing her job 🫢
  • data β€” the payload data, if any πŸ’Ύ

πŸ”₯ Description πŸ”₯

so here's the tea: this event gets sent when the stack receives a response to an outgoing request that was sent by the FW_CDEV_IOC_SEND_REQUEST ioctl. the payload data for responses that carry data (read and lock responses, natch) follows immediately and can be accessed through the data field. slay. 🌈

the event is also generated after conclusions of transactions that don't involve response packets β€” and yes that includes unified write transactions, broadcast write transactions, and transmission of asynchronous stream packets. in those cases rcode is the one telling you if that transmission was a success or a failure. it's giving "no packet, still got receipts" πŸ’€

now for the timestamps, because they're so real for this:

  • the value of request_tstamp expresses the isochronous cycle at which the request was sent to initiate the transaction.
  • the value of response_tstamp expresses the isochronous cycle at which the response arrived to complete the transaction.

each value is an unsigned 16 bit integer containing three low order bits of the second field and all 13 bits of the cycle field in the format of the CYCLE_TIMER register. periodt. 🧚


⭐ SEE ALSO ⭐

go read these next, bestie, they're all in the kernel file ./include/uapi/linux/firewire-cdev.h and honestly the whole friend group ate:

  • struct fw_cdev_event_common(9)
  • struct fw_cdev_event_bus_reset(9)
  • struct fw_cdev_event_response(9)
  • struct fw_cdev_event_request(9)
  • struct fw_cdev_event_request2(9)
  • struct fw_cdev_event_request3(9)
  • struct fw_cdev_event_iso_interrupt(9)
  • struct fw_cdev_event_iso_interrupt_mc(9)
  • struct fw_cdev_event_iso_resource(9)
  • struct fw_cdev_event_phy_packet(9)
  • struct 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_queue_iso(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)

and that's the whole page, bestie!! 🫢✨ this lil masterpiece lives in ./include/uapi/linux, dated October 2026, and it's filed under struct fw_cd...nt_response2(9) β€” mwah, go off πŸ’–πŸŽ€πŸŒΈ

πŸ“¦ where this page comes from