Lines Matching refs:sv

49 smb_kdoor_init(smb_server_t *sv)  in smb_kdoor_init()  argument
51 sv->sv_kdoor_id = -1; in smb_kdoor_init()
52 mutex_init(&sv->sv_kdoor_mutex, NULL, MUTEX_DEFAULT, NULL); in smb_kdoor_init()
53 cv_init(&sv->sv_kdoor_cv, NULL, CV_DEFAULT, NULL); in smb_kdoor_init()
57 smb_kdoor_fini(smb_server_t *sv) in smb_kdoor_fini() argument
59 smb_kdoor_close(sv); in smb_kdoor_fini()
60 cv_destroy(&sv->sv_kdoor_cv); in smb_kdoor_fini()
61 mutex_destroy(&sv->sv_kdoor_mutex); in smb_kdoor_fini()
69 smb_kdoor_open(smb_server_t *sv, int door_id) in smb_kdoor_open() argument
73 smb_kdoor_close(sv); in smb_kdoor_open()
75 mutex_enter(&sv->sv_kdoor_mutex); in smb_kdoor_open()
76 sv->sv_kdoor_ncall = 0; in smb_kdoor_open()
78 if (sv->sv_kdoor_hd == NULL) { in smb_kdoor_open()
79 sv->sv_kdoor_id = door_id; in smb_kdoor_open()
80 sv->sv_kdoor_hd = door_ki_lookup(door_id); in smb_kdoor_open()
83 rc = (sv->sv_kdoor_hd == NULL) ? -1 : 0; in smb_kdoor_open()
84 mutex_exit(&sv->sv_kdoor_mutex); in smb_kdoor_open()
92 smb_kdoor_close(smb_server_t *sv) in smb_kdoor_close() argument
94 mutex_enter(&sv->sv_kdoor_mutex); in smb_kdoor_close()
96 if (sv->sv_kdoor_hd != NULL) { in smb_kdoor_close()
97 while (sv->sv_kdoor_ncall > 0) in smb_kdoor_close()
98 cv_wait(&sv->sv_kdoor_cv, &sv->sv_kdoor_mutex); in smb_kdoor_close()
100 door_ki_rele(sv->sv_kdoor_hd); in smb_kdoor_close()
101 sv->sv_kdoor_hd = NULL; in smb_kdoor_close()
102 sv->sv_kdoor_id = -1; in smb_kdoor_close()
105 mutex_exit(&sv->sv_kdoor_mutex); in smb_kdoor_close()
112 smb_kdoor_upcall(smb_server_t *sv, uint32_t cmd, in smb_kdoor_upcall() argument
137 if ((da.da_event = smb_event_create(sv, SMB_EVENT_TIMEOUT)) == NULL) in smb_kdoor_upcall()
140 mutex_enter(&sv->sv_kdoor_mutex); in smb_kdoor_upcall()
142 if (sv->sv_kdoor_hd == NULL) { in smb_kdoor_upcall()
143 mutex_exit(&sv->sv_kdoor_mutex); in smb_kdoor_upcall()
145 if (smb_kdoor_open(sv, sv->sv_kdoor_id) != 0) { in smb_kdoor_upcall()
150 mutex_enter(&sv->sv_kdoor_mutex); in smb_kdoor_upcall()
153 sv->sv_kdoor_ncall++; in smb_kdoor_upcall()
154 mutex_exit(&sv->sv_kdoor_mutex); in smb_kdoor_upcall()
157 if ((rc = smb_kdoor_send(sv, &da)) == 0) { in smb_kdoor_upcall()
161 rc = smb_kdoor_receive(sv, &da); in smb_kdoor_upcall()
165 if ((rc = smb_kdoor_upcall_private(sv, &da)) == 0) in smb_kdoor_upcall()
173 mutex_enter(&sv->sv_kdoor_mutex); in smb_kdoor_upcall()
174 if ((--sv->sv_kdoor_ncall) == 0) in smb_kdoor_upcall()
175 cv_signal(&sv->sv_kdoor_cv); in smb_kdoor_upcall()
176 mutex_exit(&sv->sv_kdoor_mutex); in smb_kdoor_upcall()
184 smb_kdoor_send(smb_server_t *sv, smb_doorarg_t *outer_da) in smb_kdoor_send() argument
196 if ((rc = smb_kdoor_upcall_private(sv, &da)) == 0) in smb_kdoor_send()
207 smb_kdoor_receive(smb_server_t *sv, smb_doorarg_t *outer_da) in smb_kdoor_receive() argument
222 if ((rc = smb_kdoor_upcall_private(sv, &da)) == 0) in smb_kdoor_receive()
235 smb_kdoor_upcall_private(smb_server_t *sv, smb_doorarg_t *da) in smb_kdoor_upcall_private() argument
244 if (smb_server_is_stopping(sv)) in smb_kdoor_upcall_private()
247 if ((rc = door_ki_upcall_limited(sv->sv_kdoor_hd, &door_arg, in smb_kdoor_upcall_private()