Re: [patch] threading fix, tid-2.5.47-A3

From: Ingo Molnar (mingo@elte.hu)
Date: Sun Nov 17 2002 - 14:31:21 EST


On Sun, 17 Nov 2002, Linus Torvalds wrote:

> First off, a program had better be correctly startable even if the
> process that does the execve() is _not_ using the new glibc. [...]

it most definitely is. Binary compatibility is taken very seriously.

the SETTID change only affects the fork() case. Ie. there are 4 major ways
a context can be started:

  execve(): here we build a process image from scratch. NPTL changes
            nothing here, except that if a new NPTL binary is started up,
            it will call sys_set_tid_address() to get the 'initial thread'
            set up properly. Old binaries continue to work.

  fork(): here we build a new process image by copying the parent image.
          NPTL applications are using sys_clone(CLONE_SETTID) internally,
          to set up the initial thread of the new process image. [the
          fork() code in glibc also does other cleanup work to get a true
          initial thread going, even if a threaded application forks, but
          this is nothing the kernel should worry about.]

  pthread_create(): here we create a new thread that shares all sharable
                    state with the parent thread. LinuxThreads (old glibc)
                    does whatever it always did, NPTL uses all the new
                    flags.

  raw clone(): share a subset of the parent thread's resources.

there is no change anywhere due to NPTL. You can start and old glibc
application from within a new glibc application and vice versa.

        Ingo

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sat Nov 23 2002 - 22:00:19 EST