This is the mail archive of the
libc-hacker@sourceware.cygnus.com
mailing list for the glibc project.
Use of _REENTRANT and _THREAD_SAFE feature macros
- To: libc-hacker@cygnus.com
- Subject: Use of _REENTRANT and _THREAD_SAFE feature macros
- From: Andreas Jaeger <aj@arthur.rhein-neckar.de>
- Date: 06 Aug 1998 09:53:04 +0200
- Mail-Copies-To: never
Looking through features.h I noticed that we have _REENTRANT and
_THREAD_SAFE but don't really need them anymore.
<features.h> has:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
_REENTRANT Select additionally reentrant object.
_THREAD_SAFE Same as _REENTRANT, often used by other systems.
#if defined _REENTRANT || defined _THREAD_SAFE
# define __USE_REENTRANT 1
#endif
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
__USE_REENTRANT is used in only two places in the glibc headers:
<unistd.h> uses:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ifdef __USE_REENTRANT
/* Return at most NAME_LEN characters of the login name of the user in NAME.
If it cannot be determined or some other error occurred, return the error
code. Otherwise return 0. */
extern int getlogin_r __P ((char *__name, size_t __name_len));
#endif
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
And <stdio/stdio.h> uses it also:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#ifdef __USE_REENTRANT
/* This is the reentrant variant of `tmpnam'. The only difference is
that it does not allow S to be NULL. */
extern char *tmpnam_r __P ((char *__s));
#endif
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>From the description of _REENTRANT in NOTES:
If you define one of these macros, reentrant versions of several
functions get declared.
I would have expected a lot of more functions to be defined and not
only getlogin_r[1]. Is this really intented and ok?
Andreas
Footnotes:
[1] Most systems don't use <stdio/stdio.h> but <libio/libio.h> which
defines tmpnam_r with #ifdef __USE_MISC.
--
Andreas Jaeger aj@arthur.rhein-neckar.de jaeger@informatik.uni-kl.de
for pgp-key finger ajaeger@alma.student.uni-kl.de