root/src/simh/sim_fio.h

/* [previous][next][first][last][top][bottom][index][help] */

INCLUDED FROM


   1 /*
   2  * sim_fio.h: simulator file I/O library headers
   3  *
   4  * vim: filetype=c:tabstop=4:ai:expandtab
   5  * SPDX-License-Identifier: MIT
   6  * scspell-id: c2fd7c81-f62a-11ec-b01e-80ee73e9b8e7
   7  *
   8  * ---------------------------------------------------------------------------
   9  *
  10  * Copyright (c) 1993-2008 Robert M. Supnik
  11  * Copyright (c) 2021-2023 The DPS8M Development Team
  12  *
  13  * Permission is hereby granted, free of charge, to any person obtaining a
  14  * copy of this software and associated documentation files (the "Software"),
  15  * to deal in the Software without restriction, including without limitation
  16  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  17  * and/or sell copies of the Software, and to permit persons to whom the
  18  * Software is furnished to do so, subject to the following conditions:
  19  *
  20  * The above copyright notice and this permission notice shall be included
  21  * in all copies or substantial portions of the Software.
  22  *
  23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  24  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  25  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  26  * ROBERT M SUPNIK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  27  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
  28  * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  29  * SOFTWARE.
  30  *
  31  * Except as contained in this notice, the name of Robert M. Supnik shall not
  32  * be used in advertising or otherwise to promote the sale, use or other
  33  * dealings in this Software without prior written authorization from
  34  * Robert M. Supnik.
  35  *
  36  * ---------------------------------------------------------------------------
  37  */
  38 
  39 #ifndef SIM_FIO_H_
  40 # define SIM_FIO_H_     0
  41 
  42 # define FLIP_SIZE        (1 << 16)               /* flip buf size */
  43 # define fxread(a,b,c,d)  sim_fread (a, b, c, d)
  44 # define fxwrite(a,b,c,d) sim_fwrite (a, b, c, d)
  45 
  46 int32 sim_finit (void);
  47 # if (   defined (__linux)              || \
  48          defined (__linux__)            || \
  49          defined (_AIX)                 || \
  50      ( ( defined (__sun)                || \
  51          defined (__sun__) )            && \
  52          defined (_LARGEFILE_SOURCE) )  || \
  53          defined (_WIN32)               || \
  54          defined (__APPLE__)            || \
  55          defined (__CYGWIN__)           || \
  56          defined (__FreeBSD__)          || \
  57          defined (__NetBSD__)           || \
  58          defined (__OpenBSD__) )        && \
  59         !defined (DONT_DO_LARGEFILE)
  60 typedef t_int64        t_offset;
  61 # else
  62 typedef int32        t_offset;
  63 #  if !defined (DONT_DO_LARGEFILE)
  64 #   define DONT_DO_LARGEFILE 1
  65 #  endif
  66 # endif
  67 FILE *sim_fopen (const char *file, const char *mode);
  68 int sim_fseek (FILE *st, t_addr offset, int whence);
  69 int sim_fseeko (FILE *st, t_offset offset, int whence);
  70 int sim_set_fsize (FILE *fptr, t_addr size);
  71 int sim_set_fifo_nonblock (FILE *fptr);
  72 size_t sim_fread (void *bptr, size_t size, size_t count, FILE *fptr);
  73 size_t sim_fwrite (const void *bptr, size_t size, size_t count, FILE *fptr);
  74 uint32 sim_fsize (FILE *fptr);
  75 uint32 sim_fsize_name (const char *fname);
  76 t_offset sim_ftell (FILE *st);
  77 t_offset sim_fsize_ex (FILE *fptr);
  78 t_offset sim_fsize_name_ex (const char *fname);
  79 void sim_buf_swap_data (void *bptr, size_t size, size_t count);
  80 void sim_buf_copy_swapped (void *dptr, const void *bptr, size_t size, size_t count);
  81 
  82 extern t_bool sim_taddr_64;         /* t_addr is > 32b and Large File Support available */
  83 extern t_bool sim_toffset_64;       /* Large File (>2GB) file I/O support */
  84 extern t_bool sim_end;              /* TRUE = little endian, FALSE = big endian */
  85 
  86 #endif

/* [previous][next][first][last][top][bottom][index][help] */