#include "butc_internal.h"
#include "error_macros.h"
#include "butc_xbsa.h"
+#include "afs/audit.h"
/* tape coordinator - task status management */
extern afs_int32 xbsaType;
struct Lock statusQueueLock;
struct Lock cmdLineLock;
+static afs_int32 SGetStatus(struct rx_call *call, afs_uint32 taskId,
+ struct tciStatusS *statusPtr);
+static afs_int32 SEndStatus(struct rx_call *call, afs_uint32 taskId);
+static afs_int32 SRequestAbort(struct rx_call *call, afs_uint32 taskId);
+static afs_int32 SScanStatus(struct rx_call *call, afs_uint32 *taskId,
+ struct tciStatusS *statusPtr, afs_uint32 *flags);
+
/* STC_GetStatus
* get the status of a task
* entry:
afs_int32
STC_GetStatus(struct rx_call *call, afs_uint32 taskId,
- struct tciStatusS *statusPtr)
+ struct tciStatusS *status)
+{
+ afs_int32 code;
+
+ code = SGetStatus(call, taskId, status);
+ osi_auditU(call, TC_GetStatusEvent, code,
+ AUD_INT, taskId, AUD_TSTT, status, AUD_END);
+ return code;
+}
+
+static afs_int32
+SGetStatus(struct rx_call *call, afs_uint32 taskId,
+ struct tciStatusS *statusPtr)
{
statusP ptr;
int retval = 0;
afs_int32
STC_EndStatus(struct rx_call *call, afs_uint32 taskId)
{
+ afs_int32 code;
+
+ code = SEndStatus(call, taskId);
+ osi_auditU(call, TC_EndStatusEvent, code, AUD_INT, taskId, AUD_END);
+ return code;
+}
+
+static afs_int32
+SEndStatus(struct rx_call *call, afs_uint32 taskId)
+{
statusP ptr;
int retval = 0;
afs_int32
STC_RequestAbort(struct rx_call *call, afs_uint32 taskId)
{
+ afs_int32 code;
+
+ code = SRequestAbort(call, taskId);
+ osi_auditU(call, TC_RequestAbortEvent, code, AUD_INT, taskId, AUD_END);
+ return code;
+}
+
+static afs_int32
+SRequestAbort(struct rx_call *call, afs_uint32 taskId)
+{
statusP ptr;
int retval = 0;
afs_int32
STC_ScanStatus(struct rx_call *call, afs_uint32 *taskId,
- struct tciStatusS *statusPtr, afs_uint32 *flags)
+ struct tciStatusS *status, afs_uint32 *flags)
+{
+ afs_int32 code;
+
+ code = SScanStatus(call, taskId, status, flags);
+ osi_auditU(call, TC_ScanStatusEvent, code,
+ AUD_INT, *taskId, AUD_TSTT, status, AUD_INT, *flags, AUD_END);
+ return code;
+}
+
+static afs_int32
+SScanStatus(struct rx_call *call, afs_uint32 *taskId,
+ struct tciStatusS *statusPtr, afs_uint32 *flags)
{
statusP ptr = 0;
dlqlinkP dlqPtr;