Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

299 lines
13 KiB

/*******************************************************************************
Copyright(c) Maynard, an Archive Company. 1991
Name: stats.h
Description:
$Log: G:/UI/LOGFILES/STATS.H_V $
Rev 1.7 09 Jun 1993 15:06:38 MIKEP
enable c++
Rev 1.6 20 Oct 1992 14:20:26 MIKEP
add support for getcurrentoperation
Rev 1.5 04 Oct 1992 19:49:34 DAVEV
UNICODE AWK PASS
Rev 1.4 29 Jun 1992 10:38:42 MIKEP
add hours to time display
Rev 1.3 21 May 1992 19:25:26 MIKEP
fixes
Rev 1.2 11 May 1992 10:05:08 STEVEN
added 64 bit support
Rev 1.1 18 Dec 1991 11:57:48 DAVEV
16/32 bit port - 2nd pass
Rev 1.0 20 Nov 1991 19:42:18 SYSTEM
Initial revision.
*******************************************************************************/
#ifndef _stats_h_
#define _stats_h_
#include "datetime.h"
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
typedef struct BS_STATS *BS_STATS_PTR;
typedef struct BS_STATS {
/* These stats are for a single backup set */
/* Example: The operation is backing up several volumes, */
/* BS_STATS apply to each volume one at a time */
/* Overview stats */
UINT64 bs_bytes_to_be_processed ;
UINT32 bs_files_to_be_processed ;
UINT32 bs_dirs_to_be_processed ;
/* Loops stats ( does not include tape format overhead such as padding etc. ) */
UINT64 bs_bytes_processed ;
UINT32 bs_files_processed ;
UINT32 bs_dirs_processed ;
/* Skipped stats */
UINT64 bs_bytes_skipped ;
UINT32 bs_files_skipped ;
UINT32 bs_dirs_skipped ;
/* Bad stats */
UINT64 bs_bytes_bad ;
UINT32 bs_files_bad ;
UINT32 bs_dirs_bad ;
/* AFP stats */
UINT32 bs_afp_files_processed ;
/* In-use stats */
UINT32 bs_in_use_files_processed ;
/* Deleted stats */
UINT64 bs_bytes_deleted ;
UINT32 bs_files_deleted ;
UINT32 bs_dirs_deleted ;
/* Time stats */
UINT32 bs_start_time ;
UINT32 bs_end_time ;
UINT32 bs_start_idle ;
UINT32 bs_total_idle ;
UINT16 bs_idle_level ;
/* Verify statistics */
UINT32 num_security_differences ;
UINT32 files_different ;
UINT32 files_not_found ;
UINT32 directories_different ;
UINT32 directories_not_found ;
/* Tape Format Layer Statistics */
UINT32 soft_errs ;
UINT64 raw_bytes ;
UINT32 raw_fdbs ;
UINT32 raw_ddbs ;
UINT32 raw_idbs ;
} BS_STATS;
typedef struct STATS *STATS_PTR;
typedef struct STATS {
/* backup set stats */
BS_STATS bs_stats ;
/* U64 space */
UINT64 U64space;
BOOLEAN U64stat;
UINT64 current_file_size; // num bytes in file
UINT64 current_file_done; // num bytes of file processed
/* Time stats */
UINT32 op_start_time ;
UINT32 op_end_time ;
UINT32 op_start_idle ;
UINT32 op_total_idle ;
UINT16 op_idle_level ;
} STATS ;
/*
Prototypes
*/
VOID ST_StartOperation( STATS_PTR ) ;
VOID ST_EndOperation( STATS_PTR ) ;
VOID ST_StartOperationIdle( STATS_PTR ) ;
VOID ST_EndOperationIdle( STATS_PTR ) ;
VOID ST_StartBackupSet( STATS_PTR ) ;
VOID ST_EndBackupSet( STATS_PTR ) ;
VOID ST_StartBackupSetIdle( STATS_PTR ) ;
VOID ST_EndBackupSetIdle( STATS_PTR ) ;
/*
Set Macros
*/
#define ST_SetBSStartTime( s, v ) ( ( VOID )( ( s )->bs_stats.bs_start_time = v ) )
#define ST_SetBSEndTime( s, v ) ( ( VOID )( ( s )->bs_stats.bs_end_time = v ) )
#define ST_SetBSStartIdle( s, v ) ( ( VOID )( ( s )->bs_stats.bs_start_idle = v ) )
#define ST_SetOPStartTime( s, v ) ( ( VOID )( ( s )->op_start_time = v ) )
#define ST_SetOPEndTime( s, v ) ( ( VOID )( ( s )->op_end_time = v ) )
#define ST_SetOPStartIdle( s, v ) ( ( VOID )( ( s )->op_start_idle = v ) )
#define ST_SetCFSize( s, v ) ( ( s )->current_file_size = ( v ) )
#define ST_SetCFDone( s, v ) ( ( s )->current_file_done = ( v ) )
/*
Get Macros
*/
#define ST_GetBSStartIdle( s ) ( ( s )->bs_stats.bs_start_idle )
#define ST_GetOPStartIdle( s ) ( ( s )->op_start_idle )
#define ST_BSIdleLevel( s ) ( ( s )->bs_stats.bs_idle_level )
#define ST_OPIdleLevel( s ) ( ( s )->op_idle_level )
#define ST_GetBSBytesToBeProcessed( s ) ( ( s )->bs_stats.bs_bytes_to_be_processed )
#define ST_GetBSFilesToBeProcessed( s ) ( ( s )->bs_stats.bs_files_to_be_processed )
#define ST_GetBSDirsToBeProcessed( s ) ( ( s )->bs_stats.bs_dirs_to_be_processed )
#define ST_GetBSBytesProcessed( s ) ( ( s )->bs_stats.bs_bytes_processed )
#define ST_GetBSFilesProcessed( s ) ( ( s )->bs_stats.bs_files_processed )
#define ST_GetBSDirsProcessed( s ) ( ( s )->bs_stats.bs_dirs_processed )
#define ST_GetBSBytesSkipped( s ) ( ( s )->bs_stats.bs_bytes_skipped )
#define ST_GetBSFilesSkipped( s ) ( ( s )->bs_stats.bs_files_skipped )
#define ST_GetBSDirsSkipped( s ) ( ( s )->bs_stats.bs_dirs_skipped )
#define ST_GetBSBytesBad( s ) ( ( s )->bs_stats.bs_bytes_bad )
#define ST_GetBSFilesBad( s ) ( ( s )->bs_stats.bs_files_bad )
#define ST_GetBSDirsBad( s ) ( ( s )->bs_stats.bs_dirs_bad )
#define ST_GetBSAFPFilesProcessed( s ) ( ( s )->bs_stats.bs_afp_files_processed )
#define ST_GetBSInUseFilesProcessed( s ) ( ( s )->bs_stats.bs_in_use_files_processed )
#define ST_GetBSBytesDeleted( s ) ( ( s )->bs_stats.bs_bytes_deleted )
#define ST_GetBSFilesDeleted( s ) ( ( s )->bs_stats.bs_files_deleted )
#define ST_GetBSDirsDeleted( s ) ( ( s )->bs_stats.bs_dirs_deleted )
#define ST_GetBSStartTime( s ) ( ( s )->bs_stats.bs_start_time )
#define ST_GetBSEndTime( s ) ( ( s )->bs_stats.bs_end_time )
#define ST_GetBSElapsedHours( s ) ( ( INT16 )( ( ( ( s )->bs_stats.bs_end_time ) - ( ( s )->bs_stats.bs_start_time + \
( s )->bs_stats.bs_total_idle ) ) / 3600 ) )
#define ST_GetBSElapsedMinutes( s ) ( ( INT16 )( ( ( ( ( s )->bs_stats.bs_end_time ) - ( ( s )->bs_stats.bs_start_time + \
( s )->bs_stats.bs_total_idle ) ) % 3600 ) / 60 ) )
#define ST_GetBSElapsedSeconds( s ) ( ( INT16 )( ( ( ( s )->bs_stats.bs_end_time ) - ( ( s )->bs_stats.bs_start_time + \
( s )->bs_stats.bs_total_idle ) ) % 60 ) )
#define ST_GetNumSecurityDifferences( s ) ( ( s )->bs_stats.num_security_differences )
#define ST_GetFilesDifferent( s ) ( ( s )->bs_stats.files_different )
#define ST_GetFilesNotFound( s ) ( ( s )->bs_stats.files_not_found )
#define ST_GetDirectoriesDifferent( s ) ( ( s )->bs_stats.directories_different )
#define ST_GetDirectoriesNotFound( s ) ( ( s )->bs_stats.directories_not_found )
#define ST_GetFilesVerified( s ) ( ( ( s )->bs_stats.bs_files_processed ) - \
( ( ( s )->bs_stats.files_different ) + ( ( s )->bs_stats.files_not_found ) ) )
#define ST_GetBSRate( s ) U64_Div( ( ( s )->bs_stats.bs_bytes_processed ), \
U64_Init(( ( max( 1L,( ( s )->bs_stats.bs_end_time ) - ( ( s )->bs_stats.bs_start_time + ( s )->bs_stats.bs_total_idle ) ) ) ),0), \
&((s)->U64space), &((s)->U64stat) )
#define ST_GetCFSize( s ) ( ( s )->current_file_size )
#define ST_GetCFDone( s ) ( ( s )->current_file_done )
#define ST_GetSoftErrs( s ) ( ( s )->bs_stats.soft_errs )
#define ST_GetRawBytes( s ) ( ( s )->bs_stats.raw_bytes )
#define ST_GetRawFDBs( s ) ( ( s )->bs_stats.raw_fdbs )
#define ST_GetRawDDBs( s ) ( ( s )->bs_stats.raw_ddbs )
#define ST_GetRawIDBs( s ) ( ( s )->bs_stats.raw_idbs )
#define ST_GetOPStartTime( s ) ( ( s )->op_start_time )
#define ST_GetOPEndTime( s ) ( ( s )->op_end_time )
#define ST_GetOPElapsedMinutes( s ) ( ( INT16 )( ( ( ( s )->op_end_time ) - ( ( s )->op_start_time + \
( s )->op_total_idle ) ) / 60 ) )
#define ST_GetOPElapsedSeconds( s ) ( ( INT16 )( ( ( ( s )->op_end_time ) - ( ( s )->op_start_time + \
( s )->op_total_idle ) ) % 60 ) )
/*
Add Macros
*/
#define ST_AddBSIdle( s, v ) ( ( VOID )( ( s )->bs_stats.bs_total_idle += v ) )
#define ST_AddOPIdle( s, v ) ( ( VOID )( ( s )->op_total_idle += v ) )
#define ST_AddBSBytesToBeProcessed( s, v ) ( ( s )->bs_stats.bs_bytes_to_be_processed = \
U64_Add( ( ( s )->bs_stats.bs_bytes_to_be_processed, \
( v ), &((s)->U64stat ) ) )
#define ST_AddBSFilesToBeProcessed( s, v ) ( ( VOID )( ( s )->bs_stats.bs_files_to_be_processed += v ) )
#define ST_AddBSDirsToBeProcessed( s, v ) ( ( VOID )( ( s )->bs_stats.bs_dirs_to_be_processed += v ) )
#define ST_AddBSBytesProcessed( s, v ) ( ( s )->bs_stats.bs_bytes_processed = \
U64_Add( ( s )->bs_stats.bs_bytes_processed, \
( v ), &((s)->U64stat) ) )
#define ST_AddBSFilesProcessed( s, v ) ( ( VOID )( ( s )->bs_stats.bs_files_processed += v ) )
#define ST_AddBSDirsProcessed( s, v ) ( ( VOID )( ( s )->bs_stats.bs_dirs_processed += v ) )
#define ST_AddBSBytesSkipped( s, v ) ( ( s )->bs_stats.bs_bytes_skipped = \
U64_Add( ( s )->bs_stats.bs_bytes_skipped, \
( v ), &((s)->U64stat )) )
#define ST_AddBSFilesSkipped( s, v ) ( ( VOID )( ( s )->bs_stats.bs_files_skipped += v ) )
#define ST_AddBSDirsSkipped( s, v ) ( ( VOID )( ( s )->bs_stats.bs_dirs_skipped += v ) )
#define ST_AddBSBytesBad( s, v ) ( ( s )->bs_stats.bs_bytes_bad = \
U64_Add( ( s )->bs_stats.bs_bytes_bad, \
( v ), &((s)->U64stat ) ) )
#define ST_AddBSFilesBad( s, v ) ( ( VOID )( ( s )->bs_stats.bs_files_bad += v ) )
#define ST_AddBSDirsBad( s, v ) ( ( VOID )( ( s )->bs_stats.bs_dirs_bad += v ) )
#define ST_AddBSAFPFilesProcessed( s, v ) ( ( VOID )( ( s )->bs_stats.bs_afp_files_processed += v ) )
#define ST_AddBSInUseFilesProcessed( s, v ) ( ( VOID )( ( s )->bs_stats.bs_in_use_files_processed += v ) )
#define ST_AddBSBytesDeleted( s, v ) ( ( s )->bs_stats.bs_bytes_deleted = \
U64_Add( ( s )->bs_stats.bs_bytes_deleted, \
( v ), &((s)->U64stat ) ) )
#define ST_AddBSFilesDeleted( s, v ) ( ( VOID )( ( s )->bs_stats.bs_files_deleted += v ) )
#define ST_AddBSDirsDeleted( s, v ) ( ( VOID )( ( s )->bs_stats.bs_dirs_deleted += v ) )
#define ST_AddBSSecondsWasted( s, v ) ( ( VOID )( ( s )->bs_stats.bs_seconds_wasted += v ) )
#define ST_AddBSStartSecondsWasted( s, v ) ( ( VOID )( ( s )->bs_stats.bs_start_seconds_wasted += v ) )
#define ST_AddNumSecurityDifferences( s, v ) ( ( VOID )( ( s )->bs_stats.num_security_differences += v ) )
#define ST_AddFilesDifferent( s, v ) ( ( VOID )( ( s )->bs_stats.files_different += v ) )
#define ST_AddFilesNotFound( s, v ) ( ( VOID )( ( s )->bs_stats.files_not_found += v ) )
#define ST_AddDirectoriesDifferent( s, v ) ( ( VOID )( ( s )->bs_stats.directories_different += v ) )
#define ST_AddDirectoriesNotFound( s, v ) ( ( VOID )( ( s )->bs_stats.directories_not_found += v ) )
#define ST_AddSoftErrs( s, v ) ( ( VOID )( ( s )->bs_stats.soft_errs += v ) )
#define ST_AddRawBytes( s, v ) ( ( s )->bs_stats.bs_raw_bytes = \
U64_Add( ( s )->bs_stats.bs_raw_bytes, \
( v ), &((s)->U64stat ) ) )
#define ST_AddRawFDBs( s, v ) ( ( VOID )( ( s )->bs_stats.raw_fdbs += v ) )
#define ST_AddRawDDBs( s, v ) ( ( VOID )( ( s )->bs_stats.raw_ddbs += v ) )
#define ST_AddRawIDBs( s, v ) ( ( VOID )( ( s )->bs_stats.raw_idbs += v ) )
#define ST_AddCFDone( s, v ) ( ( s )->current_file_done = \
U64_Add( ( s )->current_file_done, \
( v ), &((s)->U64stat ) ) )
#define ST_PushBSIdleLevel( s ) ( ( ( s )->bs_stats.bs_idle_level ) ++ )
#define ST_PopBSIdleLevel( s ) ( ( ( s )->bs_stats.bs_idle_level ) -- )
#define ST_PushOPIdleLevel( s ) ( ( ( s )->op_idle_level ) ++ )
#define ST_PopOPIdleLevel( s ) ( ( ( s )->op_idle_level ) -- )
#endif