From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/utils/ntbackup/inc/sx.h | 230 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 private/utils/ntbackup/inc/sx.h (limited to 'private/utils/ntbackup/inc/sx.h') diff --git a/private/utils/ntbackup/inc/sx.h b/private/utils/ntbackup/inc/sx.h new file mode 100644 index 000000000..ce7b92dae --- /dev/null +++ b/private/utils/ntbackup/inc/sx.h @@ -0,0 +1,230 @@ +/** +Copyright(c) Maynard Electronics, Inc. 1984-91 + + Name: sx.h + + Date Updated: + + Description: Contains the constants, typedefs, structures and entry points to functions + specific to the EXABYTE 8200SX - MaynStream 2200+ + + + $Log: Q:/LOGFILES/SX.H_V $ + + Rev 1.4 17 Nov 1992 22:30:52 DAVEV +unicode fixes + + Rev 1.3 11 Nov 1992 18:17:54 DAVEV +UNICODE changes + + Rev 1.2 17 Aug 1992 09:09:10 GREGG +Changes to deal with block sizeing scheme. + + Rev 1.1 23 Apr 1992 08:09:02 IAN +Changed prototype for SX_FindBlock() to match changes made in sx.c by NED. + + Rev 1.0 30 Sep 1991 11:03:28 HUNTER +Initial revision. + +**/ + +#ifndef _SX_H +#define _SX_H + +#include +#include +#include +//#include + +#include "tbe_defs.h" +#include "sxtf.h" +#include "channel.h" + + +/* + * CONSTANTS + */ + +#define SX_TMP_FILE ( 0 ) +#define SX_FILE ( 1 ) + +#define SX_FINDING_SET ( 0 ) +#define SX_CHECKING_FOR_SET ( 1 ) + +#define SX_TMP_FILE_NAME TEXT ("_PLUS_._") + +#define SX_WRITE_FLAG ( O_CREAT | O_RDWR | O_BINARY ) +#define SX_WRITE_PMODE ( S_IREAD | S_IWRITE ) + +#define SX_READ_FLAG ( O_RDONLY | O_BINARY ) +#define SX_READ_PMODE ( S_IREAD ) + +#define SX_TMP_FLAG ( O_TRUNC | SX_WRITE_FLAG ) +#define SX_TMP_PMODE ( SX_WRITE_PMODE ) + +#define SX_SAMPLE_RATE ( 0x2000 ) /* 1 MByte == 0x800 */ +#define SX_NEARBY ( 0x2000 ) /* 1 MByte == 0x800 */ +#define SX_DO_NOT_MOVE ( 0 ) +#define SX_INITIALIZER ( -1 ) +#define SX_FIRST_LBA ( 0L ) +#define SX_LAST_LBA ( 0xffffffff ) + +/* + * FUNCTION PROTOTYPES + */ + +VOID SX_Begin( /* called by: TFOPEN TF_OpenSet() */ + CHANNEL_PTR channel, + UINT16 tf_mode +) ; + +VOID SX_End( /* called by: TFCLOSE TF_CloseSet() */ + CHANNEL_PTR channel +) ; + +BOOLEAN SX_OpenFile( /* called by: POSATSET PositionAtSet() */ + CHANNEL_PTR channel, /* READ StartRead() */ + UINT32 tape_id, + UINT16 ts_num +) ; + +BOOLEAN SX_CloseFile( /* called by: POSATSET PositionAtSet() */ + CHANNEL_PTR channel /* READ StartRead() */ +) ; /* SX SX_OpenFile() */ + /* SX SX_End() */ + /* SX SX_EndSampling() */ + +INT16 SX_DeleteFile( /* called by: POSATSET PositionAtSet() */ + UINT32 tape_id, /* TFERASE TF_EraseChannel() */ + UINT16 ts_num +) ; + +BOOLEAN SX_WriteTmpFile( /* called by: READ AcquireReadBuffer() */ + CHANNEL_PTR channel /* READ CleanUpDriverQ() */ +) ; /* WRITE AcquireWriteBuffer() */ + /* WRITE FinishWrite() */ + /* SX SX_ShowBlock() */ + /* SX SX_StartSampling() */ + +BOOLEAN SX_SeekSetInFile( /* called by: POSATSET PositionAtSet() */ + CHANNEL_PTR channel, /* READ StartRead() */ + INT16 set, + INT16 mode +) ; + +INT16 SX_FindBlock( /* called by: READ StartRead() */ + CHANNEL_PTR channel, /* READ DoRead() */ + UINT32 lba, + TPOS_PTR ui_tpos, + INT16 tf_message +) ; + +INT16 SX_ShowBlock( /* called by: DRIVES ReadNextSet() */ + CHANNEL_PTR channel, /* SX SX_SamplingProcessing() */ + UINT16 mode /* SX SX_EndSampling() */ +) ; + +VOID SX_StartSampling( /* called by: READ StartRead() */ + CHANNEL_PTR channel /* WRITE WriteDBLK() */ +) ; /* WRITE EOM_Write() */ + +VOID SX_SamplingProcessing( /* called by: READ ReadRequest() */ + CHANNEL_PTR channel, /* WRITE WriteRequest() */ + UINT32 bytes +) ; + +VOID SX_EndSampling( /* called by: READ AcquireReadBuffer() */ + CHANNEL_PTR channel /* WRITE FinishWrite() */ +) ; /* WRITE EOMWrite() */ + +#ifdef SX_DEBUG +VOID SX_InfoDump( + CHANNEL_PTR channel, + CHAR_PTR message +) ; +#endif + +/* + * STATUS BITS - + */ + +#define SX_OPEN_FOR_READ ( 0x0001 ) /* open for read */ +#define SX_OPEN_FOR_WRITE ( 0x0002 ) /* open for write */ +#define SX_TMP_OPEN_FOR_WRITE ( 0x0004 ) /* tmp open for write */ +#define SX_OPEN ( 0x0007 ) /* open mask */ +#define SX_AT_BOF ( 0x0010 ) /* at beginning of file */ +#define SX_AT_EOF ( 0x0020 ) /* at end of file */ +#define SX_AT_SET ( 0x0040 ) /* at the first record in a set */ +#define SX_AT ( 0x0070 ) /* at mask */ +#define SX_VCB_PENDING ( 0x0100 ) /* could be at BOT, VCB etc */ +#define SX_VCB_CONFIRMED ( 0x0200 ) /* at VCB */ +#define SX_TYPE ( 0x0300 ) /* type mask */ +#define SX_FOUND_BLOCK ( 0x0400 ) /* found block */ +#define SX_SCAN_ACTIVE ( 0x1000 ) /* scanning tape for positioning info */ +#define SX_SCAN_INOPERATIVE ( 0x2000 ) /* not scanning tape for positioning info */ +#define SX_SCAN ( 0x3000 ) /* scanning tape mask */ +#define SX_LIST_TAPE_IN_PROGRESS ( 0x4000 ) /* doing a list tape operation */ +#define SX_ERROR ( 0x8000 ) /* something's wrong */ +#define SX_STATUS ( 0xffff ) /* status mask */ + +/* + * SHOW BLOCK MODES + */ + +#define SX_SHOW_QUEUED ( 0x0001 ) /* call to TpReceive will be made elsewhere */ +#define SX_SHOW_IMMEDIATE ( 0x0002 ) /* call to TpReceive should follow immediately */ +#define SX_SHOW_WRITE ( 0x0004 ) /* update the SX tmp file now */ +#define SX_SHOW_VCB_PENDING ( 0x0008 ) /* we think this could be a VCB */ + +/* + * STATUS MACROS + */ + +#define SX_SetStatus( c, x ) ( ( c )->sx_info.status |= ( x ) ) +#define SX_ClearStatus( c, x ) ( ( c )->sx_info.status &= ~( x ) ) +#define SX_IsStatusSet( c, x ) ( ( c )->sx_info.status & ( x ) ) + +#define SX_ClearAt( c ) SX_ClearStatus( ( c ), SX_AT ) +#define SX_SetAt( c, x ) SX_ClearAt( ( c ) ) ; SX_SetStatus( ( c ), x ) +#define SX_ClearType( c ) SX_ClearStatus( ( c ), SX_TYPE ) +#define SX_SetType( c, x ) SX_ClearType( ( c ) ) ; SX_SetStatus( ( c ), x ) + +/* + * FUNCTION MACROS + */ + +#define SX_Drive( c ) ( ( CurDrvAttribs( ( c ) ) & TDI_SHOW_BLK ) || ( CurDrvAttribs( ( c ) ) & TDI_FIND_BLK ) ) +#define SX_IsOK( c ) SX_Drive( ( c ) ) && !( SX_IsStatusSet( ( c ), SX_ERROR ) ) +#define SX_FileIsOpen( c ) ( SX_IsStatusSet( ( c ), SX_OPEN_FOR_READ | SX_OPEN_FOR_WRITE ) ) +#define SX_TmpFileIsOpen( c ) ( SX_IsStatusSet( ( c ), SX_TMP_OPEN_FOR_WRITE ) ) +#define SX_FileIsOK( c ) ( SX_FileIsOpen( ( c ) ) && SX_IsOK( ( c ) ) ) +#define SX_TmpFileIsOK( c ) ( SX_TmpFileIsOpen( ( c ) ) && SX_IsOK( ( c ) ) ) +#define SX_AbleToFindBlock( c ) SX_FileIsOK( ( c ) ) && SX_IsStatusSet( ( c ), SX_AT_SET ) +#define SX_IsNotAlreadyAtLBA( c, x ) ( ( ( x ) - SX_GetLBANow( ( c ) ) ) != 0 ) +#define SX_IsNearbyLBA( c, x ) ( SX_IsStatusSet( channel, SX_FOUND_BLOCK ) && ( ( ( x ) - SX_GetLBANow( ( c ) ) ) < SX_NEARBY ) ) + +#define SX_GetBackupSetNumber( c ) ( c )->sx_info.sx_record.set +#define SX_SetBackupSetNumber( c ) SX_GetBackupSetNumber( ( c ) ) = ( c )->bs_num +#define SX_GetRecord( c ) ( c )->sx_info.sx_record +#define SX_SetRecord( c, x ) SX_GetRecord( ( c ) ) = ( x ) +#define SX_GetPosition( c ) ( c )->sx_info.sx_record.sx_position +#define SX_FileHandle( c ) ( c )->sx_info.sx_hdl +#define SX_TmpFileHandle( c ) ( c )->sx_info.sx_tmp +#define SX_GetLBANow( c ) ( c )->sx_info.lba_now +#define SX_SetLBANow( c, x ) SX_GetLBANow( ( c ) ) = ( UINT32 )( x ) +#define SX_AdjustLBANow( c, x ) SX_GetLBANow( ( c ) ) += ( UINT32 )( ( x ) / c->lb_size ) +#define SX_GetLBA( c ) ( c )->sx_info.sx_record.lba +#define SX_SetLBA( c ) SX_GetLBA( ( c ) ) = SX_GetLBANow( ( c ) ) +#define SX_GetMisc( c ) ( c )->sx_info.misc +#define SX_SetMisc( c, x ) SX_GetMisc( ( c ) ) = ( UINT32 )( x ) +#define SX_SampleNeeded( c ) SX_TmpFileIsOK( ( c ) ) && ( SX_GetLBANow( ( c ) ) >= SX_GetMisc( c ) ) +#define SX_NextSample( c ) SX_GetMisc( c ) += SX_SAMPLE_RATE +#define SX_OffsetFile( c ) SX_SeekFile( ( c ), SX_GetMisc( c ), SEEK_SET, SX_FILE ) + +#if defined( MAYN_OS2 ) +#define SX_GetLock( c ) ( c )->sx_info.lock +#endif + +#endif + + -- cgit v1.2.3