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