[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bluetooth-dev] queue_task() problems



I'm porting the bluetooth stack to a Linux system with an old
proprietary USB stack.

My problem is that hci.c at various places uses
queue_task(...,&tq_scheduler) to schedule functions that transmit data
to the Bluetooth device. Functions scheduled in this way will be
called by schedule(). But this gives problems if the underlying device
driver (in my case a USB driver) itself modifies current->state and
calls schedule(), which will then get called recursively.

So my question is:

* Why is queue_task() used instead of calling the transmit function
  directly?

* If __KERNEL__ is not defined, the transmit functions *are* called
  directly. Would it be safe to do that also when __KERNEL__ is
  defined?

--
Claus Tondering

-
To unsubscribe from this list: send the line "unsubscribe bluetooth-dev" in
the body of a message to majordomo@xxxxxxx.com