This is the mail archive of the libc-hacker@sources.redhat.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


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

clock_nanosleep cancellation problem


Hi!

The following change:
        * sysdeps/unix/clock_nanosleep.c: Add cancellation support.
        * sysdeps/unix/sysv/linux/clock_nanosleep.c: Likewise.
breaks x86_64 and supposedly all arches which use library local variable
instead of a field in struct pthread for multiple_threads.
../sysdeps/unix/clock_nanosleep.c:97: undefined reference to `__libc_multiple_threads'
make[2]: *** [/usr/src/build/269611-x86_64/BUILD/glibc-2.3.2-200306160509/build-x86_64-linuxnptl/rt/librt.so]
Error 1

Possible fix could be
a) add multiple_threads struct pthread field unconditionally and set it
   (on thread creation) in addition to __libc_multiple_threads and
   __pthread_multiple_threads, in sysdep-cancel.h use
   __libc_multiple_threads in libc.so, __pthread_multiple_threads in
   libpthread.so and THREAD_SELF->multiple_threads in other libraries
b) add __librt_multiple_threads and some hooks to initialize it

Also, linuxthreads needs the same changes as NPTL, otherwise linuxthreads
doesn't compile at all. I can write a patch for linuxthreads, but
would like to know which way to go in NPTL/x86_64 etc. first, as
linuxthreads will do the same.

	Jakub


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