Lines Matching defs:mi
51 struct mirror_instance *mi;
67 * to change mi list membership */
82 __mirror_rxflow_instance(struct mirror_instance *mi, int enable)
85 pss, mi->same_mi_pss_list) {
89 mi->rx_enabled = (char)enable;
115 __mirror_update_worst_tail(struct mirror_instance *mi)
120 oldest = lws_ring_get_oldest_tail(mi->ring);
123 pss, mi->same_mi_pss_list) {
124 wai = (uint32_t)lws_ring_get_count_waiting_elements(mi->ring,
136 lws_ring_update_oldest_tail(mi->ring, worst_tail);
137 if (oldest == lws_ring_get_oldest_tail(mi->ring))
143 if (!mi->rx_enabled && /* rx is disabled */
144 lws_ring_get_count_free_elements(mi->ring) >= RXFLOW_MAX)
146 __mirror_rxflow_instance(mi, 1);
158 pss, mi->same_mi_pss_list) {
174 __mirror_callback_all_in_mi_on_writable(struct mirror_instance *mi)
176 /* ask for WRITABLE callback for every wsi on this mi */
178 pss, mi->same_mi_pss_list) {
204 struct mirror_instance *mi = NULL;
245 mi = mi1;
250 if (!mi) {
259 mi = malloc(sizeof(*mi));
260 if (!mi)
262 memset(mi, 0, sizeof(*mi));
263 mi->ring = lws_ring_create(sizeof(struct a_message),
266 if (!mi->ring) {
267 free(mi);
271 mi->next = v->mi_list;
272 v->mi_list = mi;
273 lws_snprintf(mi->name, sizeof(mi->name) - 1, "%s", pn);
274 mi->rx_enabled = 1;
276 lws_pthread_mutex_init(&mi->lock);
278 lwsl_notice("Created new mi %p '%s'\n", mi, pn);
281 /* add our pss to list of guys bound to this mi */
283 lws_ll_fwd_insert(pss, same_mi_pss_list, mi->same_mi_pss_list);
287 pss->mi = mi;
288 pss->tail = lws_ring_get_oldest_tail(mi->ring);
300 mi = pss->mi;
301 if (!mi)
308 same_mi_pss_list, pss, mi->same_mi_pss_list);
309 pss->mi = NULL;
311 if (mi->same_mi_pss_list) {
319 lws_pthread_mutex_lock(&mi->lock); /* mi lock { */
320 __mirror_update_worst_tail(mi);
321 lws_pthread_mutex_unlock(&mi->lock); /* } mi lock */
326 /* No more pss using the mirror instance... delete mi */
330 if (*pmi == mi) {
333 lws_ring_destroy(mi->ring);
334 lws_pthread_mutex_destroy(&mi->lock);
336 free(mi);
366 lws_pthread_mutex_lock(&pss->mi->lock); /* instance lock { */
367 oldest_tail = lws_ring_get_oldest_tail(pss->mi->ring);
372 msg = lws_ring_get_element(pss->mi->ring, &pss->tail);
380 if (lws_ring_consume(pss->mi->ring, &pss->tail,
394 lws_ring_consume(pss->mi->ring, &pss->tail, NULL, 1);
399 if (lws_ring_get_count_waiting_elements(pss->mi->ring,
417 __mirror_update_worst_tail(pss->mi);
420 lws_pthread_mutex_unlock(&pss->mi->lock); /* } instance lock */
424 lws_pthread_mutex_unlock(&pss->mi->lock); /* } instance lock */
429 lws_pthread_mutex_lock(&pss->mi->lock); /* mi lock { */
430 n = (int)lws_ring_get_count_free_elements(pss->mi->ring);
433 if (pss->mi->rx_enabled)
434 __mirror_rxflow_instance(pss->mi, 0);
446 if (!lws_ring_insert(pss->mi->ring, &amsg, 1)) {
449 if (pss->mi->rx_enabled)
450 __mirror_rxflow_instance(pss->mi, 0);
454 if (pss->mi->rx_enabled &&
455 lws_ring_get_count_free_elements(pss->mi->ring) <
457 __mirror_rxflow_instance(pss->mi, 0);
460 __mirror_callback_all_in_mi_on_writable(pss->mi);
463 lws_pthread_mutex_unlock(&pss->mi->lock); /* } mi lock */