This is Unofficial EPICS BASE Doxygen Site
epicsStdio.c File Reference
#include <stdlib.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <errno.h>
#include "libComAPI.h"
#include "epicsThread.h"
#include "epicsStdio.h"
+ Include dependency graph for epicsStdio.c:

Go to the source code of this file.

Macros

#define epicsStdioStdStreams
 

Functions

FILE *epicsStdCall epicsGetStdin (void)
 
FILE *epicsStdCall epicsGetStdout (void)
 
FILE *epicsStdCall epicsGetStderr (void)
 
FILE *epicsStdCall epicsGetThreadStdin (void)
 
FILE *epicsStdCall epicsGetThreadStdout (void)
 
FILE *epicsStdCall epicsGetThreadStderr (void)
 
void epicsStdCall epicsSetThreadStdin (FILE *fp)
 
void epicsStdCall epicsSetThreadStdout (FILE *fp)
 
void epicsStdCall epicsSetThreadStderr (FILE *fp)
 
int epicsStdCall epicsStdoutPrintf (const char *pFormat,...)
 
int epicsStdCall epicsStdoutPuts (const char *str)
 
int epicsStdCall epicsStdoutPutchar (int c)
 

Macro Definition Documentation

#define epicsStdioStdStreams

Definition at line 21 of file epicsStdio.c.

Function Documentation

FILE* epicsStdCall epicsGetStderr ( void  )

Definition at line 56 of file epicsStdio.c.

57 {
58  FILE *fp = epicsGetThreadStderr();
59 
60  if (!fp)
61  fp = stderr;
62  return fp;
63 }
FILE *epicsStdCall epicsGetThreadStderr(void)
Definition: epicsStdio.c:77
#define stderr
Definition: epicsStdio.h:32
FILE* epicsStdCall epicsGetStdin ( void  )

Definition at line 38 of file epicsStdio.c.

39 {
40  FILE *fp = epicsGetThreadStdin();
41 
42  if (!fp)
43  fp = stdin;
44  return fp;
45 }
FILE *epicsStdCall epicsGetThreadStdin(void)
Definition: epicsStdio.c:65
#define stdin
Definition: epicsStdio.h:28
FILE* epicsStdCall epicsGetStdout ( void  )

Definition at line 47 of file epicsStdio.c.

48 {
49  FILE *fp = epicsGetThreadStdout();
50 
51  if (!fp)
52  fp = stdout;
53  return fp;
54 }
#define stdout
Definition: epicsStdio.h:30
FILE *epicsStdCall epicsGetThreadStdout(void)
Definition: epicsStdio.c:71
FILE* epicsStdCall epicsGetThreadStderr ( void  )

Definition at line 77 of file epicsStdio.c.

78 {
79  /* Deliberately don't do the epicsThreadOnce() here; epicsThreadInit()
80  * is allowed to use stderr inside its once() routine, in which case we
81  * must return the OS's stderr instead. There may be a tiny chance of a
82  * race happening here during initialization for some architectures, so
83  * we only use it for stderr to reduce the chance of that happening.
84  */
85  if (!stderrThreadPrivateId)
86  return NULL;
87  return epicsThreadPrivateGet(stderrThreadPrivateId);
88 }
LIBCOM_API void *epicsStdCall epicsThreadPrivateGet(epicsThreadPrivateId)
Definition: osdThread.c:973
#define NULL
Definition: catime.c:38
FILE* epicsStdCall epicsGetThreadStdin ( void  )

Definition at line 65 of file epicsStdio.c.

66 {
67  epicsThreadOnce(&onceId,once,0);
68  return epicsThreadPrivateGet(stdinThreadPrivateId);
69 }
LIBCOM_API void *epicsStdCall epicsThreadPrivateGet(epicsThreadPrivateId)
Definition: osdThread.c:973
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
FILE* epicsStdCall epicsGetThreadStdout ( void  )

Definition at line 71 of file epicsStdio.c.

72 {
73  epicsThreadOnce(&onceId,once,0);
74  return epicsThreadPrivateGet(stdoutThreadPrivateId);
75 }
LIBCOM_API void *epicsStdCall epicsThreadPrivateGet(epicsThreadPrivateId)
Definition: osdThread.c:973
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
void epicsStdCall epicsSetThreadStderr ( FILE *  fp)

Definition at line 102 of file epicsStdio.c.

103 {
104  epicsThreadOnce(&onceId,once,0);
105  epicsThreadPrivateSet(stderrThreadPrivateId,fp);
106 }
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
LIBCOM_API void epicsStdCall epicsThreadPrivateSet(epicsThreadPrivateId, void *)
Definition: osdThread.c:961
void epicsStdCall epicsSetThreadStdin ( FILE *  fp)

Definition at line 90 of file epicsStdio.c.

91 {
92  epicsThreadOnce(&onceId,once,0);
93  epicsThreadPrivateSet(stdinThreadPrivateId,fp);
94 }
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
LIBCOM_API void epicsStdCall epicsThreadPrivateSet(epicsThreadPrivateId, void *)
Definition: osdThread.c:961
void epicsStdCall epicsSetThreadStdout ( FILE *  fp)

Definition at line 96 of file epicsStdio.c.

97 {
98  epicsThreadOnce(&onceId,once,0);
99  epicsThreadPrivateSet(stdoutThreadPrivateId,fp);
100 }
LIBCOM_API void epicsStdCall epicsThreadOnce(epicsThreadOnceId *id, EPICSTHREADFUNC, void *arg)
LIBCOM_API void epicsStdCall epicsThreadPrivateSet(epicsThreadPrivateId, void *)
Definition: osdThread.c:961
int epicsStdCall epicsStdoutPrintf ( const char *  pFormat,
  ... 
)

Definition at line 108 of file epicsStdio.c.

109 {
110  va_list pvar;
111  int nchar;
112  FILE *stream = epicsGetStdout();
113 
114  va_start(pvar, pFormat);
115  nchar = vfprintf(stream, pFormat, pvar);
116  va_end(pvar);
117  return nchar;
118 }
FILE *epicsStdCall epicsGetStdout(void)
Definition: epicsStdio.c:47
int epicsStdCall epicsStdoutPutchar ( int  c)

Definition at line 125 of file epicsStdio.c.

126 {
127  return putc(c, epicsGetStdout());
128 }
FILE *epicsStdCall epicsGetStdout(void)
Definition: epicsStdio.c:47
int epicsStdCall epicsStdoutPuts ( const char *  str)

Definition at line 120 of file epicsStdio.c.

121 {
122  return fprintf(epicsGetStdout(), "%s\n", str);
123 }
#define str(v)
FILE *epicsStdCall epicsGetStdout(void)
Definition: epicsStdio.c:47