Hardware Libraries  20.1
Arria 10 SoC Hardware Manager
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups
alt_printf.h
1 /******************************************************************************
2 *
3 * Copyright 2013-2017 Altera Corporation. All Rights Reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * 2. Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * 3. Neither the name of the copyright holder nor the names of its contributors
16 * may be used to endorse or promote products derived from this software without
17 * specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE.
30 *
31 ******************************************************************************/
32 
33 #if !defined(ALT_PRINTF_H)
34 #define ALT_PRINTF_H
35 #include <stdio.h>
36 #include <stdarg.h>
37 #include <inttypes.h>
38 
39 typedef struct ALT_PRINTF_MEM_INFO_s
40 {
41  void (*putc_function)(char pchar,FILE * info);
42  char *toptr;
43  char *maxptr;
44 } ALT_PRINTF_MEM_INFO_t;
45 
46 #ifndef DEFAULT_TERM
47  #ifdef soc_a10
48  #define DEFAULT_TERM term1
49  #else
50  #define DEFAULT_TERM term0
51  #endif
52 #endif
53 
54 extern FILE *term0;
55 extern FILE *term1;
56 
57 static __inline int null_printf(__attribute__ ((unused))const char *format, ...){return 0;}
58 static __inline int null_vfprintf(__attribute__ ((unused))FILE *stream, __attribute__ ((unused))const char *format, __attribute__ ((unused))va_list args){return 0;}
59 
60 int alt_printf(const char *format, ...);
61 int alt_snprintf(char *to, size_t n, const char *format, ...);
62 int alt_sprintf(char *to, const char *format, ...);
63 int alt_fprintf(FILE *stream, const char *format, ...);
64 int alt_vfprintf(FILE *stream, const char *format, va_list args);
65 
66 #if defined (PRINTF_HOST)
67  #define ALT_PRINTF printf
68  #define alt_printf printf
69 #else
70  #define snprintf alt_snprintf
71  #define ALT_SNPRINTF alt_snprintf
72  #define sprintf alt_sprintf
73  #define ALT_SPRINTF alt_sprintf
74 
75  #if defined (PRINTF_UART)
76  #define ALT_PRINTF alt_printf
77  #define printf alt_printf
78  #else
79  #define ALT_PRINTF null_printf
80  #define printf null_printf
81  #define vprintf null_vfprintf
82  #endif /* PRINTF_UART */
83 #endif /* PRINTF_HOST */
84 
85 void alt_log_done(FILE *);
86 
87 #endif /* ALT_PRINTF_H */