New native layer

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

 



On Jan 31, 2006, at 3:51 PM, Dalibor Topic wrote:

> On Tue, 2006-01-31 at 22:00 +0100, Roman Kennke wrote:
>>  Granted,
>> Aicas is a commercial party and cannot publish every port. There  
>> is also
>> Kaffe, which is 100% GPL and now also suggest something similar  
>> like the
>> target layer, only somewhat nicer, and again it seems to turn out  
>> to be
>> a fight against windmills.
>
> A major issue is that for green threads (i.e. jthreads) in Kaffe, we'd
> have to make sure that we can disable interrupts before invoking a
> system method, and enable them before we exit again. If we don't do
> that, than bad things can (and do ;) happen.
>
> That's a pretty Kaffe-specific need, though, so it may not make  
> sense to
> make room for it in GNU Classpath, unless it is accompanied by some
> other, instant gratification, like looking very much like plain old
> POSIX. In theory, if we're lucky, Kaffe may also be able to get by  
> using
> AspectC++[1] or something equivalently weird to weave in the stuff we
> need for jthreads. In practice, I don't think anyone has done  
> something
> like that yet, though. ;)
>

Would it help to have a utility function, say as a private function  
in the JNIEnv, that told the VM that the code was entering or just  
exited a possibly-blocking system call? Which, in the default  
implementation for other VMs or threading systems, would be a no-op?

E.g.:

   void EnterSystemCall (JNIEnv *env, void *address);
   void ExitSystemCall (JNIEnv *env, void *address);

This would (I think) be a good place for Kaffe to disable whatever  
interrupts it had to, and would still be a generic-enough mechanism  
for a VM to keep track of where the native code is. We would need to  
find all the right places to call this, but I don't think that's much  
harder than rewriting everything with wrapper functions, and it would  
be extensible -- anything added that Kaffe needed to tweak on before  
calling would be made safe, as long as the usage was consistent.


[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux