Display memory lock information records.
Note:
This command was implemented by feature 82818 for the ALLSTRICT and HSTRICT kernels only. It is not available is either of the GA versions for OS/2 Warp V3.0 or OS/2 V2.11.
After OS/2 Warp V3.0 fix pack 40 and OS/2 Warp V4.0 fix pack 10 .MK may be enabled under the RETAIL kernel by means of the LOCKS option of the RASKDATA CONFIG.SYS statement..
Under the ALLSTRICT and HSTRICT kernels .MK may be disabled by specifying the NLOCKS option of the RASKDATA statement.
Syntax:
────.MK ────┬────────────────────┬──────────────────────────── └── hob ────┬────────┤ └── Ln ──┘
Parameters:
none
Results & Notes:
Lock information records are maintained for outstanding memory locks in memory lock information records (VMLIs) which are located at the address given by global variable:
_pVMLIHead
When a memory lock request is successfully executed a lock handle is returned to the caller for later use when unlocking memory. The lock handle normally resides in the caller's storage. It comprises a concatenation of:
the requestor's hptda
the hob whose pages are being locked
the page number
the number of pages
request flags
In addition a check-sum or signature is calculated from these values and stored with the lock handle.
The VMLI is a copy of the constituents of the lock handle that resides in system memory.In addition it includes:
the requestor's return address
a pointer to the next VMLI
a pointer to the requestor's lock handle
The .MK command formats the contents of the VMLI then re-calculates the signature. The calculated and saved signatures should be identical.
Next the lock handle is accessed. If it differs from the corresponding VMLI then it too is formatted and the signature is re-calculated and displayed. If either the formatted lock handle and corresponding VMLI or the calculated and extracted signatures disagree then a problem may be indicated. For example, an overlayed or freed lock handle. However, there is no requirement for lock requestors to retain their lock handles in their original locations.
Warning:
Prior to fix pack 29 for Warp V3, the Kernel Debugger can trap when attempting to format lock handles from freed memory. This is fixed in the Kernel Debugger and incorporated into the Dump Formatter in defect 155843 from fix pack 29 for Warp V3 and base Warp V4.
Note:
When feature 82818 is present VMLI records are automatically formatted when displaying memory object records with locked pages, using the .MO command.
Output from the .MK command appears as follows:
--------------------------------------------------------------------------- ##.mk pvmli cs eip phlock cpg va flg hptda hob sig csig %fe679f1c 0170 fffa015d %fd17d480 0001 %013f1000 0003 0091 0424 18aa 18aa %fe68a1dc 0170 fffa015d %fd17d468 0001 %013f1000 0003 0091 0424 18aa 18aa %fe74539c 0170 fff3e551 %ffe006ff 0002 %fff33000 0001 02f7 0016 0252 0252 %fe712c54 0170 fff3e551 %ffe00577 0003 %fff38000 0001 02f7 0016 0258 0258 %fe761e0c 0908 00000878 %7b6b7d0c 0001 %ffee9000 0005 0091 0190 011f 011f 0000 %4c800000 0ff0 0001 0000 0000 d7f5 %fe777e18 0908 00000841 %7b6b7d0c 0006 %ffeea000 0005 0091 0227 01bc 01bc 0000 %4c800000 0ff0 0001 0000 0000 d7f5 %fe777e3c 0908 00000809 %7b6b7d0c 0001 %ffef0000 0005 0091 022c 01c2 01c2 0000 %4c800000 0ff0 0001 0000 0000 d7f5 %fe777e60 0908 0000072b %7c224066 0002 %17c40000 0005 0091 0199 7e72 7e72 %fe777e84 0908 0000072b %7c224058 0001 %7a022000 0001 0091 0168 a224 a224 %fe777ef8 0908 000006ee %7c22403c 0001 %7a022000 0001 0091 0168 a224 a224 %fe777f28 0908 000006ee %7c22404a 0002 %17c80000 0005 0091 0196 7eaf 7eaf %fe777f4c 0908 000000a5 %7c22402e 0001 %fe763000 0005 0091 0003 e80c e80c ---------------------------------------------------------------------------
The field headings have the following meaning:
pvmli
A blank value indicates information from the lock handle is being formatted, because it does not agree with the corresponding VMLI. See note above.
If the lock request was made by a 16-bit caller then the 16-bit far return address is contained with in the eip only and the cs value is the next word from the stack following the return address.
A blank value indicates information from the lock handle is being formatted, because it does not agree with the corresponding VMLI. See note above.
The following bit settings are defined:
┌──────────┬────────────────────────────────────────┐ │Bit value │Description │ ├──────────┼────────────────────────────────────────┤ ├──────────┼────────────────────────────────────────┤ │0x01 │Lock is a long-term │ ├──────────┼────────────────────────────────────────┤ │0x02 │Verify lock call │ ├──────────┼────────────────────────────────────────┤ │0x04 │Lock originated from a DevHlp │ └──────────┴────────────────────────────────────────┘hptda
For related information see also the Virtual Memory Lock Trace.