drivers/infiniband/hw/hfi1/trace.c

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

File Facts

System
Linux kernel
Corpus path
drivers/infiniband/hw/hfi1/trace.c
Extension
.c
Size
15361 bytes
Lines
533
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_ctxt_hist {
	atomic_t count;
	atomic_t data[255];
};

static struct hfi1_ctxt_hist hist = {
	.count = ATOMIC_INIT(0)
};

const char *hfi1_trace_print_rsm_hist(struct trace_seq *p, unsigned int ctxt)
{
	int i, len = ARRAY_SIZE(hist.data);
	const char *ret = trace_seq_buffer_ptr(p);
	unsigned long packet_count = atomic_fetch_inc(&hist.count);

	trace_seq_printf(p, "packet[%lu]", packet_count);
	for (i = 0; i < len; ++i) {
		unsigned long val;
		atomic_t *count = &hist.data[i];

		if (ctxt == i)
			val = atomic_fetch_inc(count);
		else
			val = atomic_read(count);

		if (val)
			trace_seq_printf(p, "(%d:%lu)", i, val);
	}
	trace_seq_putc(p, 0);
	return ret;
}

__hfi1_trace_fn(AFFINITY);
__hfi1_trace_fn(PKT);
__hfi1_trace_fn(PROC);
__hfi1_trace_fn(SDMA);
__hfi1_trace_fn(LINKVERB);
__hfi1_trace_fn(DEBUG);
__hfi1_trace_fn(SNOOP);
__hfi1_trace_fn(CNTR);
__hfi1_trace_fn(PIO);
__hfi1_trace_fn(DC8051);
__hfi1_trace_fn(FIRMWARE);
__hfi1_trace_fn(RCVCTRL);
__hfi1_trace_fn(TID);
__hfi1_trace_fn(MMU);
__hfi1_trace_fn(IOCTL);

Annotation

Implementation Notes