diff options
author | daniel <danieruru@gmail.com> | 2013-01-30 12:49:10 +0900 |
---|---|---|
committer | daniel <danieruru@gmail.com> | 2013-01-30 12:49:10 +0900 |
commit | af2ad8e37d852f66d499125e75fca92762463678 (patch) | |
tree | 0ce82d9198d0786518c9d0f94b585e5272903208 | |
parent | e57b4a0ad419ce9af8017120ab60b54304fa0835 (diff) |
Fire an interrupt when a new interrupt channel is requested and one exists,
this is to check if the existing connection is dead and get the RPC stuff
to set the error
-rw-r--r-- | vxi11_server.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/vxi11_server.c b/vxi11_server.c index 34e2919..144141e 100644 --- a/vxi11_server.c +++ b/vxi11_server.c @@ -487,6 +487,7 @@ device_enable_srq_1_svc(Device_EnableSrqParms *argp, struct svc_req *rqstp) { printf("Interrupt handle set to %s\n", inthandler); #endif } + vxi11_fireinterrupt(); } #ifdef DEBUG else { @@ -552,6 +553,7 @@ create_intr_chan_1_svc(Device_RemoteFunc *argp, struct svc_req *rqstp) { // we need to clean it up to avoid a deadlock static struct rpc_err err; if (intclient != NULL ) { + vxi11_fireinterrupt(); clnt_geterr(intclient, &err); if (err.re_errno != 0) { #ifdef DEBUG @@ -565,6 +567,9 @@ create_intr_chan_1_svc(Device_RemoteFunc *argp, struct svc_req *rqstp) { if (argp->progFamily != DEVICE_TCP || argp->progNum != DEVICE_INTR || argp->progVers != DEVICE_INTR_VERSION) result.error = ERR_OPERATIONNOTSUPPORTED; else if (intclient != NULL ) { +#ifdef DEBUG + printf("Not creating interrupt channel, already exists\n"); +#endif result.error = ERR_CHANNELALREADYESTABLISHED; } else { |