Only call ISP_UNLOCK/ISP_LOCK if isp->isp_osinfo.intsok in USEC_SLEEP.

Add a test against isp->isp_osinfo.islocked prior to trying to see
whether --isp->isp_osinfo.islocked is zero to cause us to unlock
(non-SMPLOCK case).
This commit is contained in:
Matt Jacob 2000-12-05 07:41:53 +00:00
parent bfbab17021
commit 4081cc88c9

View File

@ -146,10 +146,12 @@ struct isposinfo {
#define SNPRINTF snprintf
#define STRNCAT strncat
#define USEC_DELAY DELAY
#define USEC_SLEEP(isp, x) \
ISP_UNLOCK(isp); \
DELAY(x); \
ISP_LOCK(isp)
#define USEC_SLEEP(isp, x) \
if (isp->isp_osinfo.intsok) \
ISP_UNLOCK(isp); \
DELAY(x); \
if (isp->isp_osinfo.intsok) \
ISP_LOCK(isp)
#define NANOTIME_T struct timespec
#define GET_NANOTIME nanotime
@ -332,8 +334,10 @@ static INLINE void isp_unlock(struct ispsoftc *);
static INLINE void
isp_unlock(struct ispsoftc *isp)
{
if (--isp->isp_osinfo.islocked == 0) {
splx(isp->isp_osinfo.splsaved);
if (isp->isp_osinfo.islocked) {
if (--isp->isp_osinfo.islocked == 0) {
splx(isp->isp_osinfo.splsaved);
}
}
}
#endif