vn_ routines

Allyn Barnett allyn at cpg.trs.reuter.com
Fri Mar 15 03:05:54 AEST 1991


In article <1991Mar14.013705.18876 at nmt.edu>, rmilner at zia.aoc.nrao.edu
(Ruth Milner) writes:
|> In article <5849 at awdprime.UUCP> rudy at chukran.austin.ibm.com () writes:
|> >In article <1991Mar8.002636.4940 at nmt.edu>, rmilner at zia.aoc.nrao.edu
|> >(Ruth Milner) writes:
|> >> 
|> >> Does anyone know where all the vn_ routines are kept? Only two of
them are
|> >> described as "kernel services", the rest are all "subroutines".
But ld can't
|> >> find them in the standard libraries, and despite doing "ar t" on
all the .a
|> >> files in /lib and /usr/lib, none of them show up anywhere.
|> >These routines are in the kernel.  To resolve them at link time, you
need to 
|> >add the following option to your link command.
|> >
|> >-bI:/lib/kernex.exp
|> >
|> 
|> Uh, no, not quite. We already found that file, and only the two which are 
|> described as "kernel services" in the documentation (vn_get and vn_free)
|> are in /lib/kernex.exp. Even when that kernel services file is imported into
|> ld, numerous symbols remain undefined, e.g. vn_create, vn_open, vn_close,
|> etc. etc. There's about a dozen or so of them described in the man pages
|> which are completely unknown. These are the ones listed as "subroutines".
|> 
|> In addition, if you read the documentation (even hardcopy stuff on writing
|> kernel code), it specifically says "the six kernel services" related to
|> virtual filesystem handling - and then proceeds to list the six of which, 
|> again, only two are vn_ routines, the same two. None of the rest are
included
|> in any other list of kernel services, even the purely alphabetical one.
|> 
|> So there is either considerable misinformation, or considerable missing 
|> information.  
|> 
|> Maybe they are kernel services after all, but if so, nothing in either the
|> system or the documentation knows that. In which case, how do we get hold
|> of them? And why are they specifically called "subroutines" as distinct from
|> "kernel services"?


Just because a symbol is no listed in a *.exp file does not mean that the 
service is not provided.  I found this out while trying to use kernel socket
services (socreate, sobind, etc.).  I found that the routines were available
in the kernel by running nm on the kernel and greping for the desired symbol.

So how did I get my code to link? I created my own .exp file and included
the required symbols.  Of course this might be dangerous if for example the
kernel services use a different parameter set and you don't have the
documentation to tell you that.  But with the kind of support that I have
gotten from IBM, experimentation may be your only option.

By the way, after I was able to make this work, I got the doc from for those
kernel services from Austin.  I was told that the reason that I had not been
made generally available was because they didn't have the staff to support it.
I believe them.

------------------------------------------------------------------------
My opinions are just that.  The facts are the facts.  You figure out
which is which.
------------------------------------------------------------------------
Allyn Barnett					allyn at cpg.trs.reuter.com
Reuters/Rich Trading Room Systems
1400 Kensington Rd
Oak Brook, IL  60521  USA



More information about the Comp.unix.aix mailing list