On Fri, Oct 24, 2008 at 19:41, Michael Kerrisk <mtk.manpages@xxxxxxxxxxxxxx> wrote: > Hello Bert, > > Thanks for your review. Follow-ups below. > > On Wed, Oct 22, 2008 at 3:58 PM, Bert Wesarg <bert.wesarg@xxxxxxxxxxxxxx> wrote: >> On Wed, Oct 22, 2008 at 19:48, Michael Kerrisk >> <mtk.manpages@xxxxxxxxxxxxxx> wrote: >>> Any reviews for pthread_exit(3)? >>> >>> .\" Copyright (c) 2008 Linux Foundation, written by Michael Kerrisk >>> .\" <mtk.manpages@xxxxxxxxx> >>> .\" >>> .\" Permission is granted to make and distribute verbatim copies of this >>> .\" manual provided the copyright notice and this permission notice are >>> .\" preserved on all copies. >>> .\" >>> .\" Permission is granted to copy and distribute modified versions of this >>> .\" manual under the conditions for verbatim copying, provided that the >>> .\" entire resulting derived work is distributed under the terms of a >>> .\" permission notice identical to this one. >>> .\" >>> .\" Since the Linux kernel and libraries are constantly changing, this >>> .\" manual page may be incorrect or out-of-date. The author(s) assume no >>> .\" responsibility for errors or omissions, or for damages resulting from >>> .\" the use of the information contained herein. The author(s) may not >>> .\" have taken the same level of care in the production of this manual, >>> .\" which is licensed free of charge, as they might when working >>> .\" professionally. >>> .\" >>> .\" Formatted or processed versions of this manual, if unaccompanied by >>> .\" the source, must acknowledge the copyright and authors of this work. >>> .\" >>> .TH PTHREAD_EXIT 3 2008-10-19 "Linux" "Linux Programmer's Manual" >>> .SH NAME >>> pthread_exit \- terminate calling thread >>> .SH SYNOPSIS >>> .nf >>> .B #include <pthread.h> >>> >>> .BI "void pthread_exit(void *" value_ptr ); >> In the reminder you are talking about 'retval' not 'value_ptr' anymore. > > Fixed. > >>> .sp >>> Compile and link with \fI\-pthread\fP. >>> .SH DESCRIPTION >>> The >>> .BR pthread_exit () >>> function terminates the calling thread and returns a value via >>> .I retval >>> that (if the thread is joinable) >>> is available to another thread in the process that calls >>> .BR pthread_join (3). >>> >>> Any clean-up handlers established by >>> .BR pthread_cleanup_push (3) >>> that have not yet been popped, >>> are popped (in the reverse of the order in which they were pushed) >>> and executed. >>> If the thread has any thread-specific data, then, >>> after the clean-up handlers have been executed, >>> the corresponding destructor functions are called, >>> in an unspecified order. >>> >>> When a thread terminates, >>> process-shared resources (e.g., mutexes, condition variables, >>> semaphores, and file descriptors) are not released, >>> and functions registered using >>> .BR atexit (3) >>> are not called. >>> >>> After the last thread in a process terminates, >>> the process terminates as by calling >>> .BR exit (3) >>> supplying an exit status of zero; >>> thus, process-shared resources >>> are released and functions registered using >>> .BR atexit (3) >>> are called. >>> .SH RETURN VALUE >>> This function does not return to the caller. >>> .SH ERRORS >>> This function always succeeds. >>> .SH CONFORMING TO >>> POSIX.1-2001. >>> .SH NOTES >>> Performing a return from the start function of any thread other >>> than the main thread results in an implicit call to >>> .BR pthread_exit (), >>> using the function's return value as the thread's exit status. >>> >>> To allow other threads to continue execution, >>> the main thread should terminate by calling >>> .BR pthread_create () >>> rather than >>> .BR exit (3). >> This paragraph sounds wrong. > > Can you say more please? Wrong in what way? It should call pthread_exit not pthread_create. > >> BTW, Linux behaves a little strange if you quit the main thread. For >> example in top the task is marked '<defunct>'. If I press Ctrl+Z the >> task go to sleep but I don't get my prompt back. > > Yes. Can you provide any pointers to further ino. bug reports > regarding that problem? That may take a while, but I remember darkly that this was on lkml sometime ago. This Ctrl+Z-behavior is new to me. Bert > > Cheers, > > Michael > >>> The value pointed to by >>> .IR retval >>> should not be on the located on the calling thread's stack, >>> since the contents of that stack are undefined after the thread terminates. >>> .SH EXAMPLE >>> See >>> .BR pthread_create (3). >>> .SH SEE ALSO >>> .BR pthread_create (3), >>> .BR pthread_join (3), >>> .BR pthreads (7) >>> -- >>> To unsubscribe from this list: send the line "unsubscribe linux-man" in >>> the body of a message to majordomo@xxxxxxxxxxxxxxx >>> More majordomo info at http://vger.kernel.org/majordomo-info.html >>> >> > > > > -- > Michael Kerrisk > Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ > git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git > man-pages online: http://www.kernel.org/doc/man-pages/online_pages.html > Found a bug? http://www.kernel.org/doc/man-pages/reporting_bugs.html > -- To unsubscribe from this list: send the line "unsubscribe linux-man" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html