void psmx2_eq_enqueue_event(struct psmx2_fid_eq *eq, struct psmx2_eq_event *event) { fastlock_acquire(&eq->lock); if (event->error) slist_insert_tail(&event->list_entry, &eq->error_queue); else slist_insert_tail(&event->list_entry, &eq->event_queue); fastlock_release(&eq->lock); if (eq->wait) psmx2_wait_signal((struct fid_wait *)eq->wait); }
static int psmx2_cntr_set(struct fid_cntr *cntr, uint64_t value) { struct psmx2_fid_cntr *cntr_priv; cntr_priv = container_of(cntr, struct psmx2_fid_cntr, cntr); cntr_priv->counter = value; psmx2_cntr_check_trigger(cntr_priv); if (cntr_priv->wait) psmx2_wait_signal((struct fid_wait *)cntr_priv->wait); return 0; }