/* rosapintr.c - ROPM: invoke (interruptable) */
static char *rcsid
= "$Header: /f/osi/rosap/RCS/rosapintr.c,v 7.1 91/02/22 09:41:30 mrose Interim $";
* $Header: /f/osi/rosap/RCS/rosapintr.c,v 7.1 91/02/22 09:41:30 mrose Interim $
* Revision 7.1 91/02/22 09:41:30 mrose
* Revision 6.0 89/03/18 23:42:25 mrose
* Acquisition, use, and distribution of this module and related
* materials are subject to the restrictions of a license agreement.
* Consult the Preface in the User's Manual for the full terms of
/* \f RO-INVOKE.REQUEST (interruptable) */
int RoIntrRequest (sd
, op
, args
, invokeID
, linkedID
, priority
, roi
)
struct RoSAPindication
*roi
;
if (RoInvokeRequest (sd
, op
, ROS_ASYNC
, args
, invokeID
, linkedID
, priority
,
istat
= signal (SIGINT
, intrser
);
/* interrupt causes EINTR */
if (RoSelectMask (sd
, &rfds
, &nfds
, roi
) == OK
)
(void) xselect (nfds
, &rfds
, NULLFD
, NULLFD
, NOTOK
);
result
= rosaplose (roi
, ROS_INTERRUPTED
, NULLCP
, NULLCP
);
if ((result
= RoWaitRequest (sd
, OK
, roi
)) != NOTOK
|| roi
-> roi_preject
.rop_reason
!= ROS_TIMER
)
(void) signal (SIGINT
, istat
);
(void) signal (SIGINT
, intrser
);