|
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 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.