Fixed vxWorks exit handler used wrong task variable

This commit is contained in:
Jeff Hill
1994-11-17 19:09:55 +00:00
parent 9d3ce3aedd
commit 589ccacc3d
3 changed files with 10 additions and 9 deletions

View File

@@ -772,7 +772,7 @@ void ca_process_exit(struct ca_static *ca_temp)
chix = (chid) ellFirst(&piiu->chidlist);
while (chix) {
chixNext = (chid) ellNext (&chix->node);
clearChannelResources (chix->cid);
clearChannelResources (ca_temp, chix->cid);
chix = chixNext;
}
@@ -2454,7 +2454,7 @@ int APIENTRY ca_clear_channel (chid chix)
*/
if(old_chan_state != cs_conn){
UNLOCK;
clearChannelResources (chix->cid);
clearChannelResources (ca_static, chix->cid);
return ECA_NORMAL;
}
@@ -2487,7 +2487,7 @@ int APIENTRY ca_clear_channel (chid chix)
/*
* clearChannelResources()
*/
void clearChannelResources(unsigned id)
void clearChannelResources(struct ca_static *pCAC, unsigned id)
{
struct ioc_in_use *piiu;
chid chix;
@@ -2497,7 +2497,7 @@ void clearChannelResources(unsigned id)
LOCK;
chix = bucketLookupItemUnsignedId(pSlowBucket, &id);
chix = bucketLookupItemUnsignedId(pCAC->ca_pSlowBucket, &id);
assert ( chix!=NULL );
piiu = chix->piiu;
@@ -2506,13 +2506,13 @@ void clearChannelResources(unsigned id)
* remove any orphaned get callbacks for this
* channel
*/
for (monix = (evid) ellFirst (&pend_read_list.node);
for (monix = (evid) ellFirst (&pCAC->ca_pend_read_list.node);
monix;
monix = next) {
next = (evid) ellNext (&monix->node);
if (monix->chan == chix) {
ellDelete (
&pend_read_list,
&pCAC->ca_pend_read_list,
&monix->node);
caIOBlockFree (monix);
}
@@ -2525,7 +2525,8 @@ void clearChannelResources(unsigned id)
caIOBlockFree(monix);
}
ellDelete(&piiu->chidlist, &chix->node);
status = bucketRemoveItemUnsignedId(pSlowBucket, &chix->cid);
status = bucketRemoveItemUnsignedId(
pCAC->ca_pSlowBucket, &chix->cid);
assert (status == BUCKET_SUCCESS);
free(chix);
if (!piiu->chidlist.count){

View File

@@ -569,7 +569,7 @@ ca_real cac_time_diff(ca_time *pTVA, ca_time *pTVB);
/* returns A + B in integer secs & integer usec */
ca_time cac_time_sum(ca_time *pTVA, ca_time *pTVB);
void caIOBlockFree(evid pIOBlock);
void clearChannelResources(unsigned id);
void clearChannelResources(struct ca_static *pCAC, unsigned id);
/*
* !!KLUDGE!!

View File

@@ -526,7 +526,7 @@ struct in_addr *pnet_addr
break;
case IOC_CLEAR_CHANNEL:
clearChannelResources (piiu->curMsg.m_available);
clearChannelResources (ca_static, piiu->curMsg.m_available);
break;
case IOC_ERROR: