FreeBSD/sys/dev/ipmi/ipmi.c
/* Store a processed request on the appropriate completion queue. */
Store a processed request on the appropriate completion queue.
Store a processed request on the appropriate completion queue .
void
ipmi_complete_request(struct ipmi_softc *sc, struct ipmi_request *req)
{
	struct ipmi_device *dev;
	IPMI_LOCK_ASSERT(sc);
	if (req->ir_owner == NULL)
		wakeup(req);
	else {
		dev = req->ir_owner;
		TAILQ_INSERT_TAIL(&dev->ipmi_completed_requests, req, ir_link);
		selwakeup(&dev->ipmi_select);
		if (dev->ipmi_closing)
			wakeup(&dev->ipmi_requests);
	}
}
void ipmi_complete_request ( struct ipmi_softc * sc , struct ipmi_request * req ) { struct ipmi_device * dev ; IPMI_LOCK_ASSERT ( sc ) ; if ( req -> ir_owner == NULL ) wakeup ( req ) ; else { dev = req -> ir_owner ; TAILQ_INSERT_TAIL ( & dev -> ipmi_completed_requests , req , ir_link ) ; selwakeup ( & dev -> ipmi_select ) ; if ( dev -> ipmi_closing ) wakeup ( & dev -> ipmi_requests ) ; } }
Store a processed request on the appropriate completion queue.
Store a processed request on the appropriate completion queue .
/*
	 * Anonymous requests (from inside the driver) always have a
	 * waiter that we awaken.
	 */