STRUCT RIO_OPS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

okay bestie, welcome to the struct rio_ops(9) page from the Kernel API Manual β€” this is all about low-level RIO configuration space operations, and it’s lowkey the blueprint for how the kernel talks to RapidIO hardware ✨

πŸŽ€ SYNOPSIS πŸŽ€

here’s the whole struct, copied exactly so nobody comes for me:

       struct rio_ops {
           int (*lcread) (struct rio_mport *mport, int index, u32 offset, int
       len, u32 *data);
           int (*lcwrite) (struct rio_mport *mport, int index, u32 offset, int
       len, u32 data);
           int (*cread) (struct rio_mport *mport, int index, u16 destid, u8
       hopcount, u32 offset, int len, u32 *data);
           int (*cwrite) (struct rio_mport *mport, int index, u16 destid, u8
       hopcount, u32 offset, int len, u32 data);
           int (*dsend) (struct rio_mport *mport, int index, u16 destid, u16
       data);
           int (*pwenable) (struct rio_mport *mport, int enable);
           int (*open_outb_mbox)(struct rio_mport *mport, void *dev_id, int
       mbox, int entries);
           void (*close_outb_mbox)(struct rio_mport *mport, int mbox);
           int (*open_inb_mbox)(struct rio_mport *mport, void *dev_id, int
       mbox, int entries);
           void (*close_inb_mbox)(struct rio_mport *mport, int mbox);
           int (*add_outb_message)(struct rio_mport *mport, struct rio_dev
       *rdev, int mbox, void *buffer, size_t len);
           int (*add_inb_buffer)(struct rio_mport *mport, int mbox, void *buf);
           void *(*get_inb_message)(struct rio_mport *mport, int mbox);
           int (*map_inb)(struct rio_mport *mport, dma_addr_t lstart, u64
       rstart, u64 size, u32 flags);
           void (*unmap_inb)(struct rio_mport *mport, dma_addr_t lstart);
           int (*query_mport)(struct rio_mport *mport, struct rio_mport_attr
       *attr);
           int (*map_outb)(struct rio_mport *mport, u16 destid, u64 rstart, u32
       size, u32 flags, dma_addr_t *laddr);
           void (*unmap_outb)(struct rio_mport *mport, u16 destid, u64 rstart);
        };

🌸 Members 🌸

  • lcread β€” callback to perform local (master port) read of config space. local queen behavior, no cap πŸ’…
  • lcwrite β€” callback to perform local (master port) write of config space. yes bestie, write it ✨
  • cread β€” callback to perform network read of config space. reaching across the network like it’s nothing πŸ¦‹
  • cwrite β€” callback to perform network write of config space. network write main character energy πŸ”₯
  • dsend β€” callback to send a doorbell message. ding dong, the doorbell callback is here πŸ›ŽοΈ
  • pwenable β€” callback to enable/disable port-write message handling. flip the switch, bestie 🎚️
  • open_outb_mbox β€” callback to initialize outbound mailbox. setting up the outbound mailbox, slay πŸ“¬
  • close_outb_mbox β€” callback to shut down outbound mailbox. outbound mailbox said bye πŸ‘‹
  • open_inb_mbox β€” callback to initialize inbound mailbox. inbound mailbox is waking up 🌈
  • close_inb_mbox β€” callback to shut down inbound mailbox. inbound mailbox is logging off πŸ’€
  • add_outb_message β€” callback to add a message to an outbound mailbox queue. queue it up, bestie πŸŽ€
  • add_inb_buffer β€” callback to add a buffer to an inbound mailbox queue. buffer added, we love to see it 🫢
  • get_inb_message β€” callback to get a message from an inbound mailbox queue. grabbing that message like it’s the last iced coffee πŸ§‹
  • map_inb β€” callback to map RapidIO address region into local memory space. mapping era πŸ’«
  • unmap_inb β€” callback to unmap RapidIO address region mapped with map_inb. cleanup icon behavior 🧹
  • query_mport β€” callback to query mport device attributes. asking the mport device for its whole vibe check πŸ”
  • map_outb β€” callback to map outbound address region into local memory space. outbound mapping, periodt πŸ—ΊοΈ
  • unmap_outb β€” callback to unmap outbound RapidIO address region. and unmap it right back, iconic πŸ¦‹

⭐ SEE ALSO ⭐

Kernel file ./include/linux/rio.h β€” then go stan the whole related squad: struct rio_switch(9), struct rio_switch_ops(9), struct rio_dev(9), struct rio_msg(9), struct rio_dbell(9), struct rio_mport(9), struct rio_net(9), struct rio_mport_attr(9), struct rio_driver(9), struct rio_scan(9), struct rio_scan_node(9) 🌈


mwah πŸ’‹ cute little sign-off time: this page came from ./include/linux, dated October 2026, and it is literally the struct rio_ops(9) page β€” periodt πŸ’–

πŸ“¦ where this page comes from