drivers/s390/cio/trace.h

Source file repositories/reference/linux-study-clean/drivers/s390/cio/trace.h

File Facts

System
Linux kernel
Corpus path
drivers/s390/cio/trace.h
Extension
.h
Size
10682 bytes
Lines
402
Domain
Driver Families
Bucket
drivers/s390
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

#include <linux/kernel.h>
#include <asm/crw.h>
#include <uapi/asm/chpid.h>
#include <uapi/asm/schid.h>
#include "cio.h"
#include "orb.h"

#undef TRACE_SYSTEM
#define TRACE_SYSTEM s390

#if !defined(_TRACE_S390_CIO_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_S390_CIO_H

#include <linux/tracepoint.h>

DECLARE_EVENT_CLASS(s390_class_schib,
	TP_PROTO(struct subchannel_id schid, struct schib *schib, int cc),
	TP_ARGS(schid, schib, cc),
	TP_STRUCT__entry(
		__field(u8, cssid)
		__field(u8, ssid)
		__field(u16, schno)
		__field(u16, devno)
		__field_struct(struct schib, schib)
		__field(u8, pmcw_ena)
		__field(u8, pmcw_st)
		__field(u8, pmcw_dnv)
		__field(u16, pmcw_dev)
		__field(u8, pmcw_lpm)
		__field(u8, pmcw_pnom)
		__field(u8, pmcw_lpum)
		__field(u8, pmcw_pim)
		__field(u8, pmcw_pam)
		__field(u8, pmcw_pom)
		__field(u64, pmcw_chpid)
		__field(int, cc)
	),
	TP_fast_assign(
		__entry->cssid = schid.cssid;
		__entry->ssid = schid.ssid;
		__entry->schno = schid.sch_no;
		__entry->devno = schib->pmcw.dev;
		__entry->schib = *schib;
		__entry->pmcw_ena = schib->pmcw.ena;
		__entry->pmcw_st = schib->pmcw.st;
		__entry->pmcw_dnv = schib->pmcw.dnv;
		__entry->pmcw_dev = schib->pmcw.dev;
		__entry->pmcw_lpm = schib->pmcw.lpm;
		__entry->pmcw_pnom = schib->pmcw.pnom;
		__entry->pmcw_lpum = schib->pmcw.lpum;
		__entry->pmcw_pim = schib->pmcw.pim;
		__entry->pmcw_pam = schib->pmcw.pam;
		__entry->pmcw_pom = schib->pmcw.pom;
		memcpy(&__entry->pmcw_chpid, &schib->pmcw.chpid, 8);
		__entry->cc = cc;
	),
	TP_printk("schid=%x.%x.%04x cc=%d ena=%d st=%d dnv=%d dev=%04x "
		  "lpm=0x%02x pnom=0x%02x lpum=0x%02x pim=0x%02x pam=0x%02x "
		  "pom=0x%02x chpids=%016llx",
		  __entry->cssid, __entry->ssid, __entry->schno, __entry->cc,
		  __entry->pmcw_ena, __entry->pmcw_st,
		  __entry->pmcw_dnv, __entry->pmcw_dev,
		  __entry->pmcw_lpm, __entry->pmcw_pnom,
		  __entry->pmcw_lpum, __entry->pmcw_pim,
		  __entry->pmcw_pam, __entry->pmcw_pom,
		  __entry->pmcw_chpid
	)
);

/**
 * s390_cio_stsch -  Store Subchannel instruction (STSCH) was performed
 * @schid: Subchannel ID
 * @schib: Subchannel-Information block
 * @cc: Condition code
 */
DEFINE_EVENT(s390_class_schib, s390_cio_stsch,
	TP_PROTO(struct subchannel_id schid, struct schib *schib, int cc),
	TP_ARGS(schid, schib, cc)
);

/**
 * s390_cio_msch -  Modify Subchannel instruction (MSCH) was performed
 * @schid: Subchannel ID
 * @schib: Subchannel-Information block
 * @cc: Condition code
 */
DEFINE_EVENT(s390_class_schib, s390_cio_msch,
	TP_PROTO(struct subchannel_id schid, struct schib *schib, int cc),
	TP_ARGS(schid, schib, cc)
);

Annotation

Implementation Notes