On 9/26/06, Evgueni Brevnov <[EMAIL PROTECTED]> wrote:

On 9/27/06, Andrey Chernyshev <[EMAIL PROTECTED]> wrote:
> (3)
> One more lock is added - hythread_lib_lock. How is that differ from
> the hythread_global_lock that we already have? Each extra lock to the
> system may add more possibilities for deadlocks, as well as can
> negatively impact the scalability (unless some of the existing locks
> are split).
hythread_lib_lock acquires exactly the same lock as
hythread_global_lock. Probably I miss something but we need to be
compatible with IBM threading library now. This library has such
function. That's why I added it. Sounds right?


Well,  this sort of, kind of sounds right but not quite.  Its a little more
subtle than being compatible with IBM threading library.  The first goal is
to identify the parts of IBM threading library that are JVM independent.  It
makes sense for DRLVM to be compatible with the independent parts.   This
should be a nobrainer.

The parts of IBM threading library that assume a specific JVM implementation
will be a problem.  We will need to find a solution that is endorsed by all
the stakeholders (including J9 folks).  The hythread_global_lock falls into
this category.  For starts, I would like to see a concise description from
the portlib owners on what hythread_global_lock protects, which locks have
to be held before grabbing this lock, are there any restrictions on what
system calls can be made while holding this lock (like sleep or wait), etc.

To get a better idea what's in the patch.diff, I printed it out.  Its 120+
pages.  Quite a big patch!  Most of it looks like straight forward JNI
interface glue.  There are some tricky parts.  I would like to know the
design review process for these parts.  Using grep, I found 20 locations
where ...suspend_enable... and ...suspend_disable... have been added.  And
25 locations where enable/disable have been removed.  Failure in this logic
can lead to incorrect reference pointer enumeration.  These are probably the
hardest bugs to find.  Please tell us who has looked at this code in depth.
Are there any known design flaws in it?

I also notice APIs called tmn_suspend_enable(), hythread_suspend_enable()
-- are these simply different names for the same binary executible.  Or
different binaries that do the same thing??


--
Weldon Washburn
Intel Middleware Products Division

Reply via email to