/* * subchannel information block
*/ struct schib { struct pmcw pmcw; /* path management control word */ union scsw scsw; /* subchannel status word */
__u64 mba; /* measurement block address */
__u8 mda[4]; /* model dependent area */
} __attribute__ ((packed,aligned(4)));
/* * When rescheduled, todo's with higher values will overwrite those * with lower values.
*/ enum sch_todo {
SCH_TODO_NOTHING,
SCH_TODO_EVAL,
SCH_TODO_UNREG,
};
/* subchannel data structure used by I/O subroutines */ struct subchannel { struct subchannel_id schid;
spinlock_t lock; /* subchannel lock */ struct mutex reg_mutex; enum {
SUBCHANNEL_TYPE_IO = 0,
SUBCHANNEL_TYPE_CHSC = 1,
SUBCHANNEL_TYPE_MSG = 2,
SUBCHANNEL_TYPE_ADM = 3,
} st; /* subchannel type */
__u8 vpm; /* verified path mask */
__u8 lpm; /* logical path mask */
__u8 opm; /* operational path mask */ struct schib schib; /* subchannel information block */ int isc; /* desired interruption subclass */ struct chsc_ssd_info ssd_info; /* subchannel description */ struct device dev; /* entry in device tree */ struct css_driver *driver; enum sch_todo todo; struct work_struct todo_work; struct schib_config config;
u64 dma_mask; /* * Driver name to force a match. Do not set directly, because core * frees it. Use driver_set_override() to set or clear it.
*/ constchar *driver_override;
} __attribute__ ((aligned(8)));
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.