rq->callback_data = &wq; rc = raw3270_start(view, rq); if (rc) return rc;  wait_event(wq, raw3270_request_final(rq)); return rq->rc;
rq->callback_data = &fp->wait;  do { if (!fs3270_working(fp)) {  rc = wait_event_interruptible(fp->wait, fs3270_working(fp)); if (rc != 0) break; } rc = raw3270_start(view, rq); if (rc == 0) {  wait_event(fp->wait, raw3270_request_final(rq)); } } while (rc == -EACCES); return rc;
fs3270_do_io(struct raw3270_view *view, struct raw3270_request *rq){	wait_queue_head_t wq;	int rc;	init_waitqueue_head(&wq);	rq->callback = fs3270_wake_up;	rq->callback_data = &wq;	rc = raw3270_start(view, rq);	if (rc)		return rc;	/* Started sucessfully. Now wait for completion. */	wait_event(wq, raw3270_request_final(rq));	return rq->rc;}