提交 e443ef9f 编写于 作者: H Halil Pasic 提交者: Cornelia Huck

s390x/css: IO instr handler ending control

CSS code needs to tell the IO instruction handlers located in ioinst.c
how the emulated instruction should be ended. Currently this is done by
returning generic (POSIX) error codes, and mapping them to outcomes like
condition codes. This makes bugs easy to create and hard to recognize.

As a preparation for moving away from (mis)using generic error codes for
flow control let us introduce a type which tells the instruction
handler function how to end the instruction, in a more straight-forward
and less ambiguous way.
Signed-off-by: NHalil Pasic <pasic@linux.vnet.ibm.com>
Message-Id: <20171017140453.51099-3-pasic@linux.vnet.ibm.com>
Reviewed-by: NThomas Huth <thuth@redhat.com>
Reviewed-by: NDong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
[CH: cosmetic changes]
Signed-off-by: NCornelia Huck <cohuck@redhat.com>
上级 32dc6aa0
......@@ -99,6 +99,22 @@ typedef struct CcwDataStream {
hwaddr cda;
} CcwDataStream;
/*
* IO instructions conclude according to this. Currently we have only
* cc codes. Valid values are 0, 1, 2, 3 and the generic semantic for
* IO instructions is described briefly. For more details consult the PoP.
*/
typedef enum IOInstEnding {
/* produced expected result */
IOINST_CC_EXPECTED = 0,
/* status conditions were present or produced alternate result */
IOINST_CC_STATUS_PRESENT = 1,
/* inst. ineffective because busy with previously initiated function */
IOINST_CC_BUSY = 2,
/* inst. ineffective because not operational */
IOINST_CC_NOT_OPERATIONAL = 3
} IOInstEnding;
typedef struct SubchDev SubchDev;
struct SubchDev {
/* channel-subsystem related things: */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册