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>
20 #include <sys/socket.h>
21 #include <netinet/in.h>
25 #include <afs/com_err.h>
26 #include <afs/bubasics.h>
28 #include "error_macros.h"
29 #include "bucoord_internal.h"
30 #include "bucoord_prototypes.h"
32 extern dlqlinkT statusHead; /* chain of status blocks */
33 extern struct Lock statusQueueLock; /* access control for status chain */
34 extern struct Lock cmdLineLock; /* lock on the cmdLine */
36 /* task status management
38 * These routines are common the backup coordinator and tape coordinator
45 Lock_Init(&statusQueueLock);
46 Lock_Init(&cmdLineLock);
54 ObtainWriteLock(&statusQueueLock);
60 ReleaseWriteLock(&statusQueueLock);
66 ObtainWriteLock(&cmdLineLock);
71 ReleaseWriteLock(&cmdLineLock);
77 clearStatus(afs_uint32 taskId, afs_uint32 flags)
81 ObtainWriteLock(&statusQueueLock);
82 ptr = findStatus(taskId);
84 ReleaseWriteLock(&statusQueueLock);
89 ReleaseWriteLock(&statusQueueLock);
93 createStatusNode(void)
97 ptr = (statusP) malloc(sizeof(*ptr));
101 memset(ptr, 0, sizeof(*ptr));
103 /* link it onto the chain of status entries */
104 ObtainWriteLock(&statusQueueLock);
105 dlqLinkb(&statusHead, (dlqlinkP) ptr);
106 ptr->flags = STARTING;
107 ReleaseWriteLock(&statusQueueLock);
113 deleteStatusNode(statusP ptr)
115 ObtainWriteLock(&statusQueueLock);
116 dlqUnlink((dlqlinkP) ptr);
121 ReleaseWriteLock(&statusQueueLock);
125 findStatus(afs_uint32 taskId)
130 dlqPtr = statusHead.dlq_next;
131 while (dlqPtr != &statusHead) {
132 if (((statusP) dlqPtr)->taskId == taskId) {
133 ptr = (statusP) dlqPtr;
136 dlqPtr = dlqPtr->dlq_next;
143 setStatus(afs_uint32 taskId, afs_uint32 flags)
147 ObtainWriteLock(&statusQueueLock);
148 ptr = findStatus(taskId);
150 ReleaseWriteLock(&statusQueueLock);
155 ReleaseWriteLock(&statusQueueLock);