rpm, pthreads(nptl?)

Paweł Sikora pluto w ds14.agh.edu.pl
Śro, 21 Sty 2004, 18:28:57 CET


On Wed, 21 Jan 2004, Paweł Sikora wrote:

> makro
>
>     CLEANUP_HANDLER(sigchld_cancel, &pid, &oldtype);
>
> jest rozwijane przez cos takiego
>
> #define	CLEANUP_RESET(__execute, __oldtype) \
>     (void) pthread_cleanup_pop(__execute); \
>     (void) pthread_setcanceltype ((__oldtype), &(__oldtype));
>
> w cos takiego
>
>     (void) pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, (&oldtype));
>     do {
> 	__pthread_unwind_buf_t __cancel_buf;
> 	void (*__cancel_routine) (void *) = ((sigchld_cancel));
> 	void *__cancel_arg = ((&pid));
> 	int not_first_call = __sigsetjmp ((struct __jmp_buf_tag *) __cancel_buf.__cancel_jmp_buf, 0);
> 	if (__builtin_expect (not_first_call, 0))
> 	{
> 	    __cancel_routine (__cancel_arg);
> 	    __pthread_unwind_next (&__cancel_buf);
> 	}
> 	__pthread_register_cancel (&__cancel_buf);
>     do {;;

stoj, wrrrooc, to nie to mi sie wkleilo, ale ten fragment tez ciekawie
nie wyglada. zwlaszcza to do{;;.
cos mi sie wydaje, ze pthread.h jest lekko przedobrzony.



Więcej informacji o liście dyskusyjnej pld-devel-pl