2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #include <afs/param.h>
12 #include <sys/types.h>
18 #include <sys/socket.h>
19 #include <netinet/in.h>
23 #include <afs/com_err.h>
24 #include <afs/bubasics.h>
26 #include "error_macros.h"
29 extern dlqlinkT statusHead; /* chain of status blocks */
30 extern struct Lock statusQueueLock; /* access control for status chain */
31 extern struct Lock cmdLineLock; /* lock on the cmdLine */
33 /* task status management
35 * These routines are common the backup coordinator and tape coordinator
41 Lock_Init(&statusQueueLock);
42 Lock_Init(&cmdLineLock);
49 ObtainWriteLock(&statusQueueLock);
54 ReleaseWriteLock(&statusQueueLock);
59 ObtainWriteLock(&cmdLineLock);
64 ReleaseWriteLock(&cmdLineLock);
69 clearStatus(taskId, flags)
75 extern statusP findStatus();
77 ObtainWriteLock(&statusQueueLock);
78 ptr = findStatus(taskId);
81 ReleaseWriteLock(&statusQueueLock);
86 ReleaseWriteLock(&statusQueueLock);
94 ptr = (statusP) malloc(sizeof(*ptr));
99 bzero(ptr, sizeof(*ptr));
101 /* link it onto the chain of status entries */
102 ObtainWriteLock(&statusQueueLock);
103 dlqLinkb(&statusHead, (dlqlinkP) ptr);
104 ptr->flags = STARTING;
105 ReleaseWriteLock(&statusQueueLock);
110 deleteStatusNode(ptr)
113 ObtainWriteLock(&statusQueueLock);
114 dlqUnlink( (dlqlinkP) ptr);
119 ReleaseWriteLock(&statusQueueLock);
129 dlqPtr = statusHead.dlq_next;
130 while ( dlqPtr != &statusHead )
132 if ( ((statusP) dlqPtr)->taskId == taskId )
134 ptr = (statusP) dlqPtr;
137 dlqPtr = dlqPtr->dlq_next;
143 setStatus(taskId, flags)
149 ObtainWriteLock(&statusQueueLock);
150 ptr = findStatus(taskId);
153 ReleaseWriteLock(&statusQueueLock);
158 ReleaseWriteLock(&statusQueueLock);