]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Thu, 23 Mar 2000 22:16:37 +0000 (22:16 +0000)
committerUlrich Drepper <drepper@redhat.com>
Thu, 23 Mar 2000 22:16:37 +0000 (22:16 +0000)
2000-03-23  Ulrich Drepper  <drepper@redhat.com>

* resolv/netdb.h (SCOPE_DELIMITER): New definitions.
* inet/netinet/in.h (struct sockaddr_in6): Add sin6_scope_id
according to RFC 2553.
* sysdeps/posix/getaddrinfo.c: Change to follow latest RFC draft.
* inet/getnameinfo.c: Likewise.
Patches by YOSHIFUJI Hideaki <yoshfuji@v6.linux.or.jp>.

ChangeLog
linuxthreads/ChangeLog
linuxthreads/internals.h
linuxthreads/mutex.c
linuxthreads/ptfork.c

index 81d0653bb291b2275bef48e7899d9d3cfd50ab16..7b9a4fbea9927fa48553915fbe6a8df144e44022 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2000-03-23  Ulrich Drepper  <drepper@redhat.com>
+
+       * resolv/netdb.h (SCOPE_DELIMITER): New definitions.
+       * inet/netinet/in.h (struct sockaddr_in6): Add sin6_scope_id
+       according to RFC 2553.
+       * sysdeps/posix/getaddrinfo.c: Change to follow latest RFC draft.
+       * inet/getnameinfo.c: Likewise.
+       Patches by YOSHIFUJI Hideaki <yoshfuji@v6.linux.or.jp>.
+
 2000-03-23  Bruno Haible  <haible@clisp.cons.org>
 
        * iconv/gconv_simple.c (internal_ucs4_loop, internal_ucs4le_loop):
index 2a9683ec34103d4f2c5cc96a53b48f3397460ec6..013e640831e5a5a4eb6b9c1a41e3a4589654eaab 100644 (file)
@@ -1,5 +1,9 @@
 2000-03-23  Ulrich Drepper  <drepper@redhat.com>
 
+       * mutex.c (__pthread_reset_pthread_once): Reset once_masterlock.
+       * internals.h (__pthread_reset_pthread_once): Add prototype.
+       * ptfork.c (__fork): Call __pthread_reset_pthread_once.
+
        * manager.c (pthread_handle_create): Store ID of new thread before
        clone call.
 
index 3fcec426309882f428bb9591f0e0e59929c45c61..8cb9b6837c0bc5f6b8ec9f4415f8561cecfaccc9 100644 (file)
@@ -395,6 +395,7 @@ int __pthread_manager(void *reqfd);
 int __pthread_manager_event(void *reqfd);
 void __pthread_manager_sighandler(int sig);
 void __pthread_reset_main_thread(void);
+void __pthread_reset_pthread_once(void);
 void __fresetlockfiles(void);
 void __pthread_manager_adjust_prio(int thread_prio);
 void __pthread_set_own_extricate_if(pthread_descr self, pthread_extricate_if *peif);
index 06d97df03ff64a55bbbae53709f1ede0ac6fd95a..97b5a4fb84402e857265c86d1e600b6542804117 100644 (file)
@@ -223,3 +223,15 @@ int __pthread_once(pthread_once_t * once_control, void (*init_routine)(void))
   return 0;
 }
 strong_alias (__pthread_once, pthread_once)
+
+/*
+ * This is called in the child process after a fork to make
+ * sure that the global mutex pthread_once is not held,
+ * and that the condition variable is reset to an initial state.
+ */
+
+void __pthread_reset_pthread_once(void)
+{
+  pthread_mutex_init(&once_masterlock, NULL);
+  pthread_cond_init(&once_finished, NULL);
+}
index 1dfa8b6ab7169b1a69b0cc28a2809729efad02e6..4cd883fd239b3da9d4abc1fd2d490fb0322e4430 100644 (file)
@@ -89,6 +89,7 @@ pid_t __fork(void)
   pid = __libc_fork();
   if (pid == 0) {
     __pthread_reset_main_thread();
+    __pthread_reset_pthread_once();
     __fresetlockfiles();
     pthread_call_handlers(child);
   } else {