drivers/infiniband/hw/hfi1/sysfs.c

Source file repositories/reference/linux-study-clean/drivers/infiniband/hw/hfi1/sysfs.c

File Facts

System
Linux kernel
Corpus path
drivers/infiniband/hw/hfi1/sysfs.c
Extension
.c
Size
17968 bytes
Lines
698
Domain
Driver Families
Bucket
drivers/infiniband
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct hfi1_sc2vl_attr {
	struct ib_port_attribute attr;
	int sc;
};

static ssize_t sc2vl_attr_show(struct ib_device *ibdev, u32 port_num,
			       struct ib_port_attribute *attr, char *buf)
{
	struct hfi1_sc2vl_attr *sattr =
		container_of(attr, struct hfi1_sc2vl_attr, attr);
	struct hfi1_devdata *dd = dd_from_ibdev(ibdev);

	return sysfs_emit(buf, "%u\n", *((u8 *)dd->sc2vl + sattr->sc));
}

#define HFI1_SC2VL_ATTR(N)                                                     \
	static struct hfi1_sc2vl_attr hfi1_sc2vl_attr_##N = {                  \
		.attr = __ATTR(N, 0444, sc2vl_attr_show, NULL),                \
		.sc = N,                                                       \
	}

HFI1_SC2VL_ATTR(0);
HFI1_SC2VL_ATTR(1);
HFI1_SC2VL_ATTR(2);
HFI1_SC2VL_ATTR(3);
HFI1_SC2VL_ATTR(4);
HFI1_SC2VL_ATTR(5);
HFI1_SC2VL_ATTR(6);
HFI1_SC2VL_ATTR(7);
HFI1_SC2VL_ATTR(8);
HFI1_SC2VL_ATTR(9);
HFI1_SC2VL_ATTR(10);
HFI1_SC2VL_ATTR(11);
HFI1_SC2VL_ATTR(12);
HFI1_SC2VL_ATTR(13);
HFI1_SC2VL_ATTR(14);
HFI1_SC2VL_ATTR(15);
HFI1_SC2VL_ATTR(16);
HFI1_SC2VL_ATTR(17);
HFI1_SC2VL_ATTR(18);
HFI1_SC2VL_ATTR(19);
HFI1_SC2VL_ATTR(20);
HFI1_SC2VL_ATTR(21);
HFI1_SC2VL_ATTR(22);
HFI1_SC2VL_ATTR(23);
HFI1_SC2VL_ATTR(24);
HFI1_SC2VL_ATTR(25);
HFI1_SC2VL_ATTR(26);
HFI1_SC2VL_ATTR(27);
HFI1_SC2VL_ATTR(28);
HFI1_SC2VL_ATTR(29);
HFI1_SC2VL_ATTR(30);
HFI1_SC2VL_ATTR(31);

static struct attribute *port_sc2vl_attributes[] = {
	&hfi1_sc2vl_attr_0.attr.attr,
	&hfi1_sc2vl_attr_1.attr.attr,
	&hfi1_sc2vl_attr_2.attr.attr,
	&hfi1_sc2vl_attr_3.attr.attr,
	&hfi1_sc2vl_attr_4.attr.attr,
	&hfi1_sc2vl_attr_5.attr.attr,
	&hfi1_sc2vl_attr_6.attr.attr,
	&hfi1_sc2vl_attr_7.attr.attr,
	&hfi1_sc2vl_attr_8.attr.attr,
	&hfi1_sc2vl_attr_9.attr.attr,
	&hfi1_sc2vl_attr_10.attr.attr,
	&hfi1_sc2vl_attr_11.attr.attr,
	&hfi1_sc2vl_attr_12.attr.attr,
	&hfi1_sc2vl_attr_13.attr.attr,
	&hfi1_sc2vl_attr_14.attr.attr,
	&hfi1_sc2vl_attr_15.attr.attr,
	&hfi1_sc2vl_attr_16.attr.attr,
	&hfi1_sc2vl_attr_17.attr.attr,
	&hfi1_sc2vl_attr_18.attr.attr,
	&hfi1_sc2vl_attr_19.attr.attr,
	&hfi1_sc2vl_attr_20.attr.attr,
	&hfi1_sc2vl_attr_21.attr.attr,
	&hfi1_sc2vl_attr_22.attr.attr,
	&hfi1_sc2vl_attr_23.attr.attr,
	&hfi1_sc2vl_attr_24.attr.attr,
	&hfi1_sc2vl_attr_25.attr.attr,
	&hfi1_sc2vl_attr_26.attr.attr,
	&hfi1_sc2vl_attr_27.attr.attr,
	&hfi1_sc2vl_attr_28.attr.attr,
	&hfi1_sc2vl_attr_29.attr.attr,
	&hfi1_sc2vl_attr_30.attr.attr,
	&hfi1_sc2vl_attr_31.attr.attr,
	NULL
};

Annotation

Implementation Notes