diff options
Diffstat (limited to 'src/lib/simics_stdio.h')
-rwxr-xr-x | src/lib/simics_stdio.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/src/lib/simics_stdio.h b/src/lib/simics_stdio.h new file mode 100755 index 0000000..abbfe26 --- /dev/null +++ b/src/lib/simics_stdio.h @@ -0,0 +1,69 @@ +#ifndef __SIMICS_STDIO_H__ +#define __SIMICS_STDIO_H__ + +// $Id: simics_stdio.h,v 1.1.1.1 2013/12/11 20:49:20 bcbrock Exp $ +// $Source: /afs/awd/projects/eclipz/KnowledgeBase/.cvsroot/eclipz/chips/p8/working/procedures/lib/simics_stdio.h,v $ +//----------------------------------------------------------------------------- +// *! (C) Copyright International Business Machines Corp. 2013 +// *! All Rights Reserved -- Property of IBM +// *! *** IBM Confidential *** +//----------------------------------------------------------------------------- + +/// \file simics_stdio.h +/// \brief SSX I/O implementations for Simics stdio streams + +#include "ssx_io.h" +#include "simics_stdio_addresses.h" +#include "string.h" + +/// A FILE structure for a Simics fake stdio stream + +typedef struct { + + /// The base class + FILE stream; + + /// The MMIO address of the Simics read port for the stream + SsxAddress read_address; + + /// The MMIO address of the Simics write port for the stream + SsxAddress write_address; + + /// The MMIO address of the Simics device for flushing the stream; + SsxAddress flush_address; + +} SimicsStdio; + +extern SimicsStdio simics_stdin; +extern SimicsStdio simics_stdout; +extern SimicsStdio simics_stderr; + +int +simics_stdio_create(SimicsStdio* stream, + SsxAddress read_address, + SsxAddress write_address, + SsxAddress flush_address); + +int +simics_stdin_create(SimicsStdio *stream); + +int +simics_stdout_create(SimicsStdio *stream); + +int +simics_stderr_create(SimicsStdio *stream); + +int +simics_stdfile_create(SimicsStdio *stream, int fn); + +int +simics_stdio_sread(FILE *stream, void *buf, size_t count, size_t *read); + +int +simics_stdio_swrite(FILE *stream, const void *buf, + size_t count, size_t *written); + +int +simics_stdio_sflush(FILE *stream); + +#endif /* __SIMICS_STDIO_H__ */ |