diff options
Diffstat (limited to 'sysspec.c')
-rw-r--r-- | sysspec.c | 254 |
1 files changed, 0 insertions, 254 deletions
diff --git a/sysspec.c b/sysspec.c deleted file mode 100644 index 9449ad5..0000000 --- a/sysspec.c +++ /dev/null @@ -1,254 +0,0 @@ - -/* -** sysspec.c -** System-specific routines. -** -** BYTEmark (tm) -** BYTE's Native Mode Benchmarks -** Rick Grehan, BYTE Magazine -** -** Creation: -** Revision: 3/95;10/95 -** -** DISCLAIMER -** The source, executable, and documentation files that comprise -** the BYTEmark benchmarks are made available on an "as is" basis. -** This means that we at BYTE Magazine have made every reasonable -** effort to verify that the there are no errors in the source and -** executable code. We cannot, however, guarantee that the programs -** are error-free. Consequently, McGraw-HIll and BYTE Magazine make -** no claims in regard to the fitness of the source code, executable -** code, and documentation of the BYTEmark. -** Furthermore, BYTE Magazine, McGraw-Hill, and all employees -** of McGraw-Hill cannot be held responsible for any damages resulting -** from the use of this code or the results obtained from using -** this code. -*/ - -/*********************************** -** SYSTEM-SPECIFIC ROUTINES ** -************************************ -** -** These are the routines that provide functions that are -** system-specific. If the benchmarks are to be ported -** to new hardware/new O.S., this is the first place to -** start. -*/ -#include "sysspec.h" - -/*********************************** -** MEMORY ARRAY HANDLING ROUTINES ** -***********************************/ -/**************************** -** InitMemArray -** Initialize the memory array. This simply amounts to -** setting mem_array_ents to zero, indicating that there -** isn't anything in the memory array. -*/ -void InitMemArray(void) -{ -mem_array_ents=0; -return; -} - -/*************************** -** AddMemArray -** Add a pair of items to the memory array. -** true_addr is the true address (mem_array[0][n]) -** adj_addr is the adjusted address (mem_array[0][n]) -** Returns 0 if ok -** -1 if not enough room -*/ -int AddMemArray(ulong true_addr, - ulong adj_addr) -{ -if(mem_array_ents>=MEM_ARRAY_SIZE) - return(-1); - -mem_array[0][mem_array_ents]=true_addr; -mem_array[1][mem_array_ents]=adj_addr; -mem_array_ents++; -return(0); -} - -/************************* -** RemoveMemArray -** Given an adjusted address value (mem_array[1][n]), locate -** the entry and remove it from the mem_array. -** Also returns the associated true address. -** Returns 0 if ok -** -1 if not found. -*/ -int RemoveMemArray(ulong adj_addr,ulong *true_addr) -{ -int i,j; - -/* Locate the item in the array. */ -for(i=0;i<mem_array_ents;i++) - if(mem_array[1][i]==adj_addr) - { /* Found it..bubble stuff down */ - *true_addr=mem_array[0][i]; - j=i; - while(j+1<mem_array_ents) - { mem_array[0][j]=mem_array[0][j+1]; - mem_array[1][j]=mem_array[1][j+1]; - j++; - } - mem_array_ents--; - return(0); /* Return if found */ - } - -/* If we made it here...something's wrong...show error */ -return(-1); -} - -/********************************** -** FILE HANDLING ROUTINES ** -**********************************/ - -/**************************** -** CreateFile -** This routine accepts a filename for an argument and -** creates that file in the current directory (unless the -** name contains a path that overrides the current directory). -** Note that the routine does not OPEN the file. -** If the file exists, it is truncated to length 0. -*/ -void CreateFile(char *filename, - int *errorcode) -{ -FILE *fhandle; /* File handle used internally */ - -fhandle=fopen(filename,"w"); - -if(fhandle==NULL) - *errorcode=ERROR_FILECREATE; -else - *errorcode=0; - -/* -** Since all we're doing here is creating the file, -** go ahead and close it. -*/ -fclose(fhandle); -} - -/**************************** -** bmOpenFile -** Opens the file given by fname, returning its handle. -** If an error occurs, returns its code in errorcode. -** The file is opened in read-write exclusive mode. -*/ -FILE *bmOpenFile(char *fname, /* File name */ - int *errorcode) /* Error code returned */ -{ - -FILE *fhandle; /* Returned file handle */ - -fhandle=fopen(fname,"w+"); - -if(fhandle==NULL) - *errorcode=ERROR_FILEOPEN; -else - *errorcode=0; - -return(fhandle); -} - - -/**************************** -** CloseFile -** Closes the file identified by fhandle. -** A more inocuous routine there never was. -*/ -void CloseFile(FILE *fhandle, /* File handle */ - int *errorcode) /* Returned error code */ -{ -fclose(fhandle); -*errorcode=0; -return; -} - -/**************************** -** readfile -** Read bytes from an opened file. This routine -** is a combination seek-and-read. -** Note that this routine expects the offset to be from -** the beginning of the file. -*/ -void readfile(FILE *fhandle, /* File handle */ - unsigned long offset, /* Offset into file */ - unsigned long nbytes, /* # of bytes to read */ - void *buffer, /* Buffer to read into */ - int *errorcode) /* Returned error code */ -{ - -long newoffset; /* New offset by fseek */ -size_t nelems; /* Expected return code from read */ -size_t readcode; /* Actual return code from read */ - -/* -** Presume success. -*/ -*errorcode=0; - -/* -** Seek to the proper offset. -*/ -newoffset=fseek(fhandle,(long)offset,SEEK_SET); -if(newoffset==-1L) -{ *errorcode=ERROR_FILESEEK; - return; -} - -/* -** Do the read. -*/ -nelems=(size_t)(nbytes & 0xFFFF); -readcode=fread(buffer,(size_t)1,nelems,fhandle); -if(readcode!=nelems) - *errorcode=ERROR_FILEREAD; - -} - -/**************************** -** writefile -** writes bytes to an opened file. This routine is -** a combination seek-and-write. -** Note that this routine expects the offset to be from -** the beinning of the file. -*/ -void writefile(FILE *fhandle, /* File handle */ - unsigned long offset, /* Offset into file */ - unsigned long nbytes, /* # of bytes to read */ - void *buffer, /* Buffer to read into */ - int *errorcode) /* Returned error code */ -{ - -long newoffset; /* New offset by lseek */ -size_t nelems; /* Expected return code from write */ -size_t writecode; /* Actual return code from write */ - -/* -** Presume success. -*/ -*errorcode=0; - -/* -** Seek to the proper offset. -*/ -newoffset=fseek(fhandle,(long)offset,SEEK_SET); -if(newoffset==-1L) -{ *errorcode=ERROR_FILESEEK; - return; -} - -/* -** Do the write. -*/ -nelems=(size_t)(nbytes & 0xFFFF); -writecode=fwrite(buffer,(size_t)1,nelems,fhandle); -if(writecode==nelems) - *errorcode=ERROR_FILEWRITE; - -} |