freebsd-dev/lib/libc/include/namespace.h
Daniel Eischen 29ac6bd228 libc MT-safety, part 2.
Add a lock to FILE.  flockfile and friends are now implemented
(for the most part) in libc.  flockfile_debug is implemented in
libc_r; I suppose it's about time to kill it but will do it in
a future commit.

Fix a potential deadlock in _fwalk in a threaded environment.
A file flag (__SIGN) was added to stdio.h that, when set, tells
_fwalk to ignore it in its walk.  This seemed to be needed in
refill.c because each file needs to be locked when flushing.

Add a stub for pthread_self in libc.  This is needed by flockfile
which is allowed by POSIX to be recursive.

Make fgetpos() error return value (-1) match man page.

Remove recursive calls to locked functions (stdio); I think I've
got them all, but I may have missed a couple.

A few K&R -> ANSI conversions along with removal of a few instances
of "register".

$Id$ -> $FreeBSD$ in libc/stdio/rget.c

Not objected to:	-arch, a few months ago
2001-02-11 22:06:43 +00:00

135 lines
4.8 KiB
C

/*
* Copyright (c) 2001 Daniel Eischen <deischen@FreeBSD.org>.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*
*/
#ifndef _NAMESPACE_H_
#define _NAMESPACE_H_
/*
* Prototypes for syscalls/functions that need to be overridden
* in libc_r/libpthread.
*/
#define accept _accept
#define bind _bind
#define close _close
#define connect _connect
#define dup _dup
#define dup2 _dup2
#define execve _execve
#define fcntl _fcntl
/*#define flock _flock */
#define flockfile _flockfile
#define fstat _fstat
#define fstatfs _fstatfs
#define fsync _fsync
#define funlockfile _funlockfile
#define getdirentries _getdirentries
#define getlogin _getlogin
#define getpeername _getpeername
#define getsockname _getsockname
#define getsockopt _getsockopt
#define ioctl _ioctl
/* #define kevent _kevent */
#define listen _listen
#define nanosleep _nanosleep
#define open _open
#define pthread_getspecific _pthread_getspecific
#define pthread_key_create _pthread_key_create
#define pthread_key_delete _pthread_key_delete
#define pthread_mutex_destroy _pthread_mutex_destroy
#define pthread_mutex_init _pthread_mutex_init
#define pthread_mutex_lock _pthread_mutex_lock
#define pthread_mutex_trylock _pthread_mutex_trylock
#define pthread_mutex_unlock _pthread_mutex_unlock
#define pthread_mutexattr_init _pthread_mutexattr_init
#define pthread_mutexattr_destroy _pthread_mutexattr_destroy
#define pthread_mutexattr_settype _pthread_mutexattr_settype
#define pthread_once _pthread_once
#define pthread_self _pthread_self
#define pthread_setspecific _pthread_setspecific
#define read _read
#define readv _readv
#define recvfrom _recvfrom
#define recvmsg _recvmsg
#define select _select
#define sendmsg _sendmsg
#define sendto _sendto
#define setsockopt _setsockopt
/*#define sigaction _sigaction*/
#define sigprocmask _sigprocmask
#define sigsuspend _sigsuspend
#define socket _socket
#define socketpair _socketpair
#define wait4 _wait4
#define write _write
#define writev _writev
/*
* Other hidden syscalls/functions that libc_r needs to override
* but are not used internally by libc.
*
* XXX - When modifying libc to use one of the following, remove
* the prototype from below and place it in the list above.
*/
#if 0
#define creat _creat
#define fchflags _fchflags
#define fchmod _fchmod
#define fpathconf _fpathconf
#define ftrylockfile _ftrylockfile
#define msync _msync
#define nfssvc _nfssvc
#define pause _pause
#define poll _poll
#define pthread_rwlock_destroy _pthread_rwlock_destroy
#define pthread_rwlock_init _pthread_rwlock_init
#define pthread_rwlock_rdlock _pthread_rwlock_rdlock
#define pthread_rwlock_tryrdlock _pthread_rwlock_tryrdlock
#define pthread_rwlock_trywrlock _pthread_rwlock_trywrlock
#define pthread_rwlock_unlock _pthread_rwlock_unlock
#define pthread_rwlock_wrlock _pthread_rwlock_wrlock
#define pthread_rwlockattr_init _pthread_rwlockattr_init
#define pthread_rwlockattr_destroy _pthread_rwlockattr_destroy
#define sched_yield _sched_yield
#define sendfile _sendfile
#define shutdown _shutdown
#define sigaltstack _sigaltstack
#define signanosleep _signanosleep
#define sigpending _sigpending
#define sigreturn _sigreturn
#define sigsetmask _sigsetmask
#define sleep _sleep
#define system _system
#define tcdrain _tcdrain
#define wait _wait
#define waitpid _waitpid
#endif
#endif /* _NAMESPACE_H_ */