+/*
+ * Software state per tape transport.
+ *
+ * 1. A tape drive is a unique-open device; we refuse opens when it is already.
+ * 2. We keep track of the current position on a block tape and seek
+ * before operations by forward/back spacing if necessary.
+ * 3. We remember if the last operation was a write on a tape, so if a tape
+ * is open read write and the last thing done is a write we can
+ * write a standard end of tape mark (two eofs).
+ * 4. We remember the status registers after the last command, using
+ * then internally and returning them to the SENSE ioctl.
+ * 5. We remember the last density the tape was used at. If it is
+ * not a BOT when we start using it and we are writing, we don't
+ * let the density be changed.
+ */
+struct te_softc {
+ char sc_openf; /* lock against multiple opens */
+ char sc_lastiow; /* last op was a write */
+ daddr_t sc_blkno; /* block number, for block device tape */
+ daddr_t sc_nxrec; /* position of end of tape, if known */
+ u_short sc_erreg; /* copy of last erreg */
+ u_short sc_dsreg; /* copy of last dsreg */
+ short sc_resid; /* copy of last bc */
+#ifdef unneeded
+ short sc_lastcmd; /* last command to handle direction changes */
+#endif
+ u_short sc_dens; /* prototype command with density info */
+ daddr_t sc_timo; /* time until timeout expires */
+ short sc_tact; /* timeout is active */
+} te_softc[NTM];
+#ifdef unneeded
+int tmgapsdcnt; /* DEBUG */
+#endif