Print this page
XXXXX convert NLM's single-count semaphore to a mutex

@@ -861,11 +861,11 @@
             NSM_ADDR_V1, 0, NLM_RPC_RETRIES, zone_kcred(),
             &nsm->ns_addr_handle);
         if (error != 0)
                 goto error;
 
-        sema_init(&nsm->ns_sem, 1, NULL, SEMA_DEFAULT, NULL);
+        mutex_init(&nsm->ns_lock, NULL, MUTEX_DEFAULT, NULL);
         return (0);
 
 error:
         kmem_free(nsm->ns_addr.buf, nsm->ns_addr.maxlen);
         if (nsm->ns_handle) {

@@ -887,22 +887,22 @@
         nsm->ns_addr_handle = NULL;
         if (nsm->ns_handle->cl_auth != NULL)
                 auth_destroy(nsm->ns_handle->cl_auth);
         CLNT_DESTROY(nsm->ns_handle);
         nsm->ns_handle = NULL;
-        sema_destroy(&nsm->ns_sem);
+        mutex_destroy(&nsm->ns_lock);
 }
 
 static enum clnt_stat
 nlm_nsm_simu_crash(struct nlm_nsm *nsm)
 {
         enum clnt_stat stat;
 
-        sema_p(&nsm->ns_sem);
+        mutex_enter(&nsm->ns_lock);
         nlm_nsm_clnt_init(nsm->ns_handle, nsm);
         stat = sm_simu_crash_1(NULL, NULL, nsm->ns_handle);
-        sema_v(&nsm->ns_sem);
+        mutex_exit(&nsm->ns_lock);
 
         return (stat);
 }
 
 static enum clnt_stat

@@ -913,14 +913,14 @@
         enum clnt_stat stat;
 
         args.mon_name = uts_nodename();
         bzero(&res, sizeof (res));
 
-        sema_p(&nsm->ns_sem);
+        mutex_enter(&nsm->ns_lock);
         nlm_nsm_clnt_init(nsm->ns_handle, nsm);
         stat = sm_stat_1(&args, &res, nsm->ns_handle);
-        sema_v(&nsm->ns_sem);
+        mutex_exit(&nsm->ns_lock);
 
         if (stat == RPC_SUCCESS)
                 *out_stat = res.state;
 
         return (stat);

@@ -941,14 +941,14 @@
         args.mon_id.my_id.my_prog = NLM_PROG;
         args.mon_id.my_id.my_vers = NLM_SM;
         args.mon_id.my_id.my_proc = NLM_SM_NOTIFY1;
         bcopy(&priv, args.priv, sizeof (priv));
 
-        sema_p(&nsm->ns_sem);
+        mutex_enter(&nsm->ns_lock);
         nlm_nsm_clnt_init(nsm->ns_handle, nsm);
         stat = sm_mon_1(&args, &res, nsm->ns_handle);
-        sema_v(&nsm->ns_sem);
+        mutex_exit(&nsm->ns_lock);
 
         return (stat);
 }
 
 static enum clnt_stat

@@ -965,14 +965,14 @@
         args.my_id.my_name = uts_nodename();
         args.my_id.my_prog = NLM_PROG;
         args.my_id.my_vers = NLM_SM;
         args.my_id.my_proc = NLM_SM_NOTIFY1;
 
-        sema_p(&nsm->ns_sem);
+        mutex_enter(&nsm->ns_lock);
         nlm_nsm_clnt_init(nsm->ns_handle, nsm);
         stat = sm_unmon_1(&args, &res, nsm->ns_handle);
-        sema_v(&nsm->ns_sem);
+        mutex_exit(&nsm->ns_lock);
 
         return (stat);
 }
 
 static enum clnt_stat

@@ -984,14 +984,14 @@
 
         args.family = family;
         args.name = name;
         args.address = *address;
 
-        sema_p(&nsm->ns_sem);
+        mutex_enter(&nsm->ns_lock);
         nlm_nsm_clnt_init(nsm->ns_addr_handle, nsm);
         stat = nsmaddrproc1_reg_1(&args, &res, nsm->ns_addr_handle);
-        sema_v(&nsm->ns_sem);
+        mutex_exit(&nsm->ns_lock);
 
         return (stat);
 }
 
 /*