Commit 0ee0d77d authored by Marcel Holtmann's avatar Marcel Holtmann

[Bluetooth] Use wait_event_interruptible_timeout()

Use wait_event_interruptible_timeout() instead of custom wait
queue code.
Signed-off-by: default avatarNishanth Aravamudan <nacc@us.ibm.com>
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
parent dea9f2aa
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
#include <linux/socket.h> #include <linux/socket.h>
#include <linux/ioctl.h> #include <linux/ioctl.h>
#include <linux/file.h> #include <linux/file.h>
#include <linux/wait.h>
#include <net/sock.h> #include <net/sock.h>
#include <linux/isdn/capilli.h> #include <linux/isdn/capilli.h>
...@@ -440,10 +441,8 @@ static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_ ...@@ -440,10 +441,8 @@ static void cmtp_register_appl(struct capi_ctr *ctrl, __u16 appl, capi_register_
static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl) static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl)
{ {
DECLARE_WAITQUEUE(wait, current);
struct cmtp_session *session = ctrl->driverdata; struct cmtp_session *session = ctrl->driverdata;
struct cmtp_application *application; struct cmtp_application *application;
unsigned long timeo = CMTP_INTEROP_TIMEOUT;
BT_DBG("ctrl %p appl %d", ctrl, appl); BT_DBG("ctrl %p appl %d", ctrl, appl);
...@@ -458,20 +457,8 @@ static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl) ...@@ -458,20 +457,8 @@ static void cmtp_release_appl(struct capi_ctr *ctrl, __u16 appl)
cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum, cmtp_send_interopmsg(session, CAPI_REQ, application->mapping, application->msgnum,
CAPI_FUNCTION_RELEASE, NULL, 0); CAPI_FUNCTION_RELEASE, NULL, 0);
add_wait_queue(&session->wait, &wait); wait_event_interruptible_timeout(session->wait,
while (timeo) { (application->state == BT_CLOSED), CMTP_INTEROP_TIMEOUT);
set_current_state(TASK_INTERRUPTIBLE);
if (application->state == BT_CLOSED)
break;
if (signal_pending(current))
break;
timeo = schedule_timeout(timeo);
}
set_current_state(TASK_RUNNING);
remove_wait_queue(&session->wait, &wait);
cmtp_application_del(session, application); cmtp_application_del(session, application);
} }
...@@ -541,9 +528,8 @@ static int cmtp_ctr_read_proc(char *page, char **start, off_t off, int count, in ...@@ -541,9 +528,8 @@ static int cmtp_ctr_read_proc(char *page, char **start, off_t off, int count, in
int cmtp_attach_device(struct cmtp_session *session) int cmtp_attach_device(struct cmtp_session *session)
{ {
DECLARE_WAITQUEUE(wait, current);
unsigned long timeo = CMTP_INTEROP_TIMEOUT;
unsigned char buf[4]; unsigned char buf[4];
long ret;
BT_DBG("session %p", session); BT_DBG("session %p", session);
...@@ -552,30 +538,17 @@ int cmtp_attach_device(struct cmtp_session *session) ...@@ -552,30 +538,17 @@ int cmtp_attach_device(struct cmtp_session *session)
cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM, cmtp_send_interopmsg(session, CAPI_REQ, 0xffff, CMTP_INITIAL_MSGNUM,
CAPI_FUNCTION_GET_PROFILE, buf, 4); CAPI_FUNCTION_GET_PROFILE, buf, 4);
add_wait_queue(&session->wait, &wait); ret = wait_event_interruptible_timeout(session->wait,
while (timeo) { session->ncontroller, CMTP_INTEROP_TIMEOUT);
set_current_state(TASK_INTERRUPTIBLE);
if (session->ncontroller)
break;
if (signal_pending(current))
break;
timeo = schedule_timeout(timeo);
}
set_current_state(TASK_RUNNING);
remove_wait_queue(&session->wait, &wait);
BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name); BT_INFO("Found %d CAPI controller(s) on device %s", session->ncontroller, session->name);
if (!timeo) if (!ret)
return -ETIMEDOUT; return -ETIMEDOUT;
if (!session->ncontroller) if (!session->ncontroller)
return -ENODEV; return -ENODEV;
if (session->ncontroller > 1) if (session->ncontroller > 1)
BT_INFO("Setting up only CAPI controller 1"); BT_INFO("Setting up only CAPI controller 1");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment