summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/syscall/sigprocmask.c
diff options
context:
space:
mode:
authorRoger A. Faulkner <Roger.Faulkner@Sun.COM>2009-08-18 20:06:58 -0700
committerRoger A. Faulkner <Roger.Faulkner@Sun.COM>2009-08-18 20:06:58 -0700
commit7be238fce69ba74b2163fc0ea898dfdc01a4aa22 (patch)
tree7a78a0a39337b5ff0884b006e68b05c4135d7add /usr/src/uts/common/syscall/sigprocmask.c
parent98e8d17584d08c481c8a827f2311c1e3e6aceabb (diff)
downloadillumos-gate-7be238fce69ba74b2163fc0ea898dfdc01a4aa22.tar.gz
6817506 Lock contention in kernel severely degrades clock-profiling on T5440 in SIGPROF handling
Diffstat (limited to 'usr/src/uts/common/syscall/sigprocmask.c')
-rw-r--r--usr/src/uts/common/syscall/sigprocmask.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/usr/src/uts/common/syscall/sigprocmask.c b/usr/src/uts/common/syscall/sigprocmask.c
index 8f7cf6113d..51afc4e643 100644
--- a/usr/src/uts/common/syscall/sigprocmask.c
+++ b/usr/src/uts/common/syscall/sigprocmask.c
@@ -2,9 +2,8 @@
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
@@ -19,15 +18,13 @@
*
* CDDL HEADER END
*/
-/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
-
/*
- * Copyright 1994-2003 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
+/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
#include <sys/param.h>
#include <sys/types.h>
@@ -47,7 +44,11 @@ lwp_sigmask(int how, uint_t bits0, uint_t bits1)
proc_t *p = ttoproc(t);
rval_t rv;
- mutex_enter(&p->p_lock);
+ /*
+ * We don't need to acquire p->p_lock here;
+ * we are manipulating thread-private data.
+ */
+
schedctl_finish_sigblock(t);
bits0 &= (FILLSET0 & ~CANTMASK0);
@@ -75,7 +76,6 @@ lwp_sigmask(int how, uint_t bits0, uint_t bits1)
break;
}
- mutex_exit(&p->p_lock);
return (rv.r_vals);
}