T.R | Title | User | Personal Name | Date | Lines |
---|
514.1 | SB --> DDB --> UCB | CXCAD::VENNER | Missed it by that much ... | Tue Jul 21 1987 17:56 | 13 |
|
re: 514.0
i think the SHOW DEV command of VMS runs in executive mode
and starts at SCS$GQ_CONFIG. it then scans through a linked
list of system blocks which each have a linked list of device
data blocks which each have a linked list of unit control blocks.
this should find you every type of device attached to a cluster
i believe.
- marty
|
514.2 | More info on I/O database | VICKI::CAMPANELLA | Michael Campanella, DTN 261-2595 | Mon Aug 10 1987 14:38 | 8 |
| Where would I find the offsets for the fields in UCB's and DDB's?
These are things such as DDB$L_LINK, DDB$L_UCB, ...
PASTOOLS suggests getting them from LIB.MLB (in text form) and writing
a program to interpret the output. I'd rather not do this if there
is another way.
Michael
|
514.3 | $xxxDEF | MADMAC::BONGARTZ | Happy Hacker | Wed Aug 12 1987 04:41 | 16 |
| re: .2
You can easily get these symbols defined by inserting the
following in your (macro) program:
.library /sys$library:lib/
$UCBDEF ; define all UCB$... symbols
$DDBDEF ; same for DDB$...
If you want to see the actual macro text to these macros,
do a $ libr/extr=$xxxDEF/macro/out=TT: sys$library:lib
Hope that helps...
Marc.
|
514.4 | a picture is worth... | SQM::RICO | | Thu Aug 13 1987 22:32 | 9 |
| There is also a tool (called PICTURE maybe?) that will take
the output of a $xyzDEF and draw you a pictue of the associated
data structure(s). Also sometimes the $xyzDEF macros are in
STARLET. I have a simple com file that checks STARLET, then LIB,
for a particular macro.
Check out the toolshed, METOO::SW_TOOLS_CATALOG I believe.
Rico
|
514.5 | SHOW DEV on a cluster!!! | VICKI::CAMPANELLA | Michael Campanella, DTN 261-2595 | Thu Aug 20 1987 17:17 | 9 |
| I wrote a program to go thru the I/O database (WHAT's SHOW DEV command
does the same thing too), however I am not finding all the devices
that SHOW DEV of VMS finds (and neither does WHAT). The I/O database
has devices like MBA1:, PEA0:, DUA1:... while SHOW DEV (on a LAVC)
reports MBA1:, PEA0:, SPENDR$DUA1:, JAWA$DUA1:...
Where is this info, in a cluster data structure somewhere?
Michael Campanella
|
514.6 | Scs$gq_config ? | IOSG::BAILEY | DO: $CMKRNL_S Routin=Hack... | Thu Aug 20 1987 18:18 | 11 |
| I th��ink the problem is that you are not finding
cluster wide devices, Do you start to scan the IO database
at IOC$GL_DEVLIST ? is so you should start at SCS$GQ_CONFIG,
this is the cluster block, which in turn points at a block
(CLU ?) for each node, that in turn points at a IOC$GL_DEVLIST
for e��ach node, there is an example of this in the code
in the note about what files has a user opened (the 'what'lock
program
Peter Bailey
|
514.7 | Sorry but I had to ask | STKEIS::LJONSSON | | Wed Nov 25 1987 13:49 | 8 |
| I hate to join in a high level intellectual discussion like this with
a question that will bring it down to a rather more elementary level,
but that is exactly what I am about to attempt to do.
How does one go about scaning the I/O database in the first place?
/Lars Jonsson
|
514.8 | I/O scanning example | CXCAD::VENNER | You're joking ... right?! | Wed Nov 25 1987 15:35 | 53 |
|
as a sample of a bliss program that does some scanning of the
I/O data base you can look at the following routine. for this
routine to work it should be run in executive mode ($CMEXEC).
it finds all the disks in a cluster.
- marty
--------------------------------------------------------------------------
ROUTINE foo =
BEGIN
EXTERNAL SCS$GQ_CONFIG;
OWN
sb_addr,
ddb_addr,
ucb_addr;
sb_addr = .SCS$GQ_CONFIG;
while (.sb_addr NEQ SCS$GQ_CONFIG) do
BEGIN
BIND sb_blk = .sb_addr : block[SB$C_LENGTH, byte];
ddb_addr = .sb_blk[SB$L_DDB];
while (.ddb_addr NEQ 0) do
BEGIN
BIND ddb_blk = .ddb_addr : block[DDB$C_LENGTH, byte];
ucb_addr = .ddb_blk[DDB$L_UCB];
while (.ucb_addr NEQ 0) do
BEGIN
BIND ucb_blk = .ucb_addr : block[UCB$C_LCL_DISK_LENGTH, byte];
if (.ucb_blk[UCB$B_DEVCLASS] EQL DC$_DISK) then
BEGIN
! PUT SOME USEFUL CODE HERE
END;
ucb_addr = .ucb_blk[UCB$L_LINK];
END;
ddb_addr = .ddb_blk[DDB$L_LINK];
END;
sb_addr = .sb_blk[SB$L_FLINK];
END;
RETURN 1;
END;
|
514.9 | BLISS?!?!? | STKEIS::LJONSSON | | Thu Nov 26 1987 12:03 | 8 |
|
Thank for the BLISS program! Unfortunately I don't know the first
thing about BLISS. I was wondering if you could either show me a MACRO
version of the same program or just simply explain (in broad terms) what
your routine actually does.
/Lars Jonsson
|
514.10 | | MARVIN::WARWICK | DNA puts life into your network | Thu Nov 26 1987 13:02 | 10 |
|
Try reading the "Guide to writing a Device Driver for VAX/VMS" (one
of those orange manuals on your shelf) to get some details about
what data structures are in the "I/O database".
What this program does is to look through the database looking for
Unit Control Blocks with a device class of "Disk".
Trev
|
514.11 | | CSSAUS::HUNTER | Monkey with a diagnostic track | Thu Nov 26 1987 16:11 | 1 |
| If you want assembler from Bliss then compile it.
|
514.12 | linked lists | CXCAD::VENNER | You're joking ... right?! | Mon Nov 30 1987 12:33 | 11 |
|
i'd hoped that the routine wouldn't necessarily require a
BLISS programmer to decipher. it just shows the linked
list structures that you have to go through in order to
obtain information on disks.
the program would probably look very similar in PASCAL or C
or FORTRAN ...
- marty
|
514.13 | what a bunch of wimps | PSW::WINALSKI | Paul S. Winalski | Sun Dec 06 1987 19:11 | 4 |
| And you guys call yourselves hackers? Quit whining about what language the
program is written in and go decipher it.
--PSW
|