/* * Conditions used to specify which subchannels need evaluation
*/ enum css_eval_cond {
CSS_EVAL_NO_PATH, /* Subchannels with no operational paths */
CSS_EVAL_NOT_ONLINE /* sch without an online-device */
};
struct path_state {
__u8 state1 : 2; /* path state value 1 */
__u8 state2 : 2; /* path state value 2 */
__u8 state3 : 1; /* path state value 3 */
__u8 resvd : 3; /* reserved */
} __attribute__ ((packed));
struct pgid { union {
__u8 fc; /* SPID function code */ struct path_state ps; /* SNID path state */
} __attribute__ ((packed)) inf; union {
__u32 cpu_addr : 16; /* CPU address */ struct extended_cssid ext_cssid;
} __attribute__ ((packed)) pgid_high;
__u32 cpu_id : 24; /* CPU identification */
__u32 cpu_model : 16; /* CPU model */
__u32 tod_high; /* high word TOD clock */
} __attribute__ ((packed));
struct subchannel; struct chp_link; /** * struct css_driver - device driver for subchannels * @subchannel_type: subchannel type supported by this driver * @drv: embedded device driver structure * @irq: called on interrupts * @chp_event: called for events affecting a channel path * @sch_event: called for events affecting the subchannel * @probe: function called on probe * @remove: function called on remove * @shutdown: called at device shutdown * @settle: wait for asynchronous work to finish
*/ struct css_driver { struct css_device_id *subchannel_type; struct device_driver drv; void (*irq)(struct subchannel *); int (*chp_event)(struct subchannel *, struct chp_link *, int); int (*sch_event)(struct subchannel *, int); int (*probe)(struct subchannel *); void (*remove)(struct subchannel *); void (*shutdown)(struct subchannel *); int (*settle)(void);
};
/* Dummy helper which needs to change once we support more than one css. */ staticinlinestruct channel_subsystem *css_by_id(u8 cssid)
{ return channel_subsystems[0];
}
/* Dummy iterator which needs to change once we support more than one css. */ #define for_each_css(css) \ for ((css) = channel_subsystems[0]; (css); (css) = NULL)
/* Helper functions to build lists for the slow path. */ void css_schedule_eval(struct subchannel_id schid); void css_schedule_eval_all(void); void css_schedule_eval_cond(enum css_eval_cond, unsignedlong delay); int css_complete_work(void);
int sch_is_pseudo_sch(struct subchannel *); struct schib; int css_sch_is_valid(struct schib *);
¤ 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.0.4Bemerkung:
¤
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.