*
*/
/*
- Copyright (C) 2000, 2001, 2002 Kern Sibbald and John Walker
+ Copyright (C) 2000-2003 Kern Sibbald and John Walker
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
/* Arguments to open_dev() */
#define READ_WRITE 0
#define READ_ONLY 1
+#define OPEN_READ_WRITE 0
+#define OPEN_READ_ONLY 1
+#define OPEN_WRITE_ONLY 2
/* Generic status bits returned from status_dev() */
#define MT_TAPE (1<<0) /* is tape device */
#define MT_IM_REP_EN (1<<9) /* immediate report enabled */
+/* Test capabilities */
+#define dev_cap(dev, cap) ((dev)->capabilities & (cap))
+
/* Bits for device capabilities */
#define CAP_EOF 0x0001 /* has MTWEOF */
#define CAP_BSR 0x0002 /* has MTBSR */
#define CAP_OFFLINEUNMOUNT 0x2000 /* Offline before unmount */
#define CAP_STREAM 0x4000 /* Stream device */
+/* Test state */
+#define dev_state(dev, state) ((dev)->state & (state))
/* Device state bits */
#define ST_OPENED 0x0001 /* set when device opened */
/* Device structure definition */
typedef struct s_device {
struct s_device *next; /* pointer to next open device */
+ struct s_device *prev; /* pointer to prev open device */
void *attached_jcrs; /* attached JCR list */
-#ifdef NEW_LOCK
- brwlock_t lock; /* new device locking mechanism */
-#endif
pthread_mutex_t mutex; /* access control */
pthread_cond_t wait; /* thread wait variable */
pthread_cond_t wait_next_vol; /* wait for tape to be mounted */
uint64_t volume_capacity; /* advisory capacity */
uint32_t max_rewind_wait; /* max secs to allow for rewind */
uint32_t max_open_wait; /* max secs to allow for open */
+ uint32_t max_open_vols; /* max simultaneous open volumes */
void *device; /* pointer to Device Resource */
+ btimer_id tid; /* timer id */
VOLUME_CAT_INFO VolCatInfo; /* Volume Catalog Information */
VOLUME_LABEL VolHdr; /* Actual volume label */