Print

Print


On Mon, 11 Oct 2004, Alasdair Allan wrote:

> > > > Not sure what the background is, and I've never really looking into
> > > > JNI, but why does JNI need access to anything other than the top
> > > > level monolith entry points:
> > > >
> > > >       SUBROUTINE NDFPACK_MON( STATUS )
> > > > etc (plus of course various PCS systems)?
> > >
> > > Not the way Alan's done it anyway, for instance,
> > >
> > >
> > > JNIEXPORT jint JNICALL
> > >    Java_uk_ac_starlink_kappa_KAPPA_jnidisplay(
> > >      JNIEnv *env, jobject obj, jobject pl, jobject tmsg ) {
> > >
> > >    int status;
> > >
> > >    status = 0;
> > >
> > > DEB("Activating SUBPAR\n");
> > >    subpar_activ( env, obj, pl, tmsg, &status );
> > >
> > >    ndfBegin();
> > >
> > > DEB("Calling adamtest\n");
> > >    F77_CALL(display)( INTEGER_ARG(&status) );
> >
> > OK. So he's gone one layer further down to the atask subroutines. So the
> > only public contract which this depends on is the name of the
> > applications (e.g. "display"). Seems reasonable.
>
> *nod*
>
> I think it's a reasonable approach, although someone with more JNI
> experience (Mark!) might disagree!? Looking at the hand written bits and
> pieces it looks moderately easy to write some perl (or something) to
> autogenerate JNI wrappers for each task at this level which is what I was
> mostly concered about.

That sounds all right to me.  I was perhaps being a bit paranoid about
public APIs - if libkappa is not installed then mucking about with it
_can't_possibly_ break any non-KAPPA components.  If it's installed on
the understanding that only the A-task routines will be called then
in practice modifying it won't break non-KAPPA components - fair enough.
Most likely I've been living in Javaland too long and got used to the
secure feeling that JVM-enforced private/package-private access
restrictions give you.

Mark

--
Mark Taylor    Starlink Programmer     Physics,  Bristol University, UK
[log in to unmask] +44-117-928-8776 http://www.star.bris.ac.uk/~mbt/