* sysdeps/unix/sysv/linux/tst-getcpu.c: New file.
* sysdeps/unix/sysv/linux/Makefile [subdir=posix] (tests): Add tst-getcpu. * include/link.h: Move l_version and l_nversion members around to fill gaps.
This commit is contained in:
parent
a53fa282ac
commit
341c566f05
@ -1,5 +1,12 @@
|
|||||||
2007-05-10 Ulrich Drepper <drepper@redhat.com>
|
2007-05-10 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/tst-getcpu.c: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/Makefile [subdir=posix] (tests): Add
|
||||||
|
tst-getcpu.
|
||||||
|
|
||||||
|
* include/link.h: Move l_version and l_nversion members around to
|
||||||
|
fill gaps.
|
||||||
|
|
||||||
* scripts/check-c++-types.sh: Don't use -fnu89-inline option.
|
* scripts/check-c++-types.sh: Don't use -fnu89-inline option.
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/sched_setaffinity.c
|
* sysdeps/unix/sysv/linux/sched_setaffinity.c
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* Data structure for communication from the run-time dynamic linker for
|
/* Data structure for communication from the run-time dynamic linker for
|
||||||
loaded ELF shared objects.
|
loaded ELF shared objects.
|
||||||
Copyright (C) 1995-2002,2003,2004,2005,2006 Free Software Foundation, Inc.
|
Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -141,6 +141,10 @@ struct link_map
|
|||||||
/* Dependent object that first caused this object to be loaded. */
|
/* Dependent object that first caused this object to be loaded. */
|
||||||
struct link_map *l_loader;
|
struct link_map *l_loader;
|
||||||
|
|
||||||
|
/* Array with version names. */
|
||||||
|
struct r_found_version *l_versions;
|
||||||
|
unsigned int l_nversions;
|
||||||
|
|
||||||
/* Symbol hash table. */
|
/* Symbol hash table. */
|
||||||
Elf_Symndx l_nbuckets;
|
Elf_Symndx l_nbuckets;
|
||||||
Elf32_Word l_gnu_bitmask_idxbits;
|
Elf32_Word l_gnu_bitmask_idxbits;
|
||||||
@ -184,10 +188,6 @@ struct link_map
|
|||||||
unsigned int l_removed:1; /* Nozero if the object cannot be used anymore
|
unsigned int l_removed:1; /* Nozero if the object cannot be used anymore
|
||||||
since it is removed. */
|
since it is removed. */
|
||||||
|
|
||||||
/* Array with version names. */
|
|
||||||
unsigned int l_nversions;
|
|
||||||
struct r_found_version *l_versions;
|
|
||||||
|
|
||||||
/* Collected information about own RPATH directories. */
|
/* Collected information about own RPATH directories. */
|
||||||
struct r_search_path_struct l_rpath_dirs;
|
struct r_search_path_struct l_rpath_dirs;
|
||||||
|
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
2007-05-10 Ulrich Drepper <drepper@redhat.com>
|
2007-05-10 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* descr.h (struct pthread): Rearrange members to fill hole in
|
||||||
|
64-bit layout.
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/pthread_setaffinity.c
|
* sysdeps/unix/sysv/linux/pthread_setaffinity.c
|
||||||
(__pthread_setaffinity_new): If syscall was successful and
|
(__pthread_setaffinity_new): If syscall was successful and
|
||||||
RESET_VGETCPU_CACHE is defined, use it before returning.
|
RESET_VGETCPU_CACHE is defined, use it before returning.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
/* Copyright (C) 2002-2006, 2007 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||||
|
|
||||||
@ -268,6 +268,9 @@ struct pthread
|
|||||||
| EXITING_BITMASK | CANCEL_RESTMASK | TERMINATED_BITMASK)) \
|
| EXITING_BITMASK | CANCEL_RESTMASK | TERMINATED_BITMASK)) \
|
||||||
== (CANCELTYPE_BITMASK | CANCELED_BITMASK))
|
== (CANCELTYPE_BITMASK | CANCELED_BITMASK))
|
||||||
|
|
||||||
|
/* Flags. Including those copied from the thread attribute. */
|
||||||
|
int flags;
|
||||||
|
|
||||||
/* We allocate one block of references here. This should be enough
|
/* We allocate one block of references here. This should be enough
|
||||||
to avoid allocating any memory dynamically for most applications. */
|
to avoid allocating any memory dynamically for most applications. */
|
||||||
struct pthread_key_data
|
struct pthread_key_data
|
||||||
@ -321,9 +324,6 @@ struct pthread
|
|||||||
/* Check whether a thread is detached. */
|
/* Check whether a thread is detached. */
|
||||||
#define IS_DETACHED(pd) ((pd)->joinid == (pd))
|
#define IS_DETACHED(pd) ((pd)->joinid == (pd))
|
||||||
|
|
||||||
/* Flags. Including those copied from the thread attribute. */
|
|
||||||
int flags;
|
|
||||||
|
|
||||||
/* The result of the thread function. */
|
/* The result of the thread function. */
|
||||||
void *result;
|
void *result;
|
||||||
|
|
||||||
|
@ -113,6 +113,8 @@ ifeq ($(subdir),posix)
|
|||||||
sysdep_headers += bits/initspin.h
|
sysdep_headers += bits/initspin.h
|
||||||
|
|
||||||
sysdep_routines += exit-thread sched_getcpu
|
sysdep_routines += exit-thread sched_getcpu
|
||||||
|
|
||||||
|
tests += tst-getcpu
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(subdir),inet)
|
ifeq ($(subdir),inet)
|
||||||
|
53
sysdeps/unix/sysv/linux/tst-getcpu.c
Normal file
53
sysdeps/unix/sysv/linux/tst-getcpu.c
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <sched.h>
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
cpu_set_t cs;
|
||||||
|
if (sched_getaffinity (getpid (), sizeof (cs), &cs) != 0)
|
||||||
|
{
|
||||||
|
printf ("getaffinity failed: %m\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int result = 0;
|
||||||
|
int cpu = 0;
|
||||||
|
while (CPU_COUNT (&cs) != 0)
|
||||||
|
{
|
||||||
|
if (CPU_ISSET (cpu, &cs))
|
||||||
|
{
|
||||||
|
cpu_set_t cs2;
|
||||||
|
CPU_ZERO (&cs2);
|
||||||
|
CPU_SET (cpu, &cs2);
|
||||||
|
if (sched_setaffinity (getpid (), sizeof (cs2), &cs2) != 0)
|
||||||
|
{
|
||||||
|
printf ("setaffinity(%d) failed: %m\n", cpu);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int cpu2 = sched_getcpu ();
|
||||||
|
if (cpu2 == -1 && errno == ENOSYS)
|
||||||
|
{
|
||||||
|
puts ("getcpu syscall not implemented");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (cpu2 != cpu)
|
||||||
|
{
|
||||||
|
printf ("getcpu results %d not possible\n", cpu2);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CPU_CLR (cpu, &cs);
|
||||||
|
}
|
||||||
|
++cpu;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
|
#include <test-skeleton.c>
|
Loading…
x
Reference in New Issue
Block a user