Print this page
5042 stop using deprecated atomic functions


  61 } smb_clone_t;
  62 
  63 static dev_info_t *smb_devi;
  64 static smb_clone_t *smb_clones;
  65 static int smb_nclones;
  66 
  67 /*ARGSUSED*/
  68 static int
  69 smb_open(dev_t *dp, int flag, int otyp, cred_t *cred)
  70 {
  71         minor_t c;
  72 
  73         if (ksmbios == NULL)
  74                 return (ENXIO);
  75 
  76         /*
  77          * Locate and reserve a clone structure.  We skip clone 0 as that is
  78          * the real minor number, and we assign a new minor to each clone.
  79          */
  80         for (c = 1; c < smb_nclones; c++) {
  81                 if (casptr(&smb_clones[c].c_hdl, NULL, ksmbios) == NULL)
  82                         break;
  83         }
  84 
  85         if (c >= smb_nclones)
  86                 return (EAGAIN);
  87 
  88         smb_clones[c].c_eplen = P2ROUNDUP(sizeof (smbios_entry_t), 16);
  89         smb_clones[c].c_stlen = smbios_buflen(smb_clones[c].c_hdl);
  90 
  91         *dp = makedevice(getemajor(*dp), c);
  92 
  93         (void) ddi_prop_update_int(*dp, smb_devi, "size",
  94             smb_clones[c].c_eplen + smb_clones[c].c_stlen);
  95 
  96         return (0);
  97 }
  98 
  99 /*ARGSUSED*/
 100 static int
 101 smb_close(dev_t dev, int flag, int otyp, cred_t *cred)




  61 } smb_clone_t;
  62 
  63 static dev_info_t *smb_devi;
  64 static smb_clone_t *smb_clones;
  65 static int smb_nclones;
  66 
  67 /*ARGSUSED*/
  68 static int
  69 smb_open(dev_t *dp, int flag, int otyp, cred_t *cred)
  70 {
  71         minor_t c;
  72 
  73         if (ksmbios == NULL)
  74                 return (ENXIO);
  75 
  76         /*
  77          * Locate and reserve a clone structure.  We skip clone 0 as that is
  78          * the real minor number, and we assign a new minor to each clone.
  79          */
  80         for (c = 1; c < smb_nclones; c++) {
  81                 if (atomic_cas_ptr(&smb_clones[c].c_hdl, NULL, ksmbios) == NULL)
  82                         break;
  83         }
  84 
  85         if (c >= smb_nclones)
  86                 return (EAGAIN);
  87 
  88         smb_clones[c].c_eplen = P2ROUNDUP(sizeof (smbios_entry_t), 16);
  89         smb_clones[c].c_stlen = smbios_buflen(smb_clones[c].c_hdl);
  90 
  91         *dp = makedevice(getemajor(*dp), c);
  92 
  93         (void) ddi_prop_update_int(*dp, smb_devi, "size",
  94             smb_clones[c].c_eplen + smb_clones[c].c_stlen);
  95 
  96         return (0);
  97 }
  98 
  99 /*ARGSUSED*/
 100 static int
 101 smb_close(dev_t dev, int flag, int otyp, cred_t *cred)