source: rtems-libbsd/rtemsbsd/include/machine/rtems-bsd-program.h @ 7eb064c

55-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 7eb064c was d31a365, checked in by Christian Mauderer <Christian.Mauderer@…>, on 07/14/16 at 09:01:43

rtemsbsd: Add wrapper for open, fopen, malloc, ...

Add the following rtems_bsd_program_... wrapper:

  • rtems_bsd_program_open
  • rtems_bsd_program_socket
  • rtems_bsd_program_close
  • rtems_bsd_program_fopen
  • rtems_bsd_program_fclose
  • rtems_bsd_program_malloc
  • rtems_bsd_program_calloc
  • rtems_bsd_program_realloc
  • rtems_bsd_program_free
  • rtems_bsd_program_strdup
  • rtems_bsd_program_vasprintf
  • rtems_bsd_program_asprintf
  • Property mode set to 100644
File size: 4.9 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup rtems_bsd_machine
5 *
6 * @brief TODO.
7 */
8
9/*
10 * Copyright (c) 2013 embedded brains GmbH.  All rights reserved.
11 *
12 *  embedded brains GmbH
13 *  Dornierstr. 4
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
17 *
18 * Redistribution and use in source and binary forms, with or without
19 * modification, are permitted provided that the following conditions
20 * are met:
21 * 1. Redistributions of source code must retain the above copyright
22 *    notice, this list of conditions and the following disclaimer.
23 * 2. Redistributions in binary form must reproduce the above copyright
24 *    notice, this list of conditions and the following disclaimer in the
25 *    documentation and/or other materials provided with the distribution.
26 *
27 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
28 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
31 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 */
39
40#ifndef _RTEMS_BSD_MACHINE_RTEMS_BSD_PROGRAM_H_
41#define _RTEMS_BSD_MACHINE_RTEMS_BSD_PROGRAM_H_
42
43#include <sys/cdefs.h>
44#include <stdbool.h>
45#include <stdio.h>
46#include <stdarg.h>
47
48__BEGIN_DECLS
49
50int
51rtems_bsd_program_call(const char *name, int (*prog)(void *), void *context);
52
53int
54rtems_bsd_program_call_main(const char *name, int (*main)(int, char **),
55    int argc, char **argv);
56
57int
58rtems_bsd_program_call_main_with_data_restore(const char *name,
59    int (*main)(int, char **), int argc, char **argv,
60    void *data_buf, const size_t data_size);
61
62void
63rtems_bsd_program_exit(int exit_code) __dead2;
64
65void
66rtems_bsd_program_error(const char *, ...) __attribute__ ((__format__ (__printf__, 1, 2)));
67
68const char *
69rtems_bsd_program_get_name(void);
70
71void *
72rtems_bsd_program_get_context(void) __pure2;
73
74void
75rtems_bsd_program_lock(void);
76
77void
78rtems_bsd_program_unlock(void);
79
80int
81rtems_bsd_program_open(const char *path, int oflag, ...);
82
83int
84rtems_bsd_program_socket(int domain, int type, int protocol);
85
86int
87rtems_bsd_program_close(int fd);
88
89FILE *
90rtems_bsd_program_fopen(const char *restrict filename,
91    const char *restrict mode);
92
93int
94rtems_bsd_program_fclose(FILE *file);
95
96void *
97rtems_bsd_program_malloc(size_t size);
98
99void *
100rtems_bsd_program_calloc(size_t nelem, size_t elsize);
101
102void *
103rtems_bsd_program_realloc(void *ptr, size_t size);
104
105char *
106rtems_bsd_program_strdup(const char *s1);
107
108int
109rtems_bsd_program_vasprintf(char **strp, const char *fmt, va_list ap);
110
111int
112rtems_bsd_program_asprintf(char **strp, const char *fmt, ...);
113
114void
115rtems_bsd_program_free(void *ptr);
116
117#ifndef RTEMS_BSD_PROGRAM_NO_EXIT_WRAP
118  #define exit(code) rtems_bsd_program_exit(code)
119#endif
120
121#ifndef RTEMS_BSD_PROGRAM_NO_ERROR_WRAP
122  #define error(fmt, ...) rtems_bsd_program_error(fmt, ## __VA_ARGS__)
123#endif
124
125#ifndef RTEMS_BSD_PROGRAM_NO_GETPROGNAME_WRAP
126  #define getprogname() rtems_bsd_program_get_name()
127#endif
128
129#ifndef RTEMS_BSD_PROGRAM_NO_PRINTF_WRAP
130  #define printf(...) fprintf(stdout, __VA_ARGS__)
131#endif
132
133#ifndef RTEMS_BSD_PROGRAM_NO_OPEN_WRAP
134  #define open(path, oflag, ...) \
135      rtems_bsd_program_open(path, oflag, ## __VA_ARGS__)
136#endif
137
138#ifndef RTEMS_BSD_PROGRAM_NO_SOCKET_WRAP
139  #define socket(domain, type, protocol) \
140      rtems_bsd_program_socket(domain, type, protocol)
141#endif
142
143#ifndef RTEMS_BSD_PROGRAM_NO_CLOSE_WRAP
144  #define close(fildes) rtems_bsd_program_close(fildes)
145#endif
146
147#ifndef RTEMS_BSD_PROGRAM_NO_FOPEN_WRAP
148  #define fopen(filename, mode) rtems_bsd_program_fopen(filename, mode)
149#endif
150
151#ifndef RTEMS_BSD_PROGRAM_NO_FCLOSE_WRAP
152  #define fclose(file) rtems_bsd_program_fclose(file)
153#endif
154
155#ifndef RTEMS_BSD_PROGRAM_NO_MALLOC_WRAP
156  #define malloc(size) rtems_bsd_program_malloc(size)
157#endif
158
159#ifndef RTEMS_BSD_PROGRAM_NO_CALLOC_WRAP
160  #define calloc(nelem, elsize) rtems_bsd_program_calloc(nelem, elsize)
161#endif
162
163#ifndef RTEMS_BSD_PROGRAM_NO_REALLOC_WRAP
164  #define realloc(ptr, size) rtems_bsd_program_realloc(ptr, size)
165#endif
166
167#ifndef RTEMS_BSD_PROGRAM_NO_STRDUP_WRAP
168  #define strdup(s1) rtems_bsd_program_strdup(s1)
169#endif
170
171#ifndef RTEMS_BSD_PROGRAM_NO_VASPRINTF_WRAP
172  #define vasprintf(strp, fmt, ap) \
173      rtems_bsd_program_vasprintf(strp, fmt, ap)
174#endif
175
176#ifndef RTEMS_BSD_PROGRAM_NO_ASPRINTF_WRAP
177  #define asprintf(strp, fmt, ...) \
178      rtems_bsd_program_asprintf(strp, fmt, ## __VA_ARGS__)
179#endif
180
181#ifndef RTEMS_BSD_PROGRAM_NO_FREE_WRAP
182  #define free(ptr) rtems_bsd_program_free(ptr);
183#endif
184
185__END_DECLS
186
187#endif /* _RTEMS_BSD_MACHINE_RTEMS_BSD_PROGRAM_H_ */
Note: See TracBrowser for help on using the repository browser.