On Tue, Oct 25, 2016 at 08:38:21PM +0530, Binoy Jayan wrote: > On 25 October 2016 at 18:13, Jack Wang <xjtuwjp@xxxxxxxxx> wrote: > > Hi Binoy, > > > > snip > >> > >> port->ib_dev = device; > >> port->port_num = port_num; > >> - sema_init(&port->sm_sem, 1); > >> + init_completion(&port->sm_comp); > >> + complete(&port->sm_comp); > > > > Why complete here? > > > >> mutex_init(&port->file_mutex); > >> INIT_LIST_HEAD(&port->file_list); > >> > > KR, > > Jinpu > > > Hi Jack, > > ib_umad_sm_open() calls wait_for_completion_interruptible() which > comes before ib_umad_sm_close() that calls complete(). In the > initial open() there will not be anybody to signal the completion, > so the complete is called to mark the initial state. I am not sure > if this is the right way to do it, though. Using a completion to model exclusive ownership seems convoluted to me - is that a thing now? What about an atomic? open: while (true) { wait_event_interruptible(priv->queue,test_bit(CLAIMED_BIT, &priv->flags)); if (!test_and_set_bit(CLAIMED_BIT, &priv->flags)) break; } close(): clear_bit(CLAIMED_BIT, &priv->flags) wake_up(&priv->queue); ?? Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html