site_archiver@lists.apple.com Delivered-To: darwin-dev@lists.apple.com On May 30, 2006, at 4:54 AM, Per Mildner wrote: This is when compiling user-level programs. matt. What exectly is supposed to change when setting _APPLE_C_SOURCE? I realize that this causes a new version of pthread_cancel to be called. However, the real problem is that the POSIX mandated thread cancellation points are missing, e.g. in read and write. #include <assert.h> #include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> static int exit_status = EXIT_FAILURE; void * func(void *arg) { char buf; exit_status = EXIT_SUCCESS; read(STDIN_FILENO, &buf, 1); return NULL; } int main(void) { pthread_t t; void *retval; assert(!pthread_create(&t, NULL, func, NULL)); assert(!pthread_cancel(t)); assert(!pthread_join(t, &retval)); assert(PTHREAD_CANCELED == retval); return exit_status; } _______________________________________________ Do not post admin requests to the list. They will be ignored. Darwin-dev mailing list (Darwin-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/darwin-dev/site_archiver%40lists.appl... On 8-May-06, at 16:08 , Matt Watson wrote: On May 8, 2006, at 12:59 PM, Andre-John Mas wrote:
On May 8, 2006, at 12:45 PM, Andre-John Mas wrote:
Could anyone tell me whether pthread_cancel() is planned to be
implemented properly in a future version of Darwin? From what I
understand the current implementation does not conform to the
posix implementation.
If you compile with _APPLE_C_SOURCE, _POSIX_C_SOURCE or
_XOPEN_SOURCE, the implementation should behave as you want.
Thanks. Just one question are these for my applications or for
compiling the kernel?
As you point out, a different version of certain pthread routines is used when _APPLE_C_SOURCE is set. I can't reproduce what you are seeing. Do you have a self-contained source example exhibiting the problem? The following program works properly when built with _APPLE_C_SOURCE on 10.4.6: This email sent to site_archiver@lists.apple.com