{"id":377,"date":"2012-01-16T10:46:04","date_gmt":"2012-01-16T16:46:04","guid":{"rendered":"http:\/\/tommysprinkle.com\/txxos\/?p=377"},"modified":"2021-04-17T18:21:05","modified_gmt":"2021-04-17T23:21:05","slug":"io-request-block-iorb","status":"publish","type":"post","link":"https:\/\/tommysprinkle.com\/txxos\/?p=377","title":{"rendered":"I\/O Request Block &#8211; @IORB"},"content":{"rendered":"<p>The I\/O Request Block (IORB) defines an I\/O request. \u00a0The IORB may be for an active I\/O request being processed by the device, it may be a queued request waiting on a device or it may be a completed I\/O request.<\/p>\n<p>An IORB is scheduled to a device by the TXXSIO (Schedule I\/O) module. \u00a0The UCB has a pointer to a queue of IORB requests. \u00a0The top IORB on the UCB queue is the active request.<\/p>\n<pre>@IORB    DSECT ,                                                     \r\nIORBNEXT DS    A                  NEXT IORB ON CHAIN                 \r\nIORBUCB  DS    A                  UCB ADDRESS                        \r\nIORBIOB  DS    A                  IOB ADDRESS                        \r\nIORBCCW  DS    A                  CCW ADDRESS                        \r\nIORBTCB  DS    A                  TCB TO BEE DISPATCHED ON COMPLETION\r\nIORBDIE  DS    A                  DISABLED EXIT ROUTINE              \r\nIORBPCI  DS    A                  PCI EXIT ROUTINE                   \r\nIORBERR  DS    A                  ERROR EXIT ROUTINE                 \r\n*                                                                    \r\nIORBFLAG DS    X                  FLAGS                              \r\nIORBFSEN EQU   X'80'              RESCHEDULE FOR SENSE               \r\nIORBOFLN EQU   X'01'              SECHED I\/O TO OFFLINE DEVICE       \r\n*                                                                    \r\nIORBECBC DS    X                  I\/O COMPLETION CODE                \r\nIORBSEN0 DS    X                  SENSE BYTE ZERO                    \r\nIORBSEN1 DS    X                  SENSE BYTE ONE                     \r\nIORBCSW  DS    XL8                CSW                                \r\n*                                                                    \r\nIORBWORK DS    XL64               WORK AREA<\/pre>\n<p>The IORBNEXT field is used to maintain the IORB queue off the UCB. \u00a0They are queued oldest to newest. \u00a0IORBUCB points to the UCB the I\/O request is for. \u00a0The IORBIOB points to the IOB associated with the EXCP request that created the IORB. \u00a0The IORBCCW points to the CCW program.<\/p>\n<p>IORBTCB points to a TCB that will be added to the dispatch chain when the I\/O is complete. \u00a0The TCB is supplied by the caller of the TXXSIO routine. \u00a0The TCB PSW should point to a routine that will handle the completion of the I\/O request. \u00a0The TCBDIE field contains the address of a routine that will be called from the I\/O Interrupt routine.<\/p>\n<p>The status fields (IORBECBC, IORBSEN0, IORBSEN1, and IORBCSW) return the status of the completed I\/O request.<\/p>\n<p>The IORBWORK is a 64 byte work area to be used by TXXSIO.<\/p>\n<p>[Next &#8211; ]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The I\/O Request Block (IORB) defines an I\/O request. \u00a0The IORB may be for an active I\/O request being processed by the device, it may be a queued request waiting on a device or it may be a completed I\/O &hellip; <a href=\"https:\/\/tommysprinkle.com\/txxos\/?p=377\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"template-page-builder-no-sidebar.php","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-377","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1CPQT-65","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/377","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=377"}],"version-history":[{"count":3,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/377\/revisions"}],"predecessor-version":[{"id":379,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=\/wp\/v2\/posts\/377\/revisions\/379"}],"wp:attachment":[{"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=377"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=377"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tommysprinkle.com\/txxos\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=377"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}