[Bluez-devel] Re: read_RSSI and others not thread-safe?

Stefan Mischke
2004-10-08T14:48:56Z

I looked into the code and I think the problem is somewhere inside of
bluez-libs' "hci_send_req()". The connection handle field of the events
are not compared to the one from the request. Actually, this should be
no problem since there shold be some kind of pre-filtering inside the
kernel by the hci socket. I don't know. It doesn't seem to happen with
l2cap and so I'll use the "synchronized" workaround (which costs a
little performance). But if someone finds the problem, I'm interested in it.

Regards
Stefan

Stefan Mischke schrieb:

> Hello!
>
> I've written a small JBlueZ-like JNI-Library which gives Java access
> to BlueZ. My demo application has one threads for each connection (two
> at the moment) which concurrently do read_RSSI,
> read_Transmit_Power_Level and read_Link_Quality. If by random two
> threads do one, two or all three of these calls at the same time, the
> result values are equal (although they can't be since one connection
> is really bad). This doesn't happen if I declace the three functions
> "synchronized" in the Java part of the JNI. But this should not be
> necessary, should it? Since my functions only use by-value parameters
> and local variables, they should be thread-safe. I also figured out
> that the BlueZ sockets in these calls are unequal, but the result
> (RSSI value) is equal. Why can this happen?
>
> I wonder if this could also occour on one of the other, more important
> functions like l2cap_read/write. Any idea? Thanks!
>
> Regards
> Stefan
>
>