fis-gtm/sr_port_cm/gvcmz_clrlkreq.c

68 lines
1.7 KiB
C

/****************************************************************
* *
* Copyright 2001, 2004 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "cmidef.h"
#include "hashtab_mname.h" /* needed for cmmdef.h */
#include "cmmdef.h"
#include "gdsroot.h"
#include "gtm_facility.h"
#include "fileinfo.h"
#include "gdsbt.h"
#include "gdsfhead.h"
#include "mlkdef.h"
#include "gvcmz.h"
GBLREF struct NTD *ntd_root;
GBLREF bool remlkreq;
GBLDEF cm_lk_response *lk_granted, *lk_suspended;
void gvcmz_clrlkreq(void)
{
struct CLB *p;
unsigned char operation1, *ptr;
mlk_pvtblk *temp,*temp1;
cm_lk_response *q;
if (!ntd_root || !(p = (struct CLB *)RELQUE2PTR(ntd_root->cqh.fl))->usr || !remlkreq)
return;
operation1 = ZAREQUEST_SENT | LREQUEST_SENT | REQUEST_PENDING;
for ( ; p != (struct CLB *)ntd_root; p = (struct CLB *)RELQUE2PTR(p->cqe.fl))
{
if (((link_info*)(p->usr))->lck_info & REQUEST_PENDING)
{
((link_info*)(p->usr))->lck_info &= ~operation1;
temp = ((link_info*)(p->usr))->netlocks;
while (temp)
{
temp1 = temp->next;
free(temp);
temp = temp1;
}
((link_info*)(p->usr))->netlocks = 0;
p->ast = 0;
}
}
while (lk_suspended)
{
q = lk_suspended->next;
lk_suspended->next = NULL;
lk_suspended = q;
}
while (lk_granted)
{
q = lk_granted->next;
lk_granted->next = NULL;
lk_granted = q;
}
remlkreq = FALSE;
}