This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.16-ports-merge-540-gd11260f


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  d11260f86a64a634f5a3ad9939f6e8ce30442460 (commit)
      from  19f1dd5f2dbf794cd6b040093bf2b1ba114b3c15 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d11260f86a64a634f5a3ad9939f6e8ce30442460

commit d11260f86a64a634f5a3ad9939f6e8ce30442460
Author: Chris Metcalf <cmetcalf@tilera.com>
Date:   Fri Oct 26 09:21:08 2012 -0400

    tile: add vDSO support for gettimeofday()

diff --git a/ports/ChangeLog.tile b/ports/ChangeLog.tile
index 93c99ac..6445a3a 100644
--- a/ports/ChangeLog.tile
+++ b/ports/ChangeLog.tile
@@ -1,3 +1,11 @@
+2012-10-26  Chris Metcalf  <cmetcalf@tilera.com>
+
+	* sysdeps/unix/sysv/linux/tile/Makefile (sysdep_routines):
+	Include dl-vdso.
+	* sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h: New file.
+	* sysdeps/unix/sysv/linux/tile/gettimeofday.c: New file.
+	* sysdeps/unix/sysv/linux/tile/init-first.c: New file.
+
 2012-10-19  Roland McGrath  <roland@hack.frob.com>
 
 	* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist:
diff --git a/ports/sysdeps/unix/sysv/linux/tile/Makefile b/ports/sysdeps/unix/sysv/linux/tile/Makefile
index 0cbfdd0..1c0c968 100644
--- a/ports/sysdeps/unix/sysv/linux/tile/Makefile
+++ b/ports/sysdeps/unix/sysv/linux/tile/Makefile
@@ -13,3 +13,7 @@ sysdep_headers += sys/dataplane.h
 sysdep_routines += set_dataplane
 
 endif
+
+ifeq ($(subdir),elf)
+sysdep_routines += dl-vdso
+endif
diff --git a/ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h b/ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h
new file mode 100644
index 0000000..b972720
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h
@@ -0,0 +1,30 @@
+/* Resolve function pointers to VDSO functions.
+   Copyright (C) 2012 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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, see
+   <http://www.gnu.org/licenses/>.  */
+
+
+#ifndef _LIBC_VDSO_H
+#define _LIBC_VDSO_H
+
+#ifdef SHARED
+
+extern long int (*__vdso_gettimeofday) (struct timeval *, void *)
+  attribute_hidden;
+
+#endif
+
+#endif /* _LIBC_VDSO_H */
diff --git a/ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c b/ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c
new file mode 100644
index 0000000..e2bcc45
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c
@@ -0,0 +1,38 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include <stddef.h>
+#include <sys/time.h>
+#include <time.h>
+
+#undef __gettimeofday
+#include <bits/libc-vdso.h>
+
+int
+__gettimeofday (struct timeval *tv, struct timezone *tz)
+{
+#ifdef SHARED
+  /* If the vDSO is available we use it. */
+  if (__vdso_gettimeofday != NULL)
+    return __vdso_gettimeofday (tv, tz);
+#endif
+  return INLINE_SYSCALL (gettimeofday, 2, tv, tz);
+}
+
+strong_alias (__gettimeofday, __gettimeofday_internal)
+weak_alias (__gettimeofday, gettimeofday)
diff --git a/ports/sysdeps/unix/sysv/linux/tile/init-first.c b/ports/sysdeps/unix/sysv/linux/tile/init-first.c
new file mode 100644
index 0000000..58b6533
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/tile/init-first.c
@@ -0,0 +1,34 @@
+/* Copyright (C) 2012 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   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, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifdef SHARED
+#include <dl-vdso.h>
+#include <bits/libc-vdso.h>
+
+long int (*__vdso_gettimeofday) (struct timeval *, void *) attribute_hidden;
+
+static inline void
+_libc_vdso_platform_setup (void)
+{
+  PREPARE_VERSION (linux26, "LINUX_2.6", 61765110);
+  __vdso_gettimeofday = _dl_vdso_vsym ("__vdso_gettimeofday", &linux26);
+}
+
+#define VDSO_SETUP _libc_vdso_platform_setup
+#endif
+
+#include "../init-first.c"

-----------------------------------------------------------------------

Summary of changes:
 ports/ChangeLog.tile                               |    8 ++++
 ports/sysdeps/unix/sysv/linux/tile/Makefile        |    4 ++
 .../sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h  |   30 +++++++++++++++
 ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c  |   38 ++++++++++++++++++++
 ports/sysdeps/unix/sysv/linux/tile/init-first.c    |   34 +++++++++++++++++
 5 files changed, 114 insertions(+), 0 deletions(-)
 create mode 100644 ports/sysdeps/unix/sysv/linux/tile/bits/libc-vdso.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/tile/gettimeofday.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/tile/init-first.c


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]