|
|
Debug only
Unfreezes a code segment, data segment, or virtual address (range) in memory.
Syntax
UFC logaddr [bytelength] Program file
UFCG logaddr [bytelength] Group library
UFCP logaddr [bytelength] Account library
UFCLG logaddr Logon group library
UFCLP logaddr Logon account library
UFCS logaddr [bytelength] System library
UFCU fname logaddr [bytelength] User library
UFCA cmabsaddr Absolute CST
UFCAX cmabsaddr Absolute CSTX
UFDA dst.off CM data segment
UFVA virtaddr [bytelength] Virtual address
These unfreeze commands actually decrement a system freeze count. The segment
or pages may remain frozen if their freeze count is still positive.
Parameters
- logaddr
A full logical code address (LCPTR) specifies three necessary
items:
The logical code file (PROG, GRP, SYS, and so on).
NM: the virtual space ID number (SID).
CM: the logical segment number.
NM: the virtual byte offset within the space.
CM: the word offset within the code segment.
Logical code addresses can be specified in various levels of detail:
As a full logical code pointer (LCPTR):
- UFC procname+20
Procedure name lookups return LCPTRs.
- UFC pw+4
Predefined ENV variables of type LCPTR.
- UFC SYS(2.200)
Explicit coercion to a LCPTR type.
As a long pointer (LPTR):
- UFC 23.2644
sid.offset or seg.offset
The logical file is determined based on the command suffix. For
example:
As a short pointer (SPTR):
- UFC 1024
offset only
For NM, the short pointer offset is converted to a long pointer using the
function STOLOG, which looks up the SID of the loaded
logical file. This is different from the standard short to long pointer
conversion, STOL, which is based on the current space registers
(SRs).
For CM, the current executing logical segment number and the current
executing logical file are used to build a LCPTR.
The search path used for procedure name lookups is based on the command
suffix letter:
- UFC
Full search path:
NM: PROG, GRP, PUB, USER(s), SYS.
CM: PROG, GRP, PUB, LGRP, LPUB, SYS.
- UFCG
Search GRP, the group library.
- UFCP
Search PUB, the account library.
- UFCLG
Search LGRP, the logon group library.
- UFCLP
Search LPUB, the logon account library.
- UFCS
Search SYS, the system library.
- UFCU
Search USER, the user library.
For a full description of logical code addresses, refer to the section
"Logical Code Addresses" in chapter 2.
- fname
The file name of the NM USER library. Multiple NM libraries can be
bound with the XL= option on a RUN command, for example:
:run nmprog; xl=lib1,lib2.testgrp,lib3
In this case, it is necessary to specify the desired NM USER library,
for example:
UFCU lib1 204c
UFCU lib2.testgrp test20+1c0
If the file name is not fully qualified, the following defaults are used:
- cmabsaddr
A full CM absolute code address specifies three necessary items:
Either the CST or the CSTX.
The absolute code segment number.
The CM word offset within the code segment.
Absolute code addresses can be specified in two ways:
The search path used for procedure name lookups is based on the command
suffix letter:
- UCA
GRP, PUB, LGRP, LPUB, SYS
- UCAX
PROG
- dst.off
A data segment address (specified as dst.offset) of
the data segment to be unfrozen in memory (see the FDA
command).
- virtaddr
The starting virtual address of the page(s) that are to be unfrozen in
memory. (Refer to the FVA command.) Virtaddr can
be a short pointer, a long pointer, or a full logical code pointer.
- bytelength
This parameter is valid only for nmdebug. It is the desired number of
bytes to be unfrozen. Based on the starting virtual address and the
specified bytelength, the appropriate number of virtual
pages are unfrozen. If omitted, four bytes is used as a default. The
implementation of this command dictates that the smallest unit that is
actually frozen is one page of virtual memory. That is, if you say one
byte, the whole page on which that byte resides is made resident.
Examples
%cmdebug > ufc sys(12.0)
Unfreeze CM logical code segment SYS %12.
$nmdebug > ufva 22.104, 1000
Unfreeze 1000 bytes starting at virtual address 22.104.
Limitations, Restrictions
none
|