Lines Matching refs:sd
99 specificdata_container_link(specificdata_domain_t sd, in specificdata_container_link() argument
103 LIST_INSERT_HEAD(&sd->sd_list, sc, sc_list); in specificdata_container_link()
107 specificdata_container_unlink(specificdata_domain_t sd, in specificdata_container_unlink() argument
115 specificdata_destroy_datum(specificdata_domain_t sd, in specificdata_destroy_datum() argument
124 KASSERT(key < sd->sd_nkey); in specificdata_destroy_datum()
127 dtor = sd->sd_keys[key].ski_dtor; in specificdata_destroy_datum()
153 specificdata_domain_t sd; in specificdata_domain_create() local
155 sd = kmem_zalloc(sizeof(*sd), KM_SLEEP); in specificdata_domain_create()
156 mutex_init(&sd->sd_lock, MUTEX_DEFAULT, IPL_NONE); in specificdata_domain_create()
157 LIST_INIT(&sd->sd_list); in specificdata_domain_create()
159 return (sd); in specificdata_domain_create()
167 specificdata_domain_delete(specificdata_domain_t sd) in specificdata_domain_delete() argument
180 specificdata_key_create(specificdata_domain_t sd, specificdata_key_t *keyp, in specificdata_key_create() argument
192 mutex_enter(&sd->sd_lock); in specificdata_key_create()
194 if (sd->sd_keys == NULL) in specificdata_key_create()
197 for (; key < sd->sd_nkey; key++) { in specificdata_key_create()
198 if (sd->sd_keys[key].ski_dtor == NULL) in specificdata_key_create()
203 nsz = (sd->sd_nkey + 1) * sizeof(*newkeys); in specificdata_key_create()
206 if (sd->sd_keys != NULL) { in specificdata_key_create()
207 size_t osz = sd->sd_nkey * sizeof(*newkeys); in specificdata_key_create()
208 memcpy(newkeys, sd->sd_keys, osz); in specificdata_key_create()
209 kmem_free(sd->sd_keys, osz); in specificdata_key_create()
211 sd->sd_keys = newkeys; in specificdata_key_create()
212 sd->sd_nkey++; in specificdata_key_create()
214 sd->sd_keys[key].ski_dtor = dtor; in specificdata_key_create()
216 mutex_exit(&sd->sd_lock); in specificdata_key_create()
229 specificdata_key_delete(specificdata_domain_t sd, specificdata_key_t key) in specificdata_key_delete() argument
233 mutex_enter(&sd->sd_lock); in specificdata_key_delete()
235 if (key >= sd->sd_nkey) in specificdata_key_delete()
242 LIST_FOREACH(sc, &sd->sd_list, sc_list) { in specificdata_key_delete()
243 specificdata_destroy_datum(sd, sc, key); in specificdata_key_delete()
246 sd->sd_keys[key].ski_dtor = NULL; in specificdata_key_delete()
249 mutex_exit(&sd->sd_lock); in specificdata_key_delete()
258 specificdata_init(specificdata_domain_t sd, specificdata_reference *ref) in specificdata_init() argument
277 specificdata_fini(specificdata_domain_t sd, specificdata_reference *ref) in specificdata_fini() argument
291 mutex_enter(&sd->sd_lock); in specificdata_fini()
293 specificdata_container_unlink(sd, sc); in specificdata_fini()
295 specificdata_destroy_datum(sd, sc, key); in specificdata_fini()
298 mutex_exit(&sd->sd_lock); in specificdata_fini()
308 specificdata_getspecific(specificdata_domain_t sd, specificdata_reference *ref, in specificdata_getspecific() argument
335 specificdata_getspecific_unlocked(specificdata_domain_t sd, in specificdata_getspecific_unlocked() argument
353 specificdata_setspecific(specificdata_domain_t sd, in specificdata_setspecific() argument
377 mutex_enter(&sd->sd_lock); in specificdata_setspecific()
378 newnkey = sd->sd_nkey; in specificdata_setspecific()
380 mutex_exit(&sd->sd_lock); in specificdata_setspecific()
398 mutex_exit(&sd->sd_lock); in specificdata_setspecific()
402 specificdata_container_unlink(sd, sc); in specificdata_setspecific()
407 specificdata_container_link(sd, newsc); in specificdata_setspecific()
411 mutex_exit(&sd->sd_lock); in specificdata_setspecific()