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 <afsconfig.h>
11 #include <afs/param.h>
16 #include <sys/types.h>
22 #include <sys/socket.h>
23 #include <netinet/in.h>
27 #include <afs/com_err.h>
28 #include <afs/bubasics.h>
30 #include "error_macros.h"
33 extern dlqlinkT statusHead; /* chain of status blocks */
34 extern struct Lock statusQueueLock; /* access control for status chain */
35 extern struct Lock cmdLineLock; /* lock on the cmdLine */
37 /* task status management
39 * These routines are common the backup coordinator and tape coordinator
45 Lock_Init(&statusQueueLock);
46 Lock_Init(&cmdLineLock);
53 ObtainWriteLock(&statusQueueLock);
58 ReleaseWriteLock(&statusQueueLock);
63 ObtainWriteLock(&cmdLineLock);
68 ReleaseWriteLock(&cmdLineLock);
73 clearStatus(taskId, flags)
79 extern statusP findStatus();
81 ObtainWriteLock(&statusQueueLock);
82 ptr = findStatus(taskId);
85 ReleaseWriteLock(&statusQueueLock);
90 ReleaseWriteLock(&statusQueueLock);
98 ptr = (statusP) malloc(sizeof(*ptr));
103 bzero(ptr, sizeof(*ptr));
105 /* link it onto the chain of status entries */
106 ObtainWriteLock(&statusQueueLock);
107 dlqLinkb(&statusHead, (dlqlinkP) ptr);
108 ptr->flags = STARTING;
109 ReleaseWriteLock(&statusQueueLock);
114 deleteStatusNode(ptr)
117 ObtainWriteLock(&statusQueueLock);
118 dlqUnlink( (dlqlinkP) ptr);
123 ReleaseWriteLock(&statusQueueLock);
133 dlqPtr = statusHead.dlq_next;
134 while ( dlqPtr != &statusHead )
136 if ( ((statusP) dlqPtr)->taskId == taskId )
138 ptr = (statusP) dlqPtr;
141 dlqPtr = dlqPtr->dlq_next;
147 setStatus(taskId, flags)
153 ObtainWriteLock(&statusQueueLock);
154 ptr = findStatus(taskId);
157 ReleaseWriteLock(&statusQueueLock);
162 ReleaseWriteLock(&statusQueueLock);