/* * smb_notify_init * * This function is not multi-thread safe. The caller must make sure only one * thread makes the call. */ int smb_notify_init(void) { int rc; if (smb_notify_initialized) return (0); smb_slist_constructor(&smb_ncr_list, sizeof (smb_request_t), offsetof(smb_request_t, sr_ncr.nc_lnd)); smb_slist_constructor(&smb_nce_list, sizeof (smb_request_t), offsetof(smb_request_t, sr_ncr.nc_lnd)); smb_thread_init(&smb_thread_notify_daemon, "smb_notify_change_daemon", smb_notify_change_daemon, NULL); rc = smb_thread_start(&smb_thread_notify_daemon); if (rc) { smb_thread_destroy(&smb_thread_notify_daemon); smb_slist_destructor(&smb_ncr_list); smb_slist_destructor(&smb_nce_list); return (rc); } smb_notify_initialized = B_TRUE; return (0); }
int smb_kshare_start(smb_server_t *sv) { smb_thread_init(&sv->sv_export.e_unexport_thread, "smb_thread_unexport", smb_kshare_unexport_thread, sv, smbsrv_base_pri); return (smb_thread_start(&sv->sv_export.e_unexport_thread)); }