mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
s390/ap: Extend struct ap_queue_status with some convenience fields
Sometimes there is a different view of the AP status word
needed. So here is slight rework of the struct ap_queue_status
to open up the possibility to have different ways of accessing
the AP status bits and fields.
The new struct ap_queue_status
struct ap_queue_status {
union {
unsigned int value : 32;
struct {
unsigned int status_bits : 8;
unsigned int rc : 8;
unsigned int : 16;
};
struct {
unsigned int queue_empty : 1;
unsigned int replies_waiting : 1;
unsigned int queue_full : 1;
unsigned int : 3;
unsigned int async : 1;
unsigned int irq_enabled : 1;
unsigned int response_code : 8;
unsigned int : 16;
};
};
};
comprises the old struct ap_queue_status but extends it
to have this also accessible as an unsigned int required
for example for a simple print or trace of the whole value.
Note that this rework is fully backward compatible to the
existing code exploiting the struct ap_queue_status.
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com>
Reviewed-by: Anthony Krowiak <akrowiak@linux.ibm.com>
Reviewed-by: Holger Dengler <dengler@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
This commit is contained in:
committed by
Heiko Carstens
parent
507cff242a
commit
7f124d78d4
@@ -38,16 +38,30 @@ typedef unsigned int ap_qid_t;
|
||||
* The ap queue status word is returned by all three AP functions
|
||||
* (PQAP, NQAP and DQAP). There's a set of flags in the first
|
||||
* byte, followed by a 1 byte response code.
|
||||
*
|
||||
* For convenience the 'value' field is a 32 bit access of the
|
||||
* whole status and the 'status_bits' and 'rc' fields comprise
|
||||
* the leftmost 8 status bits and the response_code.
|
||||
*/
|
||||
struct ap_queue_status {
|
||||
unsigned int queue_empty : 1;
|
||||
unsigned int replies_waiting : 1;
|
||||
unsigned int queue_full : 1;
|
||||
unsigned int : 3;
|
||||
unsigned int async : 1;
|
||||
unsigned int irq_enabled : 1;
|
||||
unsigned int response_code : 8;
|
||||
unsigned int : 16;
|
||||
union {
|
||||
unsigned int value : 32;
|
||||
struct {
|
||||
unsigned int status_bits : 8;
|
||||
unsigned int rc : 8;
|
||||
unsigned int : 16;
|
||||
};
|
||||
struct {
|
||||
unsigned int queue_empty : 1;
|
||||
unsigned int replies_waiting : 1;
|
||||
unsigned int queue_full : 1;
|
||||
unsigned int : 3;
|
||||
unsigned int async : 1;
|
||||
unsigned int irq_enabled : 1;
|
||||
unsigned int response_code : 8;
|
||||
unsigned int : 16;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user