Lines Matching defs:event

1977 	smb_event_t	*event;
1982 event = kmem_cache_alloc(smb_cache_event, KM_SLEEP);
1984 bzero(event, sizeof (smb_event_t));
1985 mutex_init(&event->se_mutex, NULL, MUTEX_DEFAULT, NULL);
1986 cv_init(&event->se_cv, NULL, CV_DEFAULT, NULL);
1987 event->se_magic = SMB_EVENT_MAGIC;
1988 event->se_txid = smb_event_alloc_txid();
1989 event->se_server = sv;
1990 event->se_timeout = timeout;
1993 smb_llist_insert_tail(&sv->sv_event_list, event);
1996 return (event);
2000 smb_event_destroy(smb_event_t *event)
2004 if (event == NULL)
2007 SMB_EVENT_VALID(event);
2008 ASSERT(event->se_waittime == 0);
2009 sv = event->se_server;
2013 smb_llist_remove(&sv->sv_event_list, event);
2016 event->se_magic = (uint32_t)~SMB_EVENT_MAGIC;
2017 cv_destroy(&event->se_cv);
2018 mutex_destroy(&event->se_mutex);
2020 kmem_cache_free(smb_cache_event, event);
2024 * Get the txid for the specified event.
2027 smb_event_txid(smb_event_t *event)
2029 if (event != NULL) {
2030 SMB_EVENT_VALID(event);
2031 return (event->se_txid);
2039 * Wait for event notification.
2042 smb_event_wait(smb_event_t *event)
2048 if (event == NULL)
2051 SMB_EVENT_VALID(event);
2053 mutex_enter(&event->se_mutex);
2054 event->se_waittime = 1;
2055 event->se_errno = 0;
2057 while (!(event->se_notified)) {
2058 if (smb_event_debug && ((event->se_waittime % 30) == 0))
2060 event->se_txid, event->se_waittime);
2062 if (event->se_errno != 0)
2065 if (event->se_waittime > event->se_timeout) {
2066 event->se_errno = ETIME;
2071 (void) cv_reltimedwait(&event->se_cv,
2072 &event->se_mutex, (clock_t)ticks, TR_CLOCK_TICK);
2073 ++event->se_waittime;
2076 err = event->se_errno;
2077 event->se_waittime = 0;
2078 event->se_notified = B_FALSE;
2079 cv_signal(&event->se_cv);
2080 mutex_exit(&event->se_mutex);
2085 * If txid is non-zero, cancel the specified event.
2091 smb_event_t *event;
2099 event = smb_llist_head(event_list);
2100 while (event) {
2101 SMB_EVENT_VALID(event);
2103 if (txid == 0 || event->se_txid == txid) {
2104 mutex_enter(&event->se_mutex);
2105 event->se_errno = ECANCELED;
2106 event->se_notified = B_TRUE;
2107 cv_signal(&event->se_cv);
2108 mutex_exit(&event->se_mutex);
2114 event = smb_llist_next(event_list, event);
2121 * If txid is non-zero, notify the specified event.
2127 smb_event_t *event;
2135 event = smb_llist_head(event_list);
2136 while (event) {
2137 SMB_EVENT_VALID(event);
2139 if (txid == 0 || event->se_txid == txid) {
2140 mutex_enter(&event->se_mutex);
2141 event->se_notified = B_TRUE;
2142 cv_signal(&event->se_cv);
2143 mutex_exit(&event->se_mutex);
2149 event = smb_llist_next(event_list, event);