source: rtems-libbsd/freebsd-userspace/lib/libc/include/libc_private.h @ 1b13f69

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since 1b13f69 was 1b13f69, checked in by Joel Sherrill <joel.sherrill@…>, on 07/11/12 at 18:23:45

FreeBSD user space support - First additions

This requires a full checkout of the FreeBSD 8.2 source code.
The checkout we have been using is missing at least the libc,
include, and sys directories. The script to copy files in is
crude.

This eventually needs to separate the manually written .h files
out and add the RTEMS specific network initialization support
with functionality to program the IP addresses and gateways as
the old stack did.

  • Property mode set to 100644
File size: 6.3 KB
Line 
1/*
2 * Copyright (c) 1998 John Birrell <jb@cimlogic.com.au>.
3 * 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
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 * 3. Neither the name of the author nor the names of any co-contributors
14 *    may be used to endorse or promote products derived from this software
15 *    without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY JOHN BIRRELL AND CONTRIBUTORS ``AS IS'' AND
18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * $FreeBSD$
30 *
31 * Private definitions for libc, libc_r and libpthread.
32 *
33 */
34
35#ifndef _LIBC_PRIVATE_H_
36#define _LIBC_PRIVATE_H_
37#include <sys/_pthreadtypes.h>
38
39/*
40 * This global flag is non-zero when a process has created one
41 * or more threads. It is used to avoid calling locking functions
42 * when they are not required.
43 */
44extern int      __isthreaded;
45
46/*
47 * libc should use libc_dlopen internally, which respects a global
48 * flag where loading of new shared objects can be restricted.
49 */
50void *libc_dlopen(const char *, int);
51
52/*
53 * For dynamic linker.
54 */
55void _rtld_error(const char *fmt, ...);
56
57/*
58 * File lock contention is difficult to diagnose without knowing
59 * where locks were set. Allow a debug library to be built which
60 * records the source file and line number of each lock call.
61 */
62#ifdef  _FLOCK_DEBUG
63#define _FLOCKFILE(x)   _flockfile_debug(x, __FILE__, __LINE__)
64#else
65#define _FLOCKFILE(x)   _flockfile(x)
66#endif
67
68/*
69 * Macros for locking and unlocking FILEs. These test if the
70 * process is threaded to avoid locking when not required.
71 */
72#define FLOCKFILE(fp)           if (__isthreaded) _FLOCKFILE(fp)
73#define FUNLOCKFILE(fp)         if (__isthreaded) _funlockfile(fp)
74
75/*
76 * Indexes into the pthread jump table.
77 *
78 * Warning! If you change this type, you must also change the threads
79 * libraries that reference it (libc_r, libpthread).
80 */
81typedef enum {
82        PJT_ATFORK,
83        PJT_ATTR_DESTROY,
84        PJT_ATTR_GETDETACHSTATE,
85        PJT_ATTR_GETGUARDSIZE,
86        PJT_ATTR_GETINHERITSCHED,
87        PJT_ATTR_GETSCHEDPARAM,
88        PJT_ATTR_GETSCHEDPOLICY,
89        PJT_ATTR_GETSCOPE,
90        PJT_ATTR_GETSTACKADDR,
91        PJT_ATTR_GETSTACKSIZE,
92        PJT_ATTR_INIT,
93        PJT_ATTR_SETDETACHSTATE,
94        PJT_ATTR_SETGUARDSIZE,
95        PJT_ATTR_SETINHERITSCHED,
96        PJT_ATTR_SETSCHEDPARAM,
97        PJT_ATTR_SETSCHEDPOLICY,
98        PJT_ATTR_SETSCOPE,
99        PJT_ATTR_SETSTACKADDR,
100        PJT_ATTR_SETSTACKSIZE,
101        PJT_CANCEL,
102        PJT_CLEANUP_POP,
103        PJT_CLEANUP_PUSH,
104        PJT_COND_BROADCAST,
105        PJT_COND_DESTROY,
106        PJT_COND_INIT,
107        PJT_COND_SIGNAL,
108        PJT_COND_TIMEDWAIT,
109        PJT_COND_WAIT,
110        PJT_DETACH,
111        PJT_EQUAL,
112        PJT_EXIT,
113        PJT_GETSPECIFIC,
114        PJT_JOIN,
115        PJT_KEY_CREATE,
116        PJT_KEY_DELETE,
117        PJT_KILL,
118        PJT_MAIN_NP,
119        PJT_MUTEXATTR_DESTROY,
120        PJT_MUTEXATTR_INIT,
121        PJT_MUTEXATTR_SETTYPE,
122        PJT_MUTEX_DESTROY,
123        PJT_MUTEX_INIT,
124        PJT_MUTEX_LOCK,
125        PJT_MUTEX_TRYLOCK,
126        PJT_MUTEX_UNLOCK,
127        PJT_ONCE,
128        PJT_RWLOCK_DESTROY,
129        PJT_RWLOCK_INIT,
130        PJT_RWLOCK_RDLOCK,
131        PJT_RWLOCK_TRYRDLOCK,
132        PJT_RWLOCK_TRYWRLOCK,
133        PJT_RWLOCK_UNLOCK,
134        PJT_RWLOCK_WRLOCK,
135        PJT_SELF,
136        PJT_SETCANCELSTATE,
137        PJT_SETCANCELTYPE,
138        PJT_SETSPECIFIC,
139        PJT_SIGMASK,
140        PJT_TESTCANCEL,
141        PJT_MAX
142} pjt_index_t;
143
144typedef int (*pthread_func_t)(void);
145typedef pthread_func_t pthread_func_entry_t[2];
146
147extern pthread_func_entry_t __thr_jtable[];
148
149/*
150 * yplib internal interfaces
151 */
152#ifdef YP
153int _yp_check(char **);
154#endif
155
156/*
157 * Initialise TLS for static programs
158 */
159void _init_tls(void);
160
161/*
162 * Provides pthread_once()-like functionality for both single-threaded
163 * and multi-threaded applications.
164 */
165int _once(pthread_once_t *, void (*)(void));
166
167/*
168 * Set the TLS thread pointer
169 */
170void _set_tp(void *tp);
171
172/*
173 * This is a pointer in the C run-time startup code. It is used
174 * by getprogname() and setprogname().
175 */
176extern const char *__progname;
177
178/*
179 * This function is used by the threading libraries to notify malloc that a
180 * thread is exiting.
181 */
182void _malloc_thread_cleanup(void);
183
184/*
185 * These functions are used by the threading libraries in order to protect
186 * malloc across fork().
187 */
188void _malloc_prefork(void);
189void _malloc_postfork(void);
190
191/*
192 * Function to clean up streams, called from abort() and exit().
193 */
194extern void (*__cleanup)(void);
195
196/*
197 * Get kern.osreldate to detect ABI revisions.  Explicitly
198 * ignores value of $OSVERSION and caches result.  Prototypes
199 * for the wrapped "new" pad-less syscalls are here for now.
200 */
201extern int __getosreldate(void);
202#include <sys/_types.h>
203/* Without pad */
204extern __off_t  __sys_lseek(int, __off_t, int);
205extern int      __sys_ftruncate(int, __off_t);
206extern int      __sys_truncate(const char *, __off_t);
207extern __ssize_t __sys_pread(int, void *, __size_t, __off_t);
208extern __ssize_t __sys_pwrite(int, const void *, __size_t, __off_t);
209extern void *   __sys_mmap(void *, __size_t, int, int, int, __off_t);
210
211/* With pad */
212extern __off_t  __sys_freebsd6_lseek(int, int, __off_t, int);
213extern int      __sys_freebsd6_ftruncate(int, int, __off_t);
214extern int      __sys_freebsd6_truncate(const char *, int, __off_t);
215extern __ssize_t __sys_freebsd6_pread(int, void *, __size_t, int, __off_t);
216extern __ssize_t __sys_freebsd6_pwrite(int, const void *, __size_t, int, __off_t);
217extern void *   __sys_freebsd6_mmap(void *, __size_t, int, int, int, int, __off_t);
218
219/* Without back-compat translation */
220extern int      __sys_fcntl(int, int, ...);
221
222/* execve() with PATH processing to implement posix_spawnp() */
223int _execvpe(const char *, char * const *, char * const *);
224
225#endif /* _LIBC_PRIVATE_H_ */
Note: See TracBrowser for help on using the repository browser.