Lines Matching refs:hsvcp

52 #define	HSVC_CHK_REFCNT(hsvcp)	\  argument
53 if (hsvc_debug & DBG_HSVC_REFCNT) hsvc_chk_refcnt(hsvcp)
63 #define HSVC_CHK_REFCNT(hsvcp) argument
139 hsvc_t *hsvcp; in hsvc_lookup() local
142 for (hsvcp = hsvc_groups; hsvcp != NULL; hsvcp = hsvcp->next) { in hsvc_lookup()
143 for (p = hsvcp->clients; p != NULL; in hsvc_lookup()
151 return (hsvcp); in hsvc_lookup()
160 hsvc_chk_refcnt(hsvc_t *hsvcp) in hsvc_chk_refcnt() argument
165 for (refcnt = 0, p = hsvcp->clients; p != NULL; in hsvc_chk_refcnt()
169 ASSERT(hsvcp->refcnt == refcnt); in hsvc_chk_refcnt()
178 hsvc_t *hsvcp; in hsvc_dump() local
186 for (hsvcp = hsvc_groups; hsvcp != NULL; hsvcp = hsvcp->next) { in hsvc_dump()
188 "%p\n", (void *)hsvcp, hsvcp->group, hsvcp->major, in hsvc_dump()
189 hsvcp->minor, hsvcp->refcnt, (void *)hsvcp->clients); in hsvc_dump()
191 for (p = hsvcp->clients; p != NULL; in hsvc_dump()
213 hsvc_t *hsvcp; in hsvc_alloc() local
218 hsvcp = hsvc_avail; in hsvc_alloc()
219 hsvc_avail = hsvcp->next; in hsvc_alloc()
221 hsvcp = kmem_zalloc(sizeof (hsvc_t), KM_SLEEP); in hsvc_alloc()
224 (void *)hsvc_avail, (void *)hsvcp)); in hsvc_alloc()
226 hsvcp = NULL; in hsvc_alloc()
227 return (hsvcp); in hsvc_alloc()
231 hsvc_free(hsvc_t *hsvcp) in hsvc_free() argument
233 ASSERT(hsvcp != NULL); in hsvc_free()
236 if (hsvcp >= hsvc_resv_bufs && in hsvc_free()
237 hsvcp < &hsvc_resv_bufs[HSVC_RESV_BUFS_MAX]) { in hsvc_free()
238 hsvcp->next = hsvc_avail; in hsvc_free()
239 hsvc_avail = hsvcp; in hsvc_free()
243 (void *)hsvc_avail, (void *)hsvcp)); in hsvc_free()
244 (void) kmem_free(hsvcp, sizeof (hsvc_t)); in hsvc_free()
253 hsvc_link_client(hsvc_t *hsvcp, hsvc_info_t *hsvcinfop) in hsvc_link_client() argument
256 HSVC_CHK_REFCNT(hsvcp); in hsvc_link_client()
258 hsvcinfop->hsvc_private = hsvcp->clients; in hsvc_link_client()
259 hsvcp->clients = hsvcinfop; in hsvc_link_client()
260 hsvcp->refcnt++; in hsvc_link_client()
270 hsvc_unlink_client(hsvc_t *hsvcp, hsvc_info_t *hsvcinfop) in hsvc_unlink_client() argument
276 HSVC_CHK_REFCNT(hsvcp); in hsvc_unlink_client()
278 for (pp = &hsvcp->clients; (p = *pp) != NULL; in hsvc_unlink_client()
283 ASSERT(hsvcp->refcnt > 0); in hsvc_unlink_client()
284 hsvcp->refcnt--; in hsvc_unlink_client()
302 hsvc_t *hsvcp; in hsvc_register() local
328 for (hsvcp = hsvc_groups; hsvcp != NULL; hsvcp = hsvcp->next) in hsvc_register()
329 if (hsvcp->group == api_group) in hsvc_register()
332 if (hsvcp) { in hsvc_register()
341 if (hsvcp->major != major) { in hsvc_register()
343 } else if (hsvcp->minor > minor) { in hsvc_register()
349 *supported_minor = hsvcp->minor; in hsvc_register()
356 *supported_minor = hsvcp->minor; in hsvc_register()
357 hsvc_link_client(hsvcp, hsvcinfop); in hsvc_register()
389 hsvcp = hsvc_alloc(); in hsvc_register()
390 if (hsvcp == NULL) { in hsvc_register()
434 hsvcp->group = api_group; in hsvc_register()
435 hsvcp->major = major; in hsvc_register()
436 hsvcp->minor = *supported_minor; in hsvc_register()
437 hsvcp->refcnt = 0; in hsvc_register()
438 hsvcp->clients = NULL; in hsvc_register()
439 hsvcp->next = hsvc_groups; in hsvc_register()
440 hsvc_groups = hsvcp; in hsvc_register()
445 hsvc_link_client(hsvcp, hsvcinfop); in hsvc_register()
467 hsvc_free(hsvcp); in hsvc_register()
484 hsvc_t **hsvcpp, *hsvcp; in hsvc_unregister() local
507 for (hsvcpp = &hsvc_groups; (hsvcp = *hsvcpp) != NULL; in hsvc_unregister()
508 hsvcpp = &hsvcp->next) { in hsvc_unregister()
509 if (hsvcp->group != api_group || hsvcp->major != major) in hsvc_unregister()
516 if (hsvc_unlink_client(hsvcp, hsvcinfop) < 0) { in hsvc_unregister()
527 if (hsvcp->refcnt == 0) { in hsvc_unregister()
530 ASSERT(hsvcp->clients == NULL); in hsvc_unregister()
545 *hsvcpp = hsvcp->next; in hsvc_unregister()
546 hsvc_free(hsvcp); in hsvc_unregister()
551 if (hsvcp == NULL) in hsvc_unregister()
571 hsvc_t *hsvcp; in hsvc_version() local
580 for (hsvcp = hsvc_groups; hsvcp != NULL; hsvcp = hsvcp->next) in hsvc_version()
581 if (hsvcp->group == api_group) in hsvc_version()
584 if (hsvcp) { in hsvc_version()
585 *majorp = hsvcp->major; in hsvc_version()
586 *minorp = hsvcp->minor; in hsvc_version()
628 hsvc_t *hsvcp; in hsvc_init() local
641 for (i = 0, hsvcp = &hsvc_resv_bufs[0]; in hsvc_init()
642 i < HSVC_RESV_BUFS_MAX; i++, hsvcp++) in hsvc_init()
643 hsvc_free(hsvcp); in hsvc_init()