× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



From: Douglas Handy <dhandy1@bellsouth.net>
> So what you are saying is the TDE is accessible from user state,
> if you can find it.

To give you a feeling for what is involved, the following shows
how to find the TDE and the clock count. (I have a vague recollection
of having shown this before - maybe it is in the archives?).

You start with your PCO (I show actually the page that begins
on a page boundary (32 bytes before the PCO)):

Address DFAAECE6F2 000000
000000  00020008 00810001  D41FFCB0 04000000
...
The address (not the pointer) here points to the Process
Control Space for your process:

Address D41FFCB004 000000
000000  00010008 00800001  D41FFCB0 04000000
000010  00010000 00000000  DFAAECE6 F2000020
000020  00001AEF D8D7C1C4  C5E5F0F0 F0F1D3E2
QPADEV0001LS
000030  E5C1D3C7 C1C1D9C4  F0F0F8F3 F2F74040
VALGAARD008327
...
000100  D7D46DD5 D9D7D9C3  C00000BC 6C20F100  PM_NRPRC

at offset x108 you'll find the address to a control block for your process
down in the hypervisor:

Address C00000BC6C 20F100
20F100  D7D46D6D D9D7D9C3  D41FFCB0 04000100
20F110  B0006000 0B441BC0  00000000 C9000000    <===
...
a further 16 bytes on, you'll find the to a field inside the TDE:

Address B00060000B 441BC0
441BC0  D7D46D6D D9D3E6D7  D9E574CB 7B000370
441BD0  C00000BC 6C20F100  00000000 00000000
441BE0  B0006000 0B441000  00000000 00000000  <===
...
32 bytes further on, you'll find the address of the TDE itself:

Address B00060000B 441000  <=== TDE
441000  D4C9E3C8 D9C5C1C4  D41FFCB0 04000000
MITHREAD
441010  00000000 0003D9D7  B0006000 0B441858
441020  B0006000 0B441180  B0006000 0B4412E0
441030  B0006000 0B441A50  B0006000 0B4418A0
441040  B0006000 0B441550  00000000 00000000
441050  B0006000 0B441400  B0006000 0B441B28
441060  00000000 00000000  B0006000 0B441B10
441070  B0006000 0B441790  B0006000 0B4417A0
441080  D00001FF 0CD8D8A4  FFFFFFFF FE9CA1B4
441090  FA51A6C2 76000100  00000000 00000000
4410A0  00000000 00000000  00000000 00000000
4410B0  00000000 00000000  00000000 00000000
4410C0  000078FA 7A23C24A  000078FA 7A23E918
4410D0  00000000 D27652BE  000078FA 7A188BDE
4410E0  00000000 A0A0A0A0  00000000 A0000000
4410F0  003AAD9C 003AB006  01000000 01010000
441100  000078FA BF48C509  <=== clock count
...

To follow addresses instead of pointers you need the MIMAKPTR
program from my book, or the DIAGnose instruction, or some
other voodoo.

To find the PCS for another job, you can walk the Work
Control Blocks (see chapter 9).
All this is not hard, but still not for the weak at heart.

The clock count is the number of CPU cycles since the
last IPL, so you need to calibrate that to turn it into
a timestamp or a time that you can use. This is also not
hard, but again not your everyday stuff.






As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.