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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/brand/lx/os/lx_lockd.c
          +++ new/usr/src/uts/common/brand/lx/os/lx_lockd.c
↓ open down ↓ 303 lines elided ↑ open up ↑
 304  304  
 305  305          mip->mon_name = host->nh_name;
 306  306          mip->my_id.my_name = uts_nodename();
 307  307          mip->my_id.my_prog = NLM_PROG;
 308  308          mip->my_id.my_vers = NLM_SM;
 309  309          mip->my_id.my_proc = LX_NLMPROC_NSM_NOTIFY;
 310  310          if (op == SM_MON) {
 311  311                  bcopy(&host->nh_sysid, args.priv, sizeof (uint16_t));
 312  312          }
 313  313  
 314      -        sema_p(&nsm->ns_sem);
      314 +        mutex_enter(&nsm->ns_lock);
 315  315          nlm_nsm_clnt_init(nsm->ns_handle, nsm);
 316  316          if (op == SM_MON) {
 317  317                  struct sm_stat_res mres;
 318  318  
 319  319                  bzero(&mres, sizeof (mres));
 320  320                  stat = sm_mon_1(&args, &mres, nsm->ns_handle);
 321  321          } else {
 322  322                  struct sm_stat ures;
 323  323  
 324  324                  ASSERT(op == SM_UNMON);
 325  325                  bzero(&ures, sizeof (ures));
 326  326                  stat = sm_unmon_1(mip, &ures, nsm->ns_handle);
 327  327          }
 328      -        sema_v(&nsm->ns_sem);
      328 +        mutex_exit(&nsm->ns_lock);
 329  329  
 330  330          if (stat != RPC_SUCCESS) {
 331  331                  NLM_WARN("Failed to contact local statd, stat=%d", stat);
 332  332                  if (op == SM_MON) {
 333  333                          mutex_enter(&g->lock);
 334  334                          host->nh_flags &= ~NLM_NH_MONITORED;
 335  335                          mutex_exit(&g->lock);
 336  336                  }
 337  337          }
 338  338  }
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX