STRUCT IPACK_DEVICE(9)
π struct ipack_device(9) β like, the whole vibe
okay so this is from the Kernel API Manual, bestie β it's the struct ipack_device(9) page and it's literally the blueprint for how the IPack subsystem thinks about a device. sit down, grab a strawberry drink π, we're doing this.
β¨ NAME β¨
struct ipack_device β the subsystem's own representation of an IPack device. that's it, that's the whole name. main character energy π
π SYNOPSIS π
struct ipack_device {
unsigned int slot;
struct ipack_bus_device *bus;
struct device dev;
void (*release) (struct ipack_device *dev);
struct ipack_region region[IPACK_SPACE_COUNT];
u8 *id;
size_t id_avail;
u32 id_vendor;
u32 id_device;
u8 id_format;
unsigned int id_crc_correct:1;
unsigned int speed_8mhz:1;
unsigned int speed_32mhz:1;
};
copy it exactly, don't get cute with it, fr fr π
πΈ Members πΈ
so not every field gets a little paragraph β the page only spells out three of them, and here they are:
slotβ the slot where the device is plugged in the carrier board. that's its spot. its home. its little seat πΊbusβ theipack_bus_devicewhere the device is plugged to. the bus bestie it's attached to πdevβ the device in kernel representation. the kernel-flavoured version of the same thing, iconic π
the rest of the fields (release,region,id,id_avail,id_vendor,id_device,id_format,id_crc_correct:1,speed_8mhz:1,speed_32mhz:1) show up in the synopsis up there β this page just doesn't give them their own little blurbs. no cap, that's genuinely all it says π€·ββοΈ
π¦ Description π¦
Warning: direct access to mapped memory is possible, BUT the endianness is not the same with a PCI carrier or a VME carrier. π
like, you can poke at the mapped memory directly, but please internalize this: PCI carrier and VME carrier do not agree on endianness. the endianness is managed by the carrier board through bus->ops. so the board handles the byte-order situation for you β don't go doing your own thing and then acting surprised π
π SEE ALSO π
go read these next, i'm obsessed with cross-references:
- Kernel file
./include/linux/ipack.h struct ipack_driver_ops(9)struct ipack_driver(9)struct ipack_bus_ops(9)struct ipack_bus_device(9)ipack_bus_register(9)ipack_bus_unregister(9)ipack_driver_register(9)ipack_device_init(9)ipack_device_add(9)DEFINE_IPACK_DEVICE_TABLE(9)IPACK_DEVICE(9)ipack_get_carrier(9)
aaaand that's the page π«Ά this one lives in ./include/linux, dated October 2026. slay, go build something, mwah π
β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms