Path: utzoo!news-server.csri.toronto.edu!rutgers!ukma!seismo!uunet!richsun!cpg.trs.reuter.com!allyn From: allyn@cpg.trs.reuter.com (Allyn Barnett) Newsgroups: comp.unix.aix Subject: Re: vn_ routines Message-ID: <1562@richsun.cpg.trs.reuter.com> Date: 14 Mar 91 17:05:54 GMT References: <1991Mar8.002636.4940@nmt.edu> <5849@awdprime.UUCP> <1991Mar14.013705.18876@nmt.edu> Sender: news@richsun.cpg.trs.reuter.com Reply-To: allyn@cpg.trs.reuter.com (Allyn Barnett) Organization: Reuters Trading Room Systems, Core Products Group Lines: 67 In article <1991Mar14.013705.18876@nmt.edu>, rmilner@zia.aoc.nrao.edu (Ruth Milner) writes: |> In article <5849@awdprime.UUCP> rudy@chukran.austin.ibm.com () writes: |> >In article <1991Mar8.002636.4940@nmt.edu>, rmilner@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@cpg.trs.reuter.com Reuters/Rich Trading Room Systems 1400 Kensington Rd Oak Brook, IL 60521 USA