2003-12-20  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Define.
	* sysdeps/unix/sysv/linux/getpid.c: New file.
This commit is contained in:
Ulrich Drepper 2003-12-20 09:58:33 +00:00
parent 4efdd8d355
commit bbe35eb571
4 changed files with 51 additions and 1 deletions

View File

@ -1310,7 +1310,7 @@ of this helper program; chances are you did not intend to run this program.\n\
an old kernel that can't perform TLS_INIT_TP, even if no TLS is ever an old kernel that can't perform TLS_INIT_TP, even if no TLS is ever
used. Trying to do it lazily is too hairy to try when there could be used. Trying to do it lazily is too hairy to try when there could be
multiple threads (from a non-TLS-using libpthread). */ multiple threads (from a non-TLS-using libpthread). */
if (GL(dl_tls_max_dtv_idx) > 0 || !TLS_INIT_TP_EXPENSIVE) if (!TLS_INIT_TP_EXPENSIVE || GL(dl_tls_max_dtv_idx) > 0)
{ {
struct link_map *l; struct link_map *l;
size_t nelem; size_t nelem;

View File

@ -1,3 +1,8 @@
2003-12-20 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/Makefile (CFLAGS-getpid.c): Define.
* sysdeps/unix/sysv/linux/getpid.c: New file.
2003-12-19 Ulrich Drepper <drepper@redhat.com> 2003-12-19 Ulrich Drepper <drepper@redhat.com>
* eintr.c (setup_eintr): Add new parameter. Pass to thread function. * eintr.c (setup_eintr): Add new parameter. Pass to thread function.

View File

@ -29,4 +29,5 @@ endif
ifeq ($(subdir),posix) ifeq ($(subdir),posix)
CFLAGS-fork.c = -D_IO_MTSAFE_IO CFLAGS-fork.c = -D_IO_MTSAFE_IO
CFLAGS-getpid.c = -fomit-frame-pointer
endif endif

View File

@ -0,0 +1,44 @@
/* Copyright (C) 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
#include <unistd.h>
#include <tls.h>
#include <sysdep.h>
pid_t
__getpid (void)
{
pid_t result;
#ifndef NOT_IN_libc
result = THREAD_GETMEM (THREAD_SELF, pid);
if (__builtin_expect (result == 0, 0))
#endif
{
INTERNAL_SYSCALL_DECL (err);
result = INTERNAL_SYSCALL (getpid, err, 0);
#ifndef NOT_IN_libc
THREAD_SETMEM (THREAD_SELF, pid, result);
#endif
}
return result;
}
libc_hidden_def (__getpid)
weak_alias (__getpid, getpid)
libc_hidden_def (getpid)