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 /vxi11_server.c | |
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
Diffstat (limited to 'vxi11_server.c')
-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 { |