STRUCT DFL_FEATURE_INFO(9)
π struct dfl_feature_info β a kernel API manual moment, bestie π
okay so this is a page from the Kernel API Manual (the (9) girlies know), and it's all about struct dfl_feature_info β the little cutie that holds sub feature info collected during feature dev build. yes that's the NAME section, we're starting strong β¨
π«Ά SYNOPSIS π«Ά
like, here's the whole struct, literally character for character, no notes:
struct dfl_feature_info {
u16 fid;
u8 revision;
u8 dfh_version;
struct resource mmio_res;
void __iomem *ioaddr;
struct list_head node;
unsigned int irq_base;
unsigned int nr_irqs;
unsigned int param_size;
u64 params[];
};
it's giving "small but booked and busy" π
πΈ Members πΈ
every single field, and what it's about β no skipping, we're thorough in this house:
fidβ id of this sub feature. it's the sub feature's whole identity fr fr πͺͺrevisionβ revision of this sub feature. the glow-up version number β¨dfh_versionβ version of Device Feature Header (DFH). yes, the header has its own version, main character energy πmmio_resβ mmio resource of this sub feature. the actual memory-mapped turf πΊοΈioaddrβ mapped base address of mmio resource. where the MMIO actually lives once it's mapped πnodeβ node in sub_features linked list. our girl is linked-list-ified, the way that she's on a list πirq_baseβ start of irq index in this sub feature. where the interrupt numbering begins π’nr_irqsβ number of irqs of this sub feature. how many interrupts she brought to the party πparam_sizeβ size DFH parameters. (yes, that's exactly how the original words it β keep it π)paramsβ DFH parameter data. the flexible array member at the end doing the absolute most π§
ngl the params[] at the bottom with no size is iconic β it's a flexible array member, so the data just follows the struct. lowkey obsessed π
π₯ SEE ALSO π₯
the whole friend group, and we're not leaving anyone out:
- Kernel file
./drivers/fpga/dfl.cβ where a lot of this lives, go read it bestie π struct dfl_dev_info(9)struct dfl_chardev_info(9)dfl_fpga_port_ops_get(9)dfl_fpga_port_ops_put(9)dfl_fpga_port_ops_add(9)dfl_fpga_port_ops_del(9)dfl_fpga_check_port_id(9)dfl_fpga_dev_feature_uinit(9)dfl_fpga_dev_feature_init(9)dfl_fpga_dev_ops_register(9)dfl_fpga_dev_ops_unregister(9)struct build_feature_devs_info(9)dfh_find_param(9)parse_feature(9)dfl_fpga_enum_info_add_dfl(9)dfl_fpga_enum_info_add_irq(9)dfl_fpga_feature_devs_enumerate(9)dfl_fpga_feature_devs_remove(9)__dfl_fpga_cdev_find_port_data(9)dfl_fpga_cdev_release_port(9)dfl_fpga_cdev_assign_port(9)dfl_fpga_cdev_config_ports_pf(9)dfl_fpga_cdev_config_ports_vf(9)dfl_fpga_set_irq_triggers(9)dfl_feature_ioctl_get_num_irqs(9)dfl_feature_ioctl_set_irq(9)
likeβ¦ that's the roster. 27 entries. we listed every single one because we don't do half-finished over here π―
and that's the page!! mwah π this manual came from ./drivers/fpga and it's dated October 2026, so yeah, she's from the future and she's still serving struct realness. slay, stay hydrated, and go read your kernel source π«Άπβ
π¦ 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