On Mon, 16 Sep 2002, Robert Collins wrote:

> On Sat, 2002-08-17 at 06:18, Thomas Pfaff wrote:
> >
> > Rob suggested to break the pthread_fork patch into smaller chunks. Ths is
> > part 1 providing a fork save key value handling.
> > The patch will add a linked list of keys to< MTinterface and a fork buffer
> > in pthread_key where the key values are passed between parent and child.
>
> In general, I liked this patch.
> I've made some essentially stylistic alterations, to make the resulting
> code a little easier to read. I realise you followed my lead on some of
> the layout - I need to fix up my existing code too :].
>
> Here's a snapshot of HEAD with your patch after my changes.
>
> I'd love it if you sent me the source for the test case you used when
> developing this.
>

I have attached a small source file for testing.

My main goal was to get a working threaded perl, so this was the reference
source for the final testing. With all patches applied (and the changed
mutex implementation) i was able to build and run it without problems.

Thomas

#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <pthread.h>

int main(void)
{
  pthread_key_t p_key;

  pthread_key_create (&p_key,NULL);
  pthread_setspecific (p_key, (void*) 0x10);

  switch (fork())
    {
    case -1:
      return 0;
    case 0:
      printf ("child:  %p %p\n", pthread_self(), pthread_getspecific (p_key));
      break;
    default:
      printf ("parent: %p %p\n", pthread_self(), pthread_getspecific (p_key));
    }

  return 0;
}

Reply via email to