View | Details | Raw Unified | Return to bug 283101 | Differences between
and this patch

Collapse All | Expand All

(-)b/lib/libthr/thread/thr_private.h (+3 lines)
Lines 421-426 struct pthread { Link Here
421
	((thr)->cancel_pending && (thr)->cancel_enable &&	\
421
	((thr)->cancel_pending && (thr)->cancel_enable &&	\
422
	 (thr)->no_cancel == 0)
422
	 (thr)->no_cancel == 0)
423
423
424
	int sigcancel_cnt;
425
	int sigcancel_crit_cnt;
426
424
	/* Cancellation is enabled */
427
	/* Cancellation is enabled */
425
	int			cancel_enable;
428
	int			cancel_enable;
426
429
(-)b/lib/libthr/thread/thr_sig.c (-1 / +4 lines)
Lines 191-198 sigcancel_handler(int sig __unused, Link Here
191
	struct pthread *curthread = _get_curthread();
191
	struct pthread *curthread = _get_curthread();
192
	int err;
192
	int err;
193
193
194
	if (THR_IN_CRITICAL(curthread))
194
	curthread->sigcancel_cnt++;
195
	if (THR_IN_CRITICAL(curthread)) {
196
		curthread->sigcancel_crit_cnt++;
195
		return;
197
		return;
198
	}
196
	err = errno;
199
	err = errno;
197
	check_suspend(curthread);
200
	check_suspend(curthread);
198
	check_cancel(curthread, ucp);
201
	check_cancel(curthread, ucp);

Return to bug 283101