[comp.os.vms] lnm tables

jdc@beach.cis.ufl.edu.UUCP (11/24/87)

     I have been trying to use logical names in separate job tables and this
     works fine for the processes that use that job table.  Any other process
     which has access to the LNM$JOB_xxxxxxxx table cannot translate the
     logical name unless it knows what the name of the table is.  The only
     way I can think of finding out the "logical name table tree" for a given
     process is to use SHOW LOGICAL/Structure and route the output to a file
     and then scan it for job tables.  Is there an easier way to do this?
     I can't even use the $TRNLNM service to use a wildcard in the field for
     logical name.  Wildcards can be used on $GETJPI but not on log names.

     If anyone has any suggestions I would greatly appreciate it.  Please
     don't tell me to use the system table because this has to be done from
     a regular user account.  It would be nice to have SYSNAM... but...

     Thanks in advance...
--
Jeff Capehart 		Internet: micronaut%oak.decnet@pine.circa.ufl.edu
University of Florida	UUCP:	  ..!ihnp4!codas!ufcsv!beach.cis.ufl.edu!jdc	

gary@tsc.UUCP (Gary Upchurch) (11/25/87)

Use the group tables. Since it sounds like all the users are in the same UIC
group, this will allow all the users in the group access to any of the logicals
in the table. But, if the user wants to redefine the logical he still can
since it will only affect his process. 

-- 
	Gary Upchurch                                Life's a virgin;
        UUCP - decwrl!csc32.dec.com!g_upchurch       if it was a bitch,
	ARPA - g_upchurch@csc32.dec.com              It would be easy.
	       g_upchurch%csc32.dec@decwrl.dec.com

jdc@beach.cis.ufl.edu.UUCP (11/30/87)

     Using the group table would not do the trick because I am looking
     for more than just the users in my group to have access to the table.
     It would be nice if I could set an ACL on the table but I do not have
     the privileges either to set an ACL or to put my logical name in the
     group table.  What I would like is for there to be some possibly non-
     documented field for $GETJPI which would return the name of the job 
     table associated with the process.  It sounds reasonable, there is
     a field for MASTER_PID, so why not for the job table too?

     Basically all I want is to know what the name of the job table for
     some process not in the current process tree.  Is it possible to
     do this?  SHOW LOG/structure can do it, how does it know?  Can I
     get access to the same information without CMKRNL priv?


--
Jeff Capehart 		Internet: micronaut%oak.decnet@pine.circa.ufl.edu
University of Florida	UUCP:	  ..!ihnp4!codas!ufcsv!beach.cis.ufl.edu!jdc	

rrk@byuvax.bitnet (12/02/87)

I believe the name of the JOB logical name table is constructed from the
JOB header address, which (I believe) IS available through GETJPI.  Just
get it and do a FAO on a control string like "LNM$JOB_!XL".

mbr@beta.UUCP (Mike Rose) (12/03/87)

In article <37rrk@byuvax.bitnet> rrk@byuvax.bitnet writes:
>I believe the name of the JOB logical name table is constructed from the
>JOB header address, which (I believe) IS available through GETJPI.  Just
>get it and do a FAO on a control string like "LNM$JOB_!XL".

Currently the name of the job logical name table is 
built using the address of the Job Information Block (JIB),
as described above.  Unfortunately this is not available 
from $getjpi.  If you really want it, the JIB address is 
stored in the PCB at offset PCB$L_JIB.

I don't think DEC has stated officially that the jib
address is, and will continue to be, used to build
the name of the job logical name table.  I doubt that 
they have.  It seems a reasonable choice to me, except
for it not being available from $getjpi.  It might be 
like pid's: they provide a number (or in this case a 
name) and you make assumptions about how they generate 
that name at your own risk.  This should certainly be a 
consideration for programs with a long expected lifetime.

I missed the original posting on this.  Why is the name 
of the job table needed?

Mike Rose

jdc@beach.cis.ufl.edu.UUCP (12/07/87)

In response to my original question about the name of the job table,
mbr@beta.UUCP writes:
>... If you really want it, the JIB address is stored in the PCB
>at offset PCB$L_JIB.

Well, I really do want it!  I think many people here have gotten a bit too
comfortable with all their privs.  I am forced to use the JOB table because
there is NO other table to which I have access to write other than my own.
Because it is possible to set ACL's on job tables, it would be really nice
if there were a way to fetch the name of the table also.  I don't have any
of these wonderful privs SYSNAM, GRPNAM, CMKRNL, SYSPRV, so it is very
difficult to extract the name of a foreign processes job table name.  I
also don't have GROUP or WORLD priv so I am even limited to my own tables.

A nice feature available in SHOW is the SHOW LOGICAL /STRUCTURE command
which will show all the tables currently accessible.  I bet any system
manager doesn't use this a lot because it might be a few pages long...
Users, on the other hand, only get the standard ones... proc, job, group, sys

I tried using the offset, I am not sure but I think the explicit address
that I got was %x80135430 (which was not the table name either) but I had
no read access to that area of virtual memory.  I hope DEC straightens some
things out.  I don't understand what was wrong with using the top level
process on the process tree PID ... that would be unique wouldn't it?

I am still wondering about how to get it, through some table lookup or
a system service.  JPI would be nice, but if there are other ways, please
let me know.  Thanks, I appreciate all the replys on this topic!!

--
Jeff Capehart 		Internet: micronaut%oak.decnet@pine.circa.ufl.edu
University of Florida	UUCP:	  ..!ihnp4!codas!ufcsv!beach.cis.ufl.edu!jdc