[kaffe] kaffe JNI Problem
Godmar Back
gback@stanford.edu
Mon, 24 Jun 2002 18:00:41 -0600 (MDT)
>
> Hello,
>
> I have following JNI problem with the Kaffe:
>
> I run from my C-code a kernel process. With other JVM it works
> correctly, the user application waits, up to kernel process will be
> ended. Kaffe doesn't wait. Example,
>
> info = hci_inquiry(peer->devid, inqSecs, &noDevs, NULL, 0); //a kernel
> process. It takes 30 sec
>
> kaffe doesn't wait. In one second an error will be printed.
>
> if (info == NULL) {
> error (env,"Delay ???");
> return NULL;
> }
>
>
> What is wrong ???
>
Nothing, presumably. In general, you can't expect JNI code that was
written for one JVM to work with another JVM.
I would guess that hci_inquiry relies on being blocked in a system
call and doesn't handle the EINTR properly, which it will invariably get
from the various SIGs ordered by Kaffe's jthreads.
You can either port your application's system calls to use the jsyscall
interface, or you can try to use kaffe with native threads (don't know
the current status of that - and it would still be iffy), or you can try
to avoid the problem altogether by doing your C activities in a different
process and communicating through standard pipes/sockets - if your OS
supports that and if you don't have performance constraints
then I would recommend going that path. (You don't have performance
constraints, otherwise you would be using Kaffe...)
- Godmar