home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 29 Fixes_o / 29-Fixes_o.zip / t2zip_k.zip / THESEUS2.INF (.txt) < prev    next >
OS/2 Help File  |  1994-12-19  |  416KB  |  14,004 lines

  1.  
  2. ΓòÉΓòÉΓòÉ <hidden> Alias Record ΓòÉΓòÉΓòÉ
  3.  
  4. There is an alias record for each memory object which has more than one Arena 
  5. Record referring to it. The handle of the alias record is a hal. 
  6.  
  7.  
  8. ΓòÉΓòÉΓòÉ <hidden> Arena ΓòÉΓòÉΓòÉ
  9.  
  10. An arena maps a linear address space by way of a doubly linked circular chain 
  11. of arena records. Each arena starts with a sentinel record. There are three 
  12. separate arenas associated with each process: 
  13.  
  14.  private  Maps the linear address space unique to that process. This memory 
  15.           holds EXE files and memory objects allocated using the DosAllocMem 
  16.           function. 
  17.  shared   Maps the linear address space shared by all the processes. This 
  18.           memory holds DLL files and memory objects allocated using the 
  19.           DosAllocSharedMem function. 
  20.  system   Maps the linear address space which belongs to the OS/2 system. 
  21.  
  22.  
  23. ΓòÉΓòÉΓòÉ <hidden> Arena Record ΓòÉΓòÉΓòÉ
  24.  
  25. There is an arena record for each memory object that has linear address space 
  26. allocated to it. The handle of the arena record is a har. The arena records are 
  27. arranged in arenas. 
  28.  
  29.  
  30. ΓòÉΓòÉΓòÉ <hidden> Claimable Page ΓòÉΓòÉΓòÉ
  31.  
  32. A claimable page is one that is not marked present in a particular Page Table 
  33. Entry, however, the page is present. On the first reference to the page, the 
  34. page will simply be marked "present". 
  35.  
  36.  
  37. ΓòÉΓòÉΓòÉ <hidden> Clean Page ΓòÉΓòÉΓòÉ
  38.  
  39. A clean page is one that has not been written to in RAM since being loaded from 
  40. disk. 
  41.  
  42.  
  43. ΓòÉΓòÉΓòÉ <hidden> Committed Memory ΓòÉΓòÉΓòÉ
  44.  
  45. Committed memory is memory that has been both allocated and committed. 
  46. Committed memory has an entry in the Virtual Page Table and can be "backed" by: 
  47.  
  48.  o A page of real RAM 
  49.  o A page of DASD in the SWAPPER.DAT file 
  50.  o A page of a program file 
  51.  o Nothing. 
  52.  
  53.  
  54. ΓòÉΓòÉΓòÉ <hidden> Context ΓòÉΓòÉΓòÉ
  55.  
  56. Many memory objects are associated with a particular OS/2 process. The context 
  57. of a memory object refers to the process with which it is associated. 
  58.  
  59.  
  60. ΓòÉΓòÉΓòÉ <hidden> Context Record ΓòÉΓòÉΓòÉ
  61.  
  62. There is a context record for each process that can access a particular memory 
  63. object in the shared arena. The handle of the context record is a hco. 
  64.  
  65.  
  66. ΓòÉΓòÉΓòÉ <hidden> Description in English ΓòÉΓòÉΓòÉ
  67.  
  68. Memory objects are "described" in several of the THESEUS2 displays as follows: 
  69.  
  70.  Description   Meaning 
  71.  module_name #nnnn 
  72.                The memory object is part of a module. The module is named and 
  73.                the nnnn is the object/segment number within the module. The 
  74.                object/segment type (code or data) is shown. If the 
  75.                object/segment is data, it is indicated whether it is shared or 
  76.                private. (If the object/segment table is swapped out, then the 
  77.                object/segment number is FFFF.) 
  78.  module_name allocated it 
  79.                The memory object was allocated by the named module using one of 
  80.                the Dos... functions. 
  81.  string (owner) 
  82.                The memory object is part of the Operating System. The kernel 
  83.                "subsystem" is named in string. This was decoded using the 
  84.                "owner" field of the Object Record. 
  85.  string (hmte [system owner]) 
  86.                The memory object is part of the Operating System. The kernel 
  87.                "subsystem" is named in string. This was decoded using the 
  88.                "hmte" field of the Object Record. 
  89.  
  90.  
  91. ΓòÉΓòÉΓòÉ <hidden> Dirty Page ΓòÉΓòÉΓòÉ
  92.  
  93. A dirty page is one that has been written to in RAM, but not yet written to the 
  94. SWAPPER.DAT file. 
  95.  
  96.  
  97. ΓòÉΓòÉΓòÉ <hidden> DTE ΓòÉΓòÉΓòÉ
  98.  
  99. A DTE, or Descriptor Table Entry, is an entry in a Descriptor Table (GDT, LDT, 
  100. or IDT). It includes the linear address and size of a segment. 
  101.  
  102.  
  103. ΓòÉΓòÉΓòÉ <hidden> Exit List ΓòÉΓòÉΓòÉ
  104.  
  105. The list of routines that are to be executed when a process ends. 
  106.  
  107.  
  108. ΓòÉΓòÉΓòÉ <hidden> File Handle ΓòÉΓòÉΓòÉ
  109.  
  110. The handle of a file. There are process handles which are unique for a process 
  111. and system handles which are common across the entire system. 
  112.  
  113.  
  114. ΓòÉΓòÉΓòÉ <hidden> Flat Address ΓòÉΓòÉΓòÉ
  115.  
  116. A flat address is a virtual offset. Because the selector registers (loaded by 
  117. the operating system) have a base address of 00000000, flat is equivalent to 
  118. linear. 
  119.  
  120.  
  121. ΓòÉΓòÉΓòÉ <hidden> Fonts ΓòÉΓòÉΓòÉ
  122.  
  123. Fonts control the shapes and sizes of the characters being displayed. Only 
  124. monospace fonts (all characters the same width) can be used by THESEUS2. Only 
  125. display fonts can be selected in THESEUS2. Printer fonts cannot be changed by 
  126. THESEUS2. 
  127.  
  128.  
  129. ΓòÉΓòÉΓòÉ <hidden> Free Page ΓòÉΓòÉΓòÉ
  130.  
  131. A free page is a page of RAM not currently in use. However, it may be allocated 
  132. by the Page Manager and associated with a memory object. 
  133.  
  134.  
  135. ΓòÉΓòÉΓòÉ <hidden> GDT ΓòÉΓòÉΓòÉ
  136.  
  137. The Global Descriptor Table contains the descriptor table entries for selectors 
  138. that can be accessed by any process. 
  139.  
  140.  
  141. ΓòÉΓòÉΓòÉ <hidden> Handle ΓòÉΓòÉΓòÉ
  142.  
  143. Within the OS/2 system, a handle is used to refer from one control block to 
  144. another, without using the actual address. A handle is normally a 16-bit word. 
  145.  
  146.  
  147. ΓòÉΓòÉΓòÉ <hidden> hal ΓòÉΓòÉΓòÉ
  148.  
  149. The handle of an alias record is a hal. 
  150.  
  151.  
  152. ΓòÉΓòÉΓòÉ <hidden> har ΓòÉΓòÉΓòÉ
  153.  
  154. The handle of an arena record is a har. 
  155.  
  156.  
  157. ΓòÉΓòÉΓòÉ <hidden> hco ΓòÉΓòÉΓòÉ
  158.  
  159. The handle of a context record is a hco. 
  160.  
  161.  
  162. ΓòÉΓòÉΓòÉ <hidden> hmte ΓòÉΓòÉΓòÉ
  163.  
  164. The handle of an MTE is a hmte. 
  165.  
  166.  
  167. ΓòÉΓòÉΓòÉ <hidden> hob ΓòÉΓòÉΓòÉ
  168.  
  169. The handle of an object record is a hob. 
  170.  
  171.  
  172. ΓòÉΓòÉΓòÉ <hidden> Hyperblock Links ΓòÉΓòÉΓòÉ
  173.  
  174. Hyperblock* links allow you to navigate from one control block to another by 
  175. using the mouse to select the address of the block to be viewed. A hyperblock 
  176. link is denoted by its different color. The color of the links can be changed 
  177. with the `Link' color option of the Misc menu in the Process Hierarchy window. 
  178.  
  179.  
  180. ΓòÉΓòÉΓòÉ <hidden> Idle Page ΓòÉΓòÉΓòÉ
  181.  
  182. An idle pages is a page that has not been recently used. The Page Ager program 
  183. runs when the number of free pages becomes small. Idle pages are placed on the 
  184. idle list before being removed from the system. 
  185.  
  186.  
  187. ΓòÉΓòÉΓòÉ <hidden> IDT ΓòÉΓòÉΓòÉ
  188.  
  189. The Interrupt Descriptor Table contains the descriptor table entries for 
  190. selectors used to execute the proper interrupt routine. 
  191.  
  192.  
  193. ΓòÉΓòÉΓòÉ <hidden> LDT ΓòÉΓòÉΓòÉ
  194.  
  195. The Local Descriptor Table contains the descriptor table entries for selectors 
  196. that can be accessed by a single process. There is one for each process. 
  197.  
  198.  
  199. ΓòÉΓòÉΓòÉ <hidden> Linear Address ΓòÉΓòÉΓòÉ
  200.  
  201. A linear address is the intermediate result when the CPU is resolving memory 
  202. addresses. They are represented by THESEUS2 as llllllll (in hexadecimal 
  203. notation). 
  204.  
  205.  
  206. ΓòÉΓòÉΓòÉ <hidden> Locked Page ΓòÉΓòÉΓòÉ
  207.  
  208. A locked page is a page of RAM that has been locked with the DevHlp_Lock... 
  209. function. It may be locked either long term or short term. 
  210.  
  211.  
  212. ΓòÉΓòÉΓòÉ <hidden> Memory Leak ΓòÉΓòÉΓòÉ
  213.  
  214. When a program allocates memory and then does not free it, that program is said 
  215. to be "leaking memory." 
  216.  
  217.  
  218. ΓòÉΓòÉΓòÉ <hidden> Memory Object ΓòÉΓòÉΓòÉ
  219.  
  220. A memory object is the logical allocation unit of memory. Applications allocate 
  221. memory objects using the DosAllocMem or DosAllocSharedMem functions. 
  222.  
  223.  
  224. ΓòÉΓòÉΓòÉ <hidden> MTE ΓòÉΓòÉΓòÉ
  225.  
  226. An MTE, or Module Table Entry, is an in-memory description of an executable 
  227. module. The handle of an MTE is an hmte. 
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ <hidden> Object Record ΓòÉΓòÉΓòÉ
  231.  
  232. There is an object record for each memory object in the system. Most objects 
  233. are real objects and associated with arena records, containing a linear 
  234. address. However, some objects are pseudo-objects, and the linear address is in 
  235. the object record. The handle of an object record is a hob. 
  236.  
  237.  
  238. ΓòÉΓòÉΓòÉ <hidden> Owner ΓòÉΓòÉΓòÉ
  239.  
  240. All allocated memory has an owner. For system memory, that owner is a 
  241. hexadecimal value, starting with hex FF. Each sub-system in the kernel has one 
  242. or more unique values for keeping track of allocated memory. For private 
  243. memory, the owner is the hob of a PTDA or MTE. For shared memory, the owner may 
  244. be either a system owner value, the hob of a PTDA, or the hob of an MTE. The 
  245. owner value is in the object record. 
  246.  
  247.  
  248. ΓòÉΓòÉΓòÉ <hidden> Page Directory ΓòÉΓòÉΓòÉ
  249.  
  250. The Page Directory is the first-level address translation table used by the 
  251. hardware to map a linear address to a physical address. The entries in the Page 
  252. Directory point to Page Tables. 
  253.  
  254.  
  255. ΓòÉΓòÉΓòÉ <hidden> Page Frame Table ΓòÉΓòÉΓòÉ
  256.  
  257. The Page Frame Table has an entry for each page in the physical address space. 
  258. This space includes all the real RAM in the machine, the I/O RAM space, and the 
  259. ROM space. This table keeps track of the contents of each physical page. 
  260.  
  261.  
  262. ΓòÉΓòÉΓòÉ <hidden> Page Table ΓòÉΓòÉΓòÉ
  263.  
  264. The Page Table is the second-level address translation table used by the 
  265. hardware to map a linear address to a physical address. The entries in the Page 
  266. Directory point to Page Tables, which in turn point to pages of physical RAM. 
  267.  
  268.  
  269. ΓòÉΓòÉΓòÉ <hidden> PDE ΓòÉΓòÉΓòÉ
  270.  
  271. A PDE, or Page Directory Entry, contains the physical address of a particular 
  272. Page Table. 
  273.  
  274.  
  275. ΓòÉΓòÉΓòÉ <hidden> Physical Address ΓòÉΓòÉΓòÉ
  276.  
  277. A physical address is the final result when the CPU is resolving memory 
  278. addresses. They are used to address the memory chips. They are represented by 
  279. THESEUS2 as pppppppp (in hexadecimal notation). 
  280.  
  281.  
  282. ΓòÉΓòÉΓòÉ <hidden> Physical Memory ΓòÉΓòÉΓòÉ
  283.  
  284. The physical memory in the machine is referenced by a physical address. (As 
  285. opposed to virtual memory.) 
  286.  
  287.  
  288. ΓòÉΓòÉΓòÉ <hidden> PID ΓòÉΓòÉΓòÉ
  289.  
  290. The process ID is a 16-bit number that uniquely identifies an OS/2 process. 
  291.  
  292.  
  293. ΓòÉΓòÉΓòÉ <hidden> Popup Menu ΓòÉΓòÉΓòÉ
  294.  
  295. A popup menu is activated by a single-click of mouse button 2 or by pressing 
  296. the Shift-F10 key sequence. A popup menu appears next to the item selected. 
  297.  
  298.  
  299. ΓòÉΓòÉΓòÉ <hidden> Present Pages ΓòÉΓòÉΓòÉ
  300.  
  301. Present pages are those pages currently in RAM. 
  302.  
  303.  
  304. ΓòÉΓòÉΓòÉ <hidden> Process ΓòÉΓòÉΓòÉ
  305.  
  306. In the OS/2 system, processes are the owners of resources. One or more 
  307. cooperating processes make up each application. Each process takes its name 
  308. from EXE file it is associated with. Each process is uniquely identified within 
  309. the OS/2 system by its PID. 
  310.  
  311. (In other systems, processes are called "tasks.") 
  312.  
  313.  
  314. ΓòÉΓòÉΓòÉ <hidden> Process Page Directory ΓòÉΓòÉΓòÉ
  315.  
  316. Each process is associated with a Process Page Directory. This directory 
  317. contains the PDEs for the first 512MB of linear address space. The Process Page 
  318. Directory is copied into the first 128 entries of the System Page Directory 
  319. when the process is dispatched. 
  320.  
  321.  
  322. ΓòÉΓòÉΓòÉ <hidden> Pseudo-Objects ΓòÉΓòÉΓòÉ
  323.  
  324. Pseudo-objects are areas of memory allocated from kernel heap space. Because 
  325. they have hobs, they can be accessed the same way as normal memory objects. 
  326. MTEs and PTDAs are pseudo-objects. 
  327.  
  328.  
  329. ΓòÉΓòÉΓòÉ <hidden> PTDA ΓòÉΓòÉΓòÉ
  330.  
  331. The PTDA, or Per Task Data Area, describes the resources owned by a process. 
  332.  
  333.  
  334. ΓòÉΓòÉΓòÉ <hidden> PTE ΓòÉΓòÉΓòÉ
  335.  
  336. The PTE, or Page Table Entry, contains the physical address of a page. 
  337.  
  338.  
  339. ΓòÉΓòÉΓòÉ <hidden> RAM ΓòÉΓòÉΓòÉ
  340.  
  341. RAM, or Random Access Memory, is the modifiable memory in the computer used by 
  342. programs. See Physical Memory. 
  343.  
  344.  
  345. ΓòÉΓòÉΓòÉ <hidden> Resident Pages ΓòÉΓòÉΓòÉ
  346.  
  347. Resident pages are pages of RAM that cannot be swapped.  They must remain in 
  348. RAM at all times until freed. 
  349.  
  350.  
  351. ΓòÉΓòÉΓòÉ <hidden> ROM ΓòÉΓòÉΓòÉ
  352.  
  353. ROM, or Read Only Memory, is the unchangeable memory in the computer used by 
  354. permanent programs. See Physical Memory. 
  355.  
  356.  
  357. ΓòÉΓòÉΓòÉ <hidden> SFT ΓòÉΓòÉΓòÉ
  358.  
  359. The System File Table entry contains information about each unique instance of 
  360. an open file. 
  361.  
  362.  
  363. ΓòÉΓòÉΓòÉ <hidden> Swappable Pages ΓòÉΓòÉΓòÉ
  364.  
  365. Swappable pages are pages of RAM that can be swapped. They may be in RAM or on 
  366. disk. 
  367.  
  368.  
  369. ΓòÉΓòÉΓòÉ <hidden> Swapped Pages ΓòÉΓòÉΓòÉ
  370.  
  371. Swapped pages are those pages currently in the SWAPPER.DAT file. 
  372.  
  373.  
  374. ΓòÉΓòÉΓòÉ <hidden> SWAPPER.DAT ΓòÉΓòÉΓòÉ
  375.  
  376. The SWAPPER.DAT file is the disk file where pages are kept after being swapped 
  377. out. 
  378.  
  379.  
  380. ΓòÉΓòÉΓòÉ <hidden> System Page Directory ΓòÉΓòÉΓòÉ
  381.  
  382. The System Page Directory is the page directory which is pointed to by the 
  383. processors' Control Register 3. 
  384.  
  385.  
  386. ΓòÉΓòÉΓòÉ <hidden> TCB ΓòÉΓòÉΓòÉ
  387.  
  388. The TCB, or Thread Control Block, contains information unique to a thread. 
  389.  
  390.  
  391. ΓòÉΓòÉΓòÉ <hidden> Thread ΓòÉΓòÉΓòÉ
  392.  
  393. A thread is the dispatchable entity within the OS/2 system. A thread is 
  394. identified within a process by its TID. It is uniquely identified within the 
  395. OS/2 system by a thread number. 
  396.  
  397.  
  398. ΓòÉΓòÉΓòÉ <hidden> Thread Number ΓòÉΓòÉΓòÉ
  399.  
  400. A thread number is the system wide unique identifier for a thread. A thread 
  401. number is used within the OS/2 dispatcher, for example. Do not confuse the 
  402. thread number with thread ID. 
  403.  
  404.  
  405. ΓòÉΓòÉΓòÉ <hidden> TIB ΓòÉΓòÉΓòÉ
  406.  
  407. The TIB, or Thread Information Block, contains information about the currently 
  408. running thread and is accessible by the application program. 
  409.  
  410.  
  411. ΓòÉΓòÉΓòÉ <hidden> TID ΓòÉΓòÉΓòÉ
  412.  
  413. The TID, or Thread ID, is a 16-bit number that uniquely identifies a thread 
  414. within a process. 
  415.  
  416.  
  417. ΓòÉΓòÉΓòÉ <hidden> TSD ΓòÉΓòÉΓòÉ
  418.  
  419. The TSD, or Thread Swappable Data, is the portion of a thread control block 
  420. that is swappable. 
  421.  
  422.  
  423. ΓòÉΓòÉΓòÉ <hidden> TSS ΓòÉΓòÉΓòÉ
  424.  
  425. The TSS, or Task State Segment, is a 386 control block used by the processor to 
  426. control its multi-tasking functions. 
  427.  
  428.  
  429. ΓòÉΓòÉΓòÉ <hidden> UVirt Page ΓòÉΓòÉΓòÉ
  430.  
  431. A UVirt page is a page that has been defined by a device driver or the kernel 
  432. by using one of their special functions. The device driver function is 
  433. DevHlp_PhysToUVirt. The "physical address" in the Page Table Entry may not 
  434. point to a real page of RAM. It may point to an I/O adapter card or some other 
  435. "pseudo-memory." 
  436.  
  437.  
  438. ΓòÉΓòÉΓòÉ <hidden> Virtual Address ΓòÉΓòÉΓòÉ
  439.  
  440. Virtual addresses have both selectors and offsets. They are represented by 
  441. THESEUS2 as ssss:oooo or ssss:oooooooo (selector:offset) (all in hexadecimal 
  442. notation). 
  443.  
  444.  
  445. ΓòÉΓòÉΓòÉ <hidden> Virtual Memory ΓòÉΓòÉΓòÉ
  446.  
  447. Virtual memory is memory as seen by the program. It is referenced by a virtual 
  448. address or a flat address. (As opposed to physical memory.) 
  449.  
  450.  
  451. ΓòÉΓòÉΓòÉ <hidden> Virtual Page Table ΓòÉΓòÉΓòÉ
  452.  
  453. The Virtual Page Table keeps track of committed memory. This table contains an 
  454. entry for each page of committed memory. 
  455.  
  456.  
  457. ΓòÉΓòÉΓòÉ <hidden> Working Set ΓòÉΓòÉΓòÉ
  458.  
  459. The working set is the set of memory (pages) referenced in the last n time 
  460. intervals. The working set includes both resident and locked pages. 
  461.  
  462.  
  463. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  464.  
  465. References in this publication to IBM products, programs, or services do not 
  466. imply that IBM intends to make these available in all countries in which IBM 
  467. operates. 
  468.  
  469. Any reference to an IBM product, program, or service is not intended to state 
  470. or imply that only IBM's product, program, or service may be used. 
  471.  
  472. Any functionally equivalent product, program, or service that does not infringe 
  473. any of IBM's intellectual property rights or other legally protectible rights 
  474. may be used instead of the IBM product, program, or service. 
  475.  
  476. Evaluation and verification of operation in conjunction with other products, 
  477. programs, or services, except those expressly designated by IBM, are the user's 
  478. responsibility. 
  479.  
  480. IBM may have patents or pending patent applications covering subject matter in 
  481. this document.  The furnishing of this document does not give you any rights to 
  482. these patents. 
  483.  
  484. You can inquire, in writing, to the IBM Director of Commercial Relations, IBM 
  485. Corporation, Purchase, NY 10577 - USA, or to the IBM Director of Commercial 
  486. Relations, IBM World Trade Asia Corporation, IBM Kamiya-cho Building, 4-3-9 
  487. Toranomon, Minato-ku, Tokyo, Japan. 
  488.  
  489. The following terms, denoted by an asterisk (*) in this reference, are 
  490. trademarks of the IBM Corporation in the United States and/or other countries: 
  491.  
  492. IBM   THESEUS2    Operating System/2    System Performance Monitor/2
  493. Hyperblock   OS/2   SystemView   Presentation Manager   CSet/2
  494.  
  495. The following terms, denoted by a double asterisk (**) in this reference, are 
  496. trademarks of other companies as follows: 
  497.  
  498. Microsoft   Microsoft Corporation
  499.  
  500. The following paragraph does not apply to the United Kingdom or any country 
  501. where such provisions are inconsistent with local law. 
  502.  
  503. INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS INFORMATION "AS IS" 
  504. WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT 
  505. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A 
  506. PARTICULAR PURPOSE. 
  507.  
  508. Some states do not allow disclaimer of express or implied warranties in certain 
  509. transactions; therefore, this statement may not apply to you. 
  510.  
  511. This information could include technical inaccuracies or typographical errors. 
  512. Changes are periodically made to the information herein; these changes will be 
  513. incorporated in new editions of the information.  IBM may make improvements 
  514. and/or changes in the product(s) and/or the program(s) described in this 
  515. information at any time. 
  516.  
  517. It is possible that this information may contain reference to, or information 
  518. about, IBM products (machines and programs), programming, or services that are 
  519. not announced in your country.  Such references or information must not be 
  520. construed to mean that IBM intends to announce such IBM products, programming, 
  521. or services in your country. 
  522.  
  523. Requests for copies of this information and for technical information about IBM 
  524. products should be made to your IBM Authorized Dealer or your IBM Marketing 
  525. Representative. 
  526.  
  527. (C) Copyright International Business Machines Corporation 1992.  All rights 
  528. reserved. 
  529.  
  530. Note to U.S. Government Users:  Documentation and programs related to 
  531. restricted rights.  Use, duplication, or disclosure is subject to restrictions 
  532. set forth in GSA ADP Schedule Contract with IBM Corp. 
  533.  
  534.  
  535. ΓòÉΓòÉΓòÉ 2. Introduction ΓòÉΓòÉΓòÉ
  536.  
  537. THESEUS2* is a memory analysis program for the OS/2* 2.x system to: 
  538.  
  539.   1. look at selected machine registers and control blocks (formatted) 
  540.   2. look at selected OS/2 system control blocks (formatted) 
  541.   3. look at application memory (in hexadecimal notation) 
  542.   4. determine the amount of memory consumed by each active process. 
  543.  
  544.  THESEUS2 uses two classes of windows: 
  545.  
  546.  Process Hierarchy     Shows the hierarchy of processes as they currently exist 
  547.                        in memory. There is only 1 window of this class. 
  548.  Detail                Shows information about specific areas in either the 
  549.                        OS/2 system or application memory. There can be up to 16 
  550.                        windows of this class. 
  551.  
  552.  Other topics include: 
  553.  
  554.  Demonstration               demonstrating some of THESEUS2's functions 
  555.  How to use THESEUS2         understanding how to use THESEUS2 
  556.  Memory Explanations         understanding how memory is managed in OS/2 2.x 
  557.  Glossary                    meanings of terms. 
  558.  
  559.  
  560. ΓòÉΓòÉΓòÉ 3. Who Was Theseus? ΓòÉΓòÉΓòÉ
  561.  
  562. Theseus (pronounced Thee'-see-us) was one of the Attic heroes of Greek 
  563. mythology. According to legend, he was one of the young Greeks chosen to be 
  564. sacrificed to the Minotaur, the mythical half man/half bull confined in the 
  565. Labyrinth. Instead, Theseus killed the Minotaur. One of the local girls, 
  566. Ariadne, gave him a thread, which he used to mark his trail into and out of the 
  567. Labyrinth. He then married Ariadne and they sailed off into the sunset. 
  568.  
  569. The analogy of the labyrinth is appropriate, because assigning memory to a user 
  570. in the OS/2 environment is quite complex, much like the Labyrinth of old. 
  571. However, this program knows its way through the labyrinth and can assist you in 
  572. determining the amount of memory used by your programs. 
  573.  
  574.  
  575. ΓòÉΓòÉΓòÉ 4. A Short Demonstration ΓòÉΓòÉΓòÉ
  576.  
  577. THESEUS2 is totally different from THESEUS*. THESEUS2 is a PM windowed 
  578. application with hyperblock linking between the OS/2 control blocks. To try it 
  579. out: 
  580.  
  581.   1. Bring up THESEUS2. 
  582.   2. Select the Registers pull-down. 
  583.   3. Select Control Registers. 
  584.   4. Double-click mouse button 1 while pointing at the GDT base value (which is 
  585.      in green). 
  586.   5. What you are seeing is the formatted GDT. 
  587.   6. Close that window. 
  588.   7. Double-click mouse button 2 while pointing at the GDT base value (which is 
  589.      in green). 
  590.   8. What you are seeing is a "description" of the GDT memory object. 
  591.   9. Press the F1 key to obtain a help panel that explains what you are looking 
  592.      at. 
  593.  
  594.  
  595. ΓòÉΓòÉΓòÉ 5. Glossary ΓòÉΓòÉΓòÉ
  596.  
  597.  Word       Definition 
  598.  Alias Record There is an alias record for each memory object which has more 
  599.             than one Arena Record referring to it. The handle of the alias 
  600.             record is a hal. 
  601.  Arena      An arena maps a linear address space by way of a doubly linked 
  602.             circular chain of arena records. Each arena starts with a sentinel 
  603.             record. There are three separate arenas associated with each 
  604.             process: 
  605.  
  606.     private  Maps the linear address space unique to that process. This memory 
  607.              holds EXE files and memory objects allocated using the DosAllocMem 
  608.              function. 
  609.     shared   Maps the linear address space shared by all the processes. This 
  610.              memory holds DLL files and memory objects allocated using the 
  611.              DosAllocSharedMem function. 
  612.     system   Maps the linear address space which belongs to the OS/2 system. 
  613.  Arena Record There is an arena record for each memory object that has linear 
  614.             address space allocated to it. The handle of the arena record is a 
  615.             har. The arena records are arranged in arenas. 
  616.  Claimable Page A claimable page is one that is not marked present in a 
  617.             particular Page Table Entry, however, the page is present. On the 
  618.             first reference to the page, the page will simply be marked 
  619.             "present". 
  620.  Clean Page A clean page is one that has not been written to in RAM since being 
  621.             loaded from disk. 
  622.  Committed Memory Committed memory is memory that has been both allocated and 
  623.             committed. Committed memory has an entry in the Virtual Page Table 
  624.             and can be "backed" by: 
  625.  
  626.     o A page of real RAM 
  627.     o A page of DASD in the SWAPPER.DAT file 
  628.     o A page of a program file 
  629.     o Nothing. 
  630.  Context    Many memory objects are associated with a particular OS/2 process. 
  631.             The context of a memory object refers to the process with which it 
  632.             is associated. 
  633.  Context Record There is a context record for each process that can access a 
  634.             particular memory object in the shared arena. The handle of the 
  635.             context record is a hco. 
  636.  Description in English Memory objects are "described" in several of the 
  637.             THESEUS2 displays as follows: 
  638.  
  639.     Description   Meaning 
  640.     module_name #nnnn 
  641.                   The memory object is part of a module. The module is named 
  642.                   and the nnnn is the object/segment number within the module. 
  643.                   The object/segment type (code or data) is shown. If the 
  644.                   object/segment is data, it is indicated whether it is shared 
  645.                   or private. (If the object/segment table is swapped out, then 
  646.                   the object/segment number is FFFF.) 
  647.     module_name allocated it 
  648.                   The memory object was allocated by the named module using one 
  649.                   of the Dos... functions. 
  650.     string (owner) 
  651.                   The memory object is part of the Operating System. The kernel 
  652.                   "subsystem" is named in string. This was decoded using the 
  653.                   "owner" field of the Object Record. 
  654.     string (hmte [system owner]) 
  655.                   The memory object is part of the Operating System. The kernel 
  656.                   "subsystem" is named in string. This was decoded using the 
  657.                   "hmte" field of the Object Record. 
  658.  Dirty Page A dirty page is one that has been written to in RAM, but not yet 
  659.             written to the SWAPPER.DAT file. 
  660.  DTE        A DTE, or Descriptor Table Entry, is an entry in a Descriptor Table 
  661.             (GDT, LDT, or IDT). It includes the linear address and size of a 
  662.             segment. 
  663.  Exit List  The list of routines that are to be executed when a process ends. 
  664.  File Handle The handle of a file. There are process handles which are unique 
  665.             for a process and system handles which are common across the entire 
  666.             system. 
  667.  Flat Address A flat address is a virtual offset. Because the selector 
  668.             registers (loaded by the operating system) have a base address of 
  669.             00000000, flat is equivalent to linear. 
  670.  Fonts      Fonts control the shapes and sizes of the characters being 
  671.             displayed. Only monospace fonts (all characters the same width) can 
  672.             be used by THESEUS2. Only display fonts can be selected in 
  673.             THESEUS2. Printer fonts cannot be changed by THESEUS2. 
  674.  Free Page  A free page is a page of RAM not currently in use. However, it may 
  675.             be allocated by the Page Manager and associated with a memory 
  676.             object. 
  677.  GDT        The Global Descriptor Table contains the descriptor table entries 
  678.             for selectors that can be accessed by any process. 
  679.  Handle     Within the OS/2 system, a handle is used to refer from one control 
  680.             block to another, without using the actual address. A handle is 
  681.             normally a 16-bit word. 
  682.  hal        The handle of an alias record is a hal. 
  683.  har        The handle of an arena record is a har. 
  684.  hco        The handle of a context record is a hco. 
  685.  hmte       The handle of an MTE is a hmte. 
  686.  hob        The handle of an object record is a hob. 
  687.  Hyperblock Links Hyperblock* links allow you to navigate from one control 
  688.             block to another by using the mouse to select the address of the 
  689.             block to be viewed. A hyperblock link is denoted by its different 
  690.             color. The color of the links can be changed with the `Link' color 
  691.             option of the Misc menu in the Process Hierarchy window. 
  692.  Idle Page  An idle pages is a page that has not been recently used. The Page 
  693.             Ager program runs when the number of free pages becomes small. Idle 
  694.             pages are placed on the idle list before being removed from the 
  695.             system. 
  696.  IDT        The Interrupt Descriptor Table contains the descriptor table 
  697.             entries for selectors used to execute the proper interrupt routine. 
  698.  LDT        The Local Descriptor Table contains the descriptor table entries 
  699.             for selectors that can be accessed by a single process. There is 
  700.             one for each process. 
  701.  Linear Address A linear address is the intermediate result when the CPU is 
  702.             resolving memory addresses. They are represented by THESEUS2 as 
  703.             llllllll (in hexadecimal notation). 
  704.  Link       see Hyperblock Link. 
  705.  Locked Page A locked page is a page of RAM that has been locked with the 
  706.             DevHlp_Lock... function. It may be locked either long term or short 
  707.             term. 
  708.  Memory Leak When a program allocates memory and then does not free it, that 
  709.             program is said to be "leaking memory." 
  710.  Memory Object A memory object is the logical allocation unit of memory. 
  711.             Applications allocate memory objects using the DosAllocMem or 
  712.             DosAllocSharedMem functions. 
  713.  MTE        An MTE, or Module Table Entry, is an in-memory description of an 
  714.             executable module. The handle of an MTE is an hmte. 
  715.  Object Record There is an object record for each memory object in the system. 
  716.             Most objects are real objects and associated with arena records, 
  717.             containing a linear address. However, some objects are 
  718.             pseudo-objects, and the linear address is in the object record. The 
  719.             handle of an object record is a hob. 
  720.  Owner      All allocated memory has an owner. For system memory, that owner is 
  721.             a hexadecimal value, starting with hex FF. Each sub-system in the 
  722.             kernel has one or more unique values for keeping track of allocated 
  723.             memory. For private memory, the owner is the hob of a PTDA or MTE. 
  724.             For shared memory, the owner may be either a system owner value, 
  725.             the hob of a PTDA, or the hob of an MTE. The owner value is in the 
  726.             object record. 
  727.  Page Directory The Page Directory is the first-level address translation table 
  728.             used by the hardware to map a linear address to a physical address. 
  729.             The entries in the Page Directory point to Page Tables. 
  730.  Page Frame Table The Page Frame Table has an entry for each page in the 
  731.             physical address space. This space includes all the real RAM in the 
  732.             machine, the I/O RAM space, and the ROM space. This table keeps 
  733.             track of the contents of each physical page. 
  734.  Page Table The Page Table is the second-level address translation table used 
  735.             by the hardware to map a linear address to a physical address. The 
  736.             entries in the Page Directory point to Page Tables, which in turn 
  737.             point to pages of physical RAM. 
  738.  PDE        A PDE, or Page Directory Entry, contains the physical address of a 
  739.             particular Page Table. 
  740.  Physical Address A physical address is the final result when the CPU is 
  741.             resolving memory addresses. They are used to address the memory 
  742.             chips. They are represented by THESEUS2 as pppppppp (in hexadecimal 
  743.             notation). 
  744.  Physical Memory The physical memory in the machine is referenced by a physical 
  745.             address. (As opposed to virtual memory.) 
  746.  PID        The process ID is a 16-bit number that uniquely identifies an OS/2 
  747.             process. 
  748.  Popup Menu A popup menu is activated by a single-click of mouse button 2 or by 
  749.             pressing the Shift-F10 key sequence. A popup menu appears next to 
  750.             the item selected. 
  751.  Present Pages Present pages are those pages currently in RAM. 
  752.  Process    In the OS/2 system, processes are the owners of resources. One or 
  753.             more cooperating processes make up each application. Each process 
  754.             takes its name from EXE file it is associated with. Each process is 
  755.             uniquely identified within the OS/2 system by its PID. (In other 
  756.             systems, processes are called "tasks.") 
  757.  Process Page Directory Each process is associated with a Process Page 
  758.             Directory. This directory contains the PDEs for the first 512MB of 
  759.             linear address space. The Process Page Directory is copied into the 
  760.             first 128 entries of the System Page Directory when the process is 
  761.             dispatched. 
  762.  Pseudo-Object Pseudo-objects are areas of memory allocated from kernel heap 
  763.             space. Because they have hobs, they can be accessed the same way as 
  764.             normal memory objects. MTEs and PTDAs are pseudo-objects. 
  765.  PTDA       The PTDA, or Per Task Data Area, describes the resources owned by a 
  766.             process. 
  767.  PTE        The PTE, or Page Table Entry, contains the physical address of a 
  768.             page. 
  769.  RAM        RAM, or Random Access Memory, is the modifiable memory in the 
  770.             computer used by programs. See Physical Memory. 
  771.  Resident Pages Resident pages are pages of RAM that cannot be swapped.  They 
  772.             must remain in RAM at all times until freed. 
  773.  ROM        ROM, or Read Only Memory, is the unchangeable memory in the 
  774.             computer used by permanent programs. See Physical Memory. 
  775.  SFT        The System File Table entry contains information about each unique 
  776.             instance of an open file. 
  777.  Swappable Pages Swappable pages are pages of RAM that can be swapped. They may 
  778.             be in RAM or on disk. 
  779.  Swapped Pages Swapped pages are those pages currently in the SWAPPER.DAT file. 
  780.  SWAPPER.DAT The SWAPPER.DAT file is the disk file where pages are kept after 
  781.             being swapped out. 
  782.  System Page Directory The System Page Directory is the page directory which is 
  783.             pointed to by the processors' Control Register 3. 
  784.  TCB        The TCB, or Thread Control Block, contains information unique to a 
  785.             thread. 
  786.  Thread     A thread is the dispatchable entity within the OS/2 system. A 
  787.             thread is identified within a process by its TID. It is uniquely 
  788.             identified within the OS/2 system by a thread number. 
  789.  Thread Number A thread number is the system wide unique identifier for a 
  790.             thread. A thread number is used within the OS/2 dispatcher, for 
  791.             example. Do not confuse the thread number with thread ID. 
  792.  TIB        The TIB, or Thread Information Block, contains information about 
  793.             the currently running thread and is accessible by the application 
  794.             program. 
  795.  TID        The TID, or Thread ID, is a 16-bit number that uniquely identifies 
  796.             a thread within a process. 
  797.  TSD        The TSD, or Thread Swappable Data, is the portion of a thread 
  798.             control block that is swappable. 
  799.  TSS        The TSS, or Task State Segment, is a 386 control block used by the 
  800.             processor to control its multi-tasking functions. 
  801.  UVirt Page A UVirt page is a page that has been defined by a device driver or 
  802.             the kernel by using one of their special functions. The device 
  803.             driver function is DevHlp_PhysToUVirt. The "physical address" in 
  804.             the Page Table Entry may not point to a real page of RAM. It may 
  805.             point to an I/O adapter card or some other "pseudo-memory." 
  806.  Virtual Address Virtual addresses have both selectors and offsets. They are 
  807.             represented by THESEUS2 as ssss:oooo or ssss:oooooooo 
  808.             (selector:offset) (all in hexadecimal notation). 
  809.  Virtual Memory Virtual memory is memory as seen by the program. It is 
  810.             referenced by a virtual address or a flat address. (As opposed to 
  811.             physical memory.) 
  812.  Virtual Page Table The Virtual Page Table keeps track of committed memory. 
  813.             This table contains an entry for each page of committed memory. 
  814.  Working Set The working set is the set of memory (pages) referenced in the 
  815.             last n time intervals. The working set includes both resident and 
  816.             locked pages. 
  817.  
  818.  
  819. ΓòÉΓòÉΓòÉ 6. How to use THESEUS2 ΓòÉΓòÉΓòÉ
  820.  
  821. The following aspects of using THESEUS2 are explored: 
  822.  
  823.  o Hyperblock Links 
  824.  o Mouse Usage 
  825.  o Memory Analysis Using THESEUS2 
  826.  o How to Do Things with THESEUS2 
  827.  
  828.  
  829. ΓòÉΓòÉΓòÉ 6.1. Hyperblock (tm) links ΓòÉΓòÉΓòÉ
  830.  
  831. Hyperblock* links allow you to navigate from one control block to another by 
  832. using the mouse to select the address of the block to be viewed. A hyperblock 
  833. link is denoted by its different color. The color of the links can be changed 
  834. with the `Link' color option of the Misc menu in the Process Hierarchy window. 
  835.  
  836.  
  837. ΓòÉΓòÉΓòÉ 6.2. Mouse usage and item selection ΓòÉΓòÉΓòÉ
  838.  
  839. The usage of the Mouse is dependent on the context, as follows: 
  840.  
  841. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  842. ΓöéItem\Context  ΓöéMain Window   ΓöéDetail Window       ΓöéDetail Window Γöé
  843. Γöé              Γöé              Γöé(normal usage)      Γöé(selecting an Γöé
  844. Γöé              Γöé              Γöé                    Γöéarea)         Γöé
  845. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  846. ΓöéPointer       ΓöéPoints to the ΓöéPoints to the       ΓöéMarks off     Γöé
  847. Γöé              Γöédesired       Γöédesired hyperblock  Γöéopposite      Γöé
  848. Γöé              Γöéprocess.      Γöélink.               Γöécorners of theΓöé
  849. Γöé              Γöé              Γöé                    Γöéarea to be    Γöé
  850. Γöé              Γöé              Γöé                    Γöéselected.     Γöé
  851. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  852. ΓöéButton 1      ΓöéSelects the   ΓöéSelects the         ΓöéStarts/stops  Γöé
  853. Γöé(single-click)Γöéprocess that  Γöéhyperblock link thatΓöéselecting the Γöé
  854. Γöé              Γöéthe pointer isΓöéthe pointer is over.Γöéarea.         Γöé
  855. Γöé              Γöéover.         Γöé                    Γöé              Γöé
  856. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  857. ΓöéButton 1      ΓöéDisplays      ΓöéDisplays the linked Γöé              Γöé
  858. Γöé(double-click)Γöégeneral       Γöémemory object that  Γöé              Γöé
  859. Γöé              Γöéinformation   Γöéthe pointer is over.Γöé              Γöé
  860. Γöé              Γöéabout the     Γöé                    Γöé              Γöé
  861. Γöé              Γöéprocess that  Γöé                    Γöé              Γöé
  862. Γöé              Γöéthe pointer isΓöé                    Γöé              Γöé
  863. Γöé              Γöéover.         Γöé                    Γöé              Γöé
  864. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  865. ΓöéButton 2      Γöé              ΓöéDisplays a popup    Γöé              Γöé
  866. Γöé(single-click)Γöé              Γöémenu customized for Γöé              Γöé
  867. Γöé              Γöé              Γöéthe hyperblock link Γöé              Γöé
  868. Γöé              Γöé              Γöéwhich is selected.  Γöé              Γöé
  869. Γöé              Γöé              ΓöéIf there is not a   Γöé              Γöé
  870. Γöé              Γöé              Γöéhyperblock link     Γöé              Γöé
  871. Γöé              Γöé              Γöéselected, then      Γöé              Γöé
  872. Γöé              Γöé              Γöédisplays a general  Γöé              Γöé
  873. Γöé              Γöé              Γöépopup menu.         Γöé              Γöé
  874. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  875. ΓöéButton 2      Γöé              ΓöéDescribes the linkedΓöé              Γöé
  876. Γöé(double-click)Γöé              Γöémemory object that  Γöé              Γöé
  877. Γöé              Γöé              Γöéthe pointer is over.Γöé              Γöé
  878. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  879.  
  880. There is a pause between releasing mouse button 2 and the display of the popup 
  881. menu. As a result, the program can distinguish between a single-click and a 
  882. double-click. The time used is the system-maintained time for double-clicks 
  883. (SV_DBLCLKTIME). 
  884.  
  885.  
  886. ΓòÉΓòÉΓòÉ 6.3. Memory Analysis Using THESEUS2 ΓòÉΓòÉΓòÉ
  887.  
  888. We have found it necessary to look at memory usage in several different ways. 
  889. Sometimes we need to see how much memory has been allocated, sometimes we need 
  890. to see how much has been committed, sometimes we need to see how much is in 
  891. use. The various memory analysis functions of THESEUS2 were created to satisfy 
  892. these needs. 
  893.  
  894. Analysis of memory usage can be done by THESEUS2 as follows: 
  895.  
  896.  o Memory Usage for the Entire System 
  897.  o Kernel Memory Usage 
  898.  o Memory Usage by a Single Process 
  899.  o Working Set of the Entire System 
  900.  o Working Set of a Single Process 
  901.  
  902.  
  903. ΓòÉΓòÉΓòÉ 6.3.1. Memory Usage for the Entire System ΓòÉΓòÉΓòÉ
  904.  
  905. The amount of memory (RAM) consumed by each process is determined and then a 
  906. summary of consumption by all processes is displayed by the RAM Usage by 
  907. Process function. Memory is considered consumed if it is allocated and marked 
  908. present in the Page Table Entry. 
  909.  
  910. This is done for the entire system and the display includes data for all 
  911. processes. 
  912.  
  913. This gives an overall indication of memory consumption. However, since this 
  914. does not consider which pages are being used, only present, the actual amount 
  915. of memory needed by each process may be less than the amount shown. 
  916.  
  917.  
  918. ΓòÉΓòÉΓòÉ 6.3.2. Kernel Memory Usage ΓòÉΓòÉΓòÉ
  919.  
  920. The amount of memory consumed by the operating system is determined by system 
  921. owner code by the Kernel Memory Usage function. The information is displayed 
  922. sorted by system owner code. 
  923.  
  924. This is useful to determine how much memory is consumed by: 
  925.  
  926.  o Device driver allocated (owner = FF6B - allocated via devhlp AllocPhys), 
  927.    which includes any "RAM disk" allocated 
  928.  o Kernel code (owner = FFAA - os2krnl load image) 
  929.  o Any object allocated by the kernel, device drivers and IFSs. 
  930.  
  931.  
  932. ΓòÉΓòÉΓòÉ 6.3.3. Memory Usage by a Single Process ΓòÉΓòÉΓòÉ
  933.  
  934. Details about the memory usage by the selected process is displayed by the 
  935. Memory Utilization function. This data is computed as if there were no other 
  936. processes in the system. When multiple copies of a particular program are 
  937. running, each of them would show the EXE file as being consumed by that 
  938. process. 
  939.  
  940. This is done for only the selected process. Some detail for the process is 
  941. shown. 
  942.  
  943. This is useful for determining if a process is leaking memory. See Is a Process 
  944. Leaking Memory? (method 1) for a description of how to do this. 
  945.  
  946.  
  947. ΓòÉΓòÉΓòÉ 6.3.4. Working Set of the Entire System ΓòÉΓòÉΓòÉ
  948.  
  949. The working set memory utilization of the entire system can be determined by 
  950. the Working Set for the Entire System function. 
  951.  
  952. This is most useful if the working set of all the programs you normally run can 
  953. be held in RAM at the same time. 
  954.  
  955. To see how to use this function, please see: 
  956.  
  957.  o Working Set of the Entire System? 
  958.  o Working Set When it does not all fit? 
  959.  
  960.  
  961. ΓòÉΓòÉΓòÉ 6.3.5. Working Set of a Single Process ΓòÉΓòÉΓòÉ
  962.  
  963. The working set memory utilization of a single process can be determined by the 
  964. Working Set for a Single Process function. 
  965.  
  966. This is useful if you are only interested in a single process or if all of your 
  967. the programs you normally run do not fit in RAM. 
  968.  
  969. To see how to use this function, please see: 
  970.  
  971.  o Working Set of a Single Process? 
  972.  o Working Set When it does not all fit? 
  973.  
  974.  
  975. ΓòÉΓòÉΓòÉ 6.4. How to Do Things with THESEUS2 ΓòÉΓòÉΓòÉ
  976.  
  977. It is possible to do a number of different program analysis functions in 
  978. addition to the memory analysis functions. Some of them are: 
  979.  
  980.  o What is at an Address? 
  981.  o Valid Contexts for a Shared Linear Address? 
  982.  o Where is Code Loaded? 
  983.  o Is a Process Leaking Memory? (programatic method) This also includes the 
  984.    functions for determining why the SWAPPER.DAT file is continuing to increase 
  985.    in size. 
  986.  o Is a Process Leaking Memory? (old method 1) 
  987.  o Is a Process Leaking Memory? (old method 2) 
  988.  o Working Set of the Entire System? 
  989.  o Working Set of a Multi-Process Application? 
  990.  o Working Set of a Single Process? 
  991.  o Working Set When it does not all fit? 
  992.  
  993.  
  994. ΓòÉΓòÉΓòÉ 6.4.1. What is at an Address? ΓòÉΓòÉΓòÉ
  995.  
  996. To determine what memory object is at a specific address: 
  997.  
  998.   1. Select the process in whose context the address lies. 
  999.   2. Select the General Process Information option of the Process pull-down. 
  1000.   3. Select the Show Description option of the Functions pull-down. 
  1001.   4. Enter the desired address type and value. 
  1002.   5. The object description is shown. 
  1003.  
  1004.  
  1005. ΓòÉΓòÉΓòÉ 6.4.2. Valid Contexts for a Shared Linear Address? ΓòÉΓòÉΓòÉ
  1006.  
  1007. To determine what processes have access to a shared linear address: 
  1008.  
  1009.   1. Select the `sysinit' process. 
  1010.   2. Select the Shared Object Summary option of the Process pull-down. 
  1011.   3. Select the Show Description option. 
  1012.   4. Enter the desired address type and value. 
  1013.   5. The object description is shown, including all the processes' Page Table 
  1014.      Entries for the object. The Context Records also show which processes have 
  1015.      access and the type of access allowed. 
  1016.  
  1017.  
  1018. ΓòÉΓòÉΓòÉ 6.4.3. Where is Code Loaded? ΓòÉΓòÉΓòÉ
  1019.  
  1020. To determine where code objects are loaded (so you can program a tool like the 
  1021. "Intel In-Circuit Analyzer" (ICE): 
  1022.  
  1023.   1. Select the process in whose context the program is running. 
  1024.   2. Select the Modules option of the System pull-down. 
  1025.   3. Find the module you are interested in. (You can use the Find dialog to 
  1026.      have THESEUS2 find the module for you.) 
  1027.   4. Double-click the left mouse button while pointing at the MTE @ (first 
  1028.      column) value. This will display the formatted MTE. 
  1029.   5. Move to the Object/Segment Table, at the bottom of the display. 
  1030.   6. Double-click the right mouse button while pointing at the address of the 
  1031.      particular object/segment you want to map. The Page Table Entries map the 
  1032.      virtual/logical address of the module into the physical addresses needed. 
  1033.  
  1034.  
  1035. ΓòÉΓòÉΓòÉ 6.4.4. Is a Process Leaking Memory? (programatic method) ΓòÉΓòÉΓòÉ
  1036.  
  1037. To determine which process is leaking memory, use the Memory Leak Detection 
  1038. option on the System pull-down. 
  1039.  
  1040. To determine which memory object is leaking memory for a specific process, use 
  1041. the Memory Leak Detection option on the Process pull-down. 
  1042.  
  1043. To determine which pages in a memory object are being leaked, use the Memory 
  1044. Object Leak Detection option of the Functions pull-down in a detail window, 
  1045. after selecting the linear address of the memory object. 
  1046.  
  1047. There is a 'white paper' on CompuServe which discusses how to find memory leaks 
  1048. using both THESEUS2 and CSet/2's "debug malloc" support. I highly recommend 
  1049. that you get this to understand the mechanics of doing leak detection and 
  1050. correction. After logging onto CompuServe, 
  1051.  
  1052. go os2df2
  1053. lib 9
  1054. file name is "memlks.exe"
  1055. It is a "self-extracting" zip file. 
  1056.  
  1057.  
  1058. ΓòÉΓòÉΓòÉ 6.4.5. Is a Process Leaking Memory? (old method 1) ΓòÉΓòÉΓòÉ
  1059.  
  1060. To determine if a process is leaking memory: 
  1061.  
  1062.   1. Select the process you wish to examine. 
  1063.   2. Perform the function that you wish to examine. (This will cause all the 
  1064.      related pages of program and data to be loaded.) 
  1065.   3. Select the Memory Utilization option of the Process pull-down. Do not 
  1066.      close this window. 
  1067.   4. Perform the function that you wish to examine. 
  1068.   5. Select the Memory Utilization option of the Process pull-down, again. 
  1069.   6. Compare the results in the two Memory Utilization displays. Look at the 
  1070.      Total Shared originated and the Total Private lines, as these are the ones 
  1071.      that will change if leaking is taking place. (If you forget which display 
  1072.      is which, the time and date of display generation are displayed on the 
  1073.      last line of the display.) 
  1074.  
  1075.  
  1076. ΓòÉΓòÉΓòÉ 6.4.6. Is a Process Leaking Memory? (old method 2) ΓòÉΓòÉΓòÉ
  1077.  
  1078. To determine if a process is leaking memory, when the SWAPPER.DAT file is 
  1079. growing: 
  1080.  
  1081.   1. Select the Swapper display. 
  1082.   2. Look at the entries at the bottom of the display. If a process is leaking 
  1083.      memory, it will usually have a lot of pages in the SWAPPER.DAT file which 
  1084.      are the same type of  memory object as the one which is being leaked. 
  1085.  
  1086.  
  1087. ΓòÉΓòÉΓòÉ 6.4.7. Working Set of the Entire System? ΓòÉΓòÉΓòÉ
  1088.  
  1089. To determine the working set of the entire system: 
  1090.  
  1091.   1. Select the Working Set option of the System pull-down. 
  1092.   2. Select the Working Set Parameters option of the Functions pull-down. 
  1093.   3. Make any changes that you want to the default data collection parameters. 
  1094.   4. Select the Working Set Start option of the Functions pull-down. 
  1095.   5. Perform the functions (in your application) that you want measured. 
  1096.   6. Return to THESEUS2's working set window and select the Working Set Stop 
  1097.      option of the Functions pull-down. 
  1098.   7. A summary of the working set for the entire system is displayed. 
  1099.   8. Detail working set information may be obtained by: 
  1100.  
  1101.     o Selecting the Show Detail by Page option of the Functions pull-down 
  1102.     o Selecting the Show Detail by Object option of the Functions pull-down 
  1103.  
  1104.  If you want to know the working sets of individual processes, see the section 
  1105.  Working Set of a Single Process. 
  1106.  
  1107.  
  1108. ΓòÉΓòÉΓòÉ 6.4.8. Working Set of a Multi-Process Application? ΓòÉΓòÉΓòÉ
  1109.  
  1110. A method we use in Austin in the performance analysis departments to determine 
  1111. the working set of our complex, multi-process applications is to plot the 
  1112. results of the System Working Set output and look at the changes as we perform 
  1113. various functions. We do this as follows (if you are using LAN NetView Monitor 
  1114. instead of SPM/2, replace all the spmws's with monws's): 
  1115.  
  1116.   1. Input the following two commands to get the data collection started: 
  1117.  
  1118.           spmws /stop
  1119.           detach spmws 5 12 /p /q /o=spmws.out /plot
  1120.      (This stops SPMWS.EXE in case it is already running from SPM/2 and then 
  1121.      restarts it with the parameters we need to collect plottable data.) If you 
  1122.      want to collect the data at another interval or number of intervals in the 
  1123.      working set, change the 5 and 12 to whatever you want. 
  1124.   2. Run your application, noting the times that you do specific events in your 
  1125.      scenario. 
  1126.   3. When you have completed the scenario, input the following command to allow 
  1127.      you to get the data file created by SPMWS.EXE: 
  1128.  
  1129.           spmws /stop
  1130.  
  1131.   4. If you are plotting "Working Set" with SPM/2, then input the following 
  1132.      command to resume computation for that function: 
  1133.  
  1134.           detach spmws 5 12 /p /q
  1135.  
  1136.   5. The file "spmws.out" is formatted for easy importing into most plotting 
  1137.      spread-sheets. There are four columns of data: 
  1138.  
  1139.      a. Time of day in hours, minutes, and seconds, without any delimiters. For 
  1140.         instance, current time is 10:26:10 AM and that would be presented as 
  1141.         102610. 
  1142.      b. The now column in megabytes. 
  1143.      c. The working set column in megabytes. 
  1144.      d. The free column in megabytes. 
  1145.  
  1146.      We generally edit the time column and put in information which is better 
  1147.      for the horizontal plotting axis, for instance, we would put in the names 
  1148.      of the specific events in the scenario. 
  1149.  
  1150.   6. We then "import" this data into a plotting spread-sheet and plot the now 
  1151.      and working set columns. (For Quattro Pro, import as 'comma & "" delimited 
  1152.      file'.) We get something similar to the following: 
  1153.  
  1154.   7. The difference between the RAM at B and the RAM at A is the size of the 
  1155.      application "steady-state" working set. 
  1156.   8. If there are changes at point C and point D, then these functions have 
  1157.      additional memory requirements. 
  1158.   9. The spikes at the specific functions shows the "transient" memory required 
  1159.      to perform these functions. 
  1160.  10. The highest of the working set spikes shows how much RAM is needed to be 
  1161.      able to run the application without thrashing RAM. 
  1162.  11. After the "stop" function is done, the working set should return to the 
  1163.      value at point A. 
  1164.  
  1165.  When this kind of test is run, the machine it is run on must have more memory 
  1166.  than the working set requires, such that the working set is no larger than 85% 
  1167.  of RAM. Otherwise, the system "page ager" and THESEUS2 conflict and the 
  1168.  resulting data is unreliable. 
  1169.  
  1170.  The customer machine must have more RAM than the highest of the "steady-state" 
  1171.  points. If it doesn't, then steady-state paging will occur and our experience 
  1172.  is that the user will not be satisfied with performance. Also, if the machine 
  1173.  has less than any one spike, then paging will occur during the processing of 
  1174.  that function and performance will degrade. 
  1175.  
  1176.  
  1177. ΓòÉΓòÉΓòÉ 6.4.9. Working Set of a Single Process? ΓòÉΓòÉΓòÉ
  1178.  
  1179. To determine the working set of memory for a particular process: 
  1180.  
  1181.   1. Select the process you wish to measure. 
  1182.   2. Select the Working Set option of the Process pull-down. 
  1183.   3. Select the Working Set Parameters option of the Functions pull-down. 
  1184.   4. Make any changes that you want to the default data collection parameters. 
  1185.   5. Select the Working Set Start option of the Functions pull-down. 
  1186.   6. Perform the functions (in your application) that you want measured. 
  1187.   7. Return to THESEUS2's working set window and select the Working Set Stop 
  1188.      option of the Functions pull-down. 
  1189.   8. A summary of the working set for the specified process is displayed. 
  1190.   9. Detail working set information may be obtained by: 
  1191.  
  1192.     o Selecting the Show Detail by Page option of the Functions pull-down 
  1193.     o Selecting the Show Detail by Object option of the Functions pull-down 
  1194.  
  1195.  If you want to know the working set of the entire system, see the section 
  1196.  Working Set of the Entire System. 
  1197.  
  1198.  
  1199. ΓòÉΓòÉΓòÉ 6.4.10. Working Set When it does not all fit? ΓòÉΓòÉΓòÉ
  1200.  
  1201. To determine the working set of memory of a group of processes that do not all 
  1202. fit into RAM at the same time: 
  1203.  
  1204.   1. Start your system without any of your applications. 
  1205.   2. Do Working Set of the Entire System to determine the working set of the 
  1206.      base system with your configuration. 
  1207.   3. Do Working Set of a Single Process for each of your applications, one at a 
  1208.      time. 
  1209.   4. Do the following calculation: 
  1210.  
  1211.        Recommended amount of memory from step 2 
  1212.     +  Recommended amount of memory from each case of step 3 
  1213.     -  188K (THESEUS2's working set while taking the measurement) 
  1214.     =  Total working set for your case. 
  1215.  
  1216.  
  1217. ΓòÉΓòÉΓòÉ 7. Memory Explanations ΓòÉΓòÉΓòÉ
  1218.  
  1219. The following aspects of memory under the OS/2 2.x system are explored: 
  1220.  
  1221.  o Memory Addressing in the OS/2 2.x System 
  1222.  o Memory States 
  1223.  o Memory Management Control Blocks 
  1224.  o Cost of Memory Objects 
  1225.  
  1226.  
  1227. ΓòÉΓòÉΓòÉ 7.1. Memory Addressing in the OS/2 2.x System ΓòÉΓòÉΓòÉ
  1228.  
  1229. The OS/2 2.x system uses four types of addresses: 
  1230.  
  1231.  Virtual    Virtual addresses have both selectors and offsets. They are 
  1232.             represented by THESEUS2 as ssss:oooo or ssss:oooooooo 
  1233.             (selector:offset) (all in hexadecimal notation). These are 
  1234.             sometimes referred to as "16:16" addresses. This is the address 
  1235.             type that "16-bit / segmented" programs use. The system uses the 
  1236.             Global and Local Descriptor Tables to convert a virtual address to 
  1237.             a linear address. 
  1238.  
  1239.  Flat       A flat address is a virtual offset. Because the selector registers 
  1240.             (loaded by the operating system) have a base address of 00000000, 
  1241.             flat is equivalent to linear. These are sometimes referred to as 
  1242.             "0:32" addresses. This is the address type that "32-bit / flat" 
  1243.             programs use. 
  1244.  
  1245.  Linear     A linear address is the intermediate result when the CPU is 
  1246.             resolving memory addresses. They are represented by THESEUS2 as 
  1247.             llllllll (in hexadecimal notation). 
  1248.  
  1249.  Physical   A physical address is the final result when the CPU is resolving 
  1250.             memory addresses. They are used to address the memory chips. They 
  1251.             are represented by THESEUS2 as pppppppp (in hexadecimal notation). 
  1252.  
  1253.  See the Thunking Addresses section for conversion of "16:16" and "0:32" 
  1254.  addresses. 
  1255.  
  1256.  Because linear and physical addresses are both presented by THESEUS2 as eight 
  1257.  hexadecimal digits, the particular type must be deduced from context. However, 
  1258.  if THESEUS2 presents the address as a hyperblock link, it will do the proper 
  1259.  processing if the link is used. 
  1260.  
  1261.  Refer to the Intel 80386 Programmer's Reference Manual, Chapter 5 for more 
  1262.  information about how the processor handles addressing. 
  1263.  
  1264.  
  1265. ΓòÉΓòÉΓòÉ 7.1.1. Thunking Addresses ΓòÉΓòÉΓòÉ
  1266.  
  1267. The process of converting virtual addresses from one form to another is 
  1268. referred to as thunking. 
  1269.  
  1270. Addresses can be converted from the "0:32" flat address form to the "16:16" 
  1271. virtual address form by: 
  1272.  
  1273. selector = ((flat >> 16) << 3) | 7;
  1274. offset = flat & 0x0000FFFF;
  1275.  
  1276. Addresses can be converted from the "16:16" virtual address form to the "0:32" 
  1277. flat address form by: 
  1278.  
  1279. flat = ((selector >> 3) << 16) | offset;
  1280.  
  1281. Where: 
  1282.  
  1283.  Symbol    Meaning 
  1284.  >> n      Right shift n bits, filling on the left with zeros. 
  1285.  << n      Left shift n bits, filling on the right with zeros. 
  1286.  |         Bitwise or. 
  1287.  &         Bitwise and. 
  1288.  
  1289.  
  1290. ΓòÉΓòÉΓòÉ 7.1.2. Translation Lookaside Buffer ΓòÉΓòÉΓòÉ
  1291.  
  1292. The 80386 and i486 processors use a Translation Lookaside Buffer (TLB) to 
  1293. improve the instruction execution rate when doing paging. The TLB is a four-way 
  1294. set-associative memory which maps linear addresses to physical addresses. 
  1295.  
  1296. Each time a linear address without a TLB entry is translated, the appropriate 
  1297. TLB entry is loaded and this "...will add 13, 21 or 28 clocks to the 
  1298. instruction depending on whether the Accessed and/or Dirty bit in neither, one 
  1299. or both of the page entries needs to be set in memory" (Intel i486 
  1300. Microprocessor Programmer's Reference Manual, 1990, page E-2). 
  1301.  
  1302. The bottom three bits of the linear address page number (bits 12-14 of the 
  1303. linear address) are used to select the set of four data entries. Because most 
  1304. memory objects start on 64K boundaries, these bits are zeros and the same set 
  1305. of data entries is used for all address translation. TLB "thrashing" can occur 
  1306. if the first page of more than four memory objects are being referenced by the 
  1307. program. This causes the program execution time to substantially increase. 
  1308. Because the programmer has little control over where the variables used in 
  1309. high-level languages are stored, this problem is likely to occur. 
  1310.  
  1311.  
  1312. ΓòÉΓòÉΓòÉ <hidden> page entries ΓòÉΓòÉΓòÉ
  1313.  
  1314. Page Directory or Page Table 
  1315.  
  1316.  
  1317. ΓòÉΓòÉΓòÉ 7.2. Memory States ΓòÉΓòÉΓòÉ
  1318.  
  1319. Memory in OS/2* 2.x has several states. The states are explored: 
  1320.  
  1321.  o Physical Memory States 
  1322.  o Physical Memory State Change Table 
  1323.  o Virtual Memory States 
  1324.  o Virtual Memory State Change Table 
  1325.  o Memory State Venn Diagram 
  1326.  
  1327.  
  1328. ΓòÉΓòÉΓòÉ 7.2.1. Physical Memory States ΓòÉΓòÉΓòÉ
  1329.  
  1330. Physical memory pages have three states: 
  1331.  
  1332.  State      Explanation 
  1333.  Free       A page that is not in use.  A free page can be attached to a 
  1334.             virtual page. 
  1335.  Attached   A page that is in use. The physical page is attached to a virtual 
  1336.             page, and one or more Page Table Entries point directly to it. 
  1337.  Idle       A page that has not been used recently. The Page Table Entry is not 
  1338.             connected directly to the physical page. Instead, the Page Table 
  1339.             Entry is connected to the physical page by way of the Virtual Page 
  1340.             Table. 
  1341.  
  1342.  Attached pages have three substates: 
  1343.  
  1344.  State        Explanation 
  1345.  Swappable    The page is swappable or discardable. 
  1346.  Locked       The memory has been locked by a Device Driver. The lock may be 
  1347.               either long-term or short-term. 
  1348.  Resident     The page must remain in RAM at all times and cannot be swapped or 
  1349.               discarded. 
  1350.  
  1351.  Idle pages have two substates: 
  1352.  
  1353.  State   Explanation 
  1354.  Dirty   The page contents have been modified and must be written to the swap 
  1355.          file before attaching the page to another virtual page. 
  1356.  Clean   The page contents have not been modified. The page can, therefore, be 
  1357.          given to another virtual page without the Page Manager writing the 
  1358.          contents to disk. 
  1359.  
  1360.  (Attached pages have the substates of Dirty and Clean, also. However, the 
  1361.  Dirty/Clean substate is interesting only if the page is in the Idle state.) 
  1362.  
  1363.  Physical Memory State Change Table 
  1364.  
  1365.  
  1366. ΓòÉΓòÉΓòÉ 7.2.2. Physical Memory State Change Table ΓòÉΓòÉΓòÉ
  1367.  
  1368. Following are the primary physical page state transitions: 
  1369.  
  1370. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1371. ΓöéFrom StateΓöéTo State ΓöéReason                                      Γöé
  1372. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1373. ΓöéFree      ΓöéAttached ΓöéA virtual page is referenced that has no    Γöé
  1374. Γöé          Γöé         Γöéphysical page attached to it. The page is   Γöé
  1375. Γöé          Γöé         Γöézeroed before being given to the            Γöé
  1376. Γöé          Γöé         Γöéapplication.                                Γöé
  1377. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1378. ΓöéAttached  ΓöéFree     ΓöéThe application performs a DosFreeMem       Γöé
  1379. Γöé          Γöé         Γöéfunction on the memory object.              Γöé
  1380. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1381. ΓöéAttached  ΓöéIdle     ΓöéThe page ager "idles" the page if it has notΓöé
  1382. Γöé          Γöé         Γöébeen accessed recently.                     Γöé
  1383. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1384. ΓöéIdle      ΓöéAttached ΓöéEither: 1. the application references the   Γöé
  1385. Γöé          Γöé         Γöépage, or 2. another application needs a     Γöé
  1386. Γöé          Γöé         Γöépage, so this one is paged out and then     Γöé
  1387. Γöé          Γöé         Γöéattached. The page is zeroed before being   Γöé
  1388. Γöé          Γöé         Γöégiven to the application.                   Γöé
  1389. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1390. ΓöéIdle      ΓöéFree     ΓöéThe application performs a DosFreeMem       Γöé
  1391. Γöé          Γöé         Γöéfunction on the memory object.              Γöé
  1392. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1393.  
  1394. Following are the substate transitions: 
  1395.  
  1396. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1397. ΓöéFrom StateΓöéTo State ΓöéReason                                      Γöé
  1398. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1399. ΓöéSwappable ΓöéLocked   ΓöéA device driver performs a DevHlp_Lock      Γöé
  1400. Γöé          Γöé         Γöéfunction on the page.                       Γöé
  1401. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1402. ΓöéLocked    ΓöéSwappableΓöéA device driver performs a DevHlp_Unlock    Γöé
  1403. Γöé          Γöé         Γöéfunction on the page.                       Γöé
  1404. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1405. ΓöéResident  Γöé         ΓöéSubstate changes not allowed for resident   Γöé
  1406. Γöé          Γöé         Γöépages.                                      Γöé
  1407. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1408. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1409. ΓöéClean     ΓöéDirty    ΓöéThe page is modified by a program.          Γöé
  1410. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1411. ΓöéDirty     ΓöéClean    ΓöéThe page is written to disk by the Memory   Γöé
  1412. Γöé          Γöé         ΓöéManager.                                    Γöé
  1413. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1414.  
  1415.  
  1416. ΓòÉΓòÉΓòÉ 7.2.3. Virtual Memory States ΓòÉΓòÉΓòÉ
  1417.  
  1418. Virtual memory pages have three states: 
  1419.  
  1420.  State           Explanation 
  1421.  Free            The virtual memory is not allocated to the application. 
  1422.  Decommitted     Linear address space is allocated, but it is not valid for the 
  1423.                  program to reference the page. 
  1424.  Committed       Linear address space is allocated, and it is valid for the 
  1425.                  program to reference the page. 
  1426.  
  1427.  Committed pages have six substates: 
  1428.  
  1429.  State       Explanation 
  1430.  Guard       Guard pages are used to manage stacks, linearly expanding objects 
  1431.              or sparse objects. When referenced, a `guard page entered' 
  1432.              condition is raised. 
  1433.  AOD         (Allocate On Demand)  The page has not been referenced and does 
  1434.              not have a page of physical memory attached. This is the normal 
  1435.              state of a page after being committed and before being referenced. 
  1436.              When referenced, a physical page is zeroed and attached to the 
  1437.              virtual page. 
  1438.  TBL         (To Be Loaded)  The page has not been referenced and does not have 
  1439.              a page of physical memory attached. This page was created by the 
  1440.              loader. When referenced, the page is retrieved from the 
  1441.              appropriate disk file. 
  1442.  Present     A physical page is attached to the virtual page, and the 
  1443.              appropriate Page Table Entry points directly to it. This is the 
  1444.              state of a page that is in active use. 
  1445.  Idle        A page which has not been used recently. The Page Table Entry is 
  1446.              not connected directly to the physical page. Instead, the Page 
  1447.              Table Entry is connected to the physical page by way of the 
  1448.              Virtual Page Table. When referenced, the page is returned to the 
  1449.              present state. 
  1450.  Swapped     The contents of the page have been swapped to disk. When 
  1451.              referenced, the page is loaded from disk and returned to the 
  1452.              present state. 
  1453.  
  1454.  Present pages have the same substates as attached physical memory. See the 
  1455.  Physical Memory States section for an explanation. 
  1456.  
  1457.  Virtual Memory State Change Table 
  1458.  
  1459.  
  1460. ΓòÉΓòÉΓòÉ 7.2.4. Virtual Memory State Change Table ΓòÉΓòÉΓòÉ
  1461.  
  1462. Following are the primary virtual page state transitions: 
  1463.  
  1464. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1465. ΓöéFrom State ΓöéTo State   ΓöéReason                                   Γöé
  1466. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1467. ΓöéFree       ΓöéDecommittedΓöéDosAllocMem or DosAllocSharedMem w/o     Γöé
  1468. Γöé           Γöé           ΓöéPAG_COMMIT                               Γöé
  1469. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1470. ΓöéFree       ΓöéCommitted  ΓöéDosAllocMem or DosAllocSharedMem w/      Γöé
  1471. Γöé           Γöé           ΓöéPAG_COMMIT                               Γöé
  1472. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1473. ΓöéDecommittedΓöéFree       ΓöéDosFreeMem                               Γöé
  1474. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1475. ΓöéDecommittedΓöéCommitted  ΓöéDosSetMem w/ PAG_GUARD or PAG_COMMIT     Γöé
  1476. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1477. ΓöéCommitted  ΓöéFree       ΓöéDosFreeMem or the program terminates     Γöé
  1478. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1479. ΓöéCommitted  ΓöéDecommittedΓöéDosSetMem w/ PAG_DECOMMIT. If a page is  Γöé
  1480. Γöé           Γöé           Γöéattached, it is freed.                   Γöé
  1481. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1482.  
  1483. Following are the substate transitions within the committed state: 
  1484.  
  1485. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1486. ΓöéFrom StateΓöéTo StateΓöéReason                                       Γöé
  1487. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1488. ΓöéGuard     ΓöéAOD     ΓöéDosSetMem w/ PAG_COMMIT                      Γöé
  1489. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1490. ΓöéAOD       ΓöéGuard   ΓöéDosSetMem w/ PAG_GUARD                       Γöé
  1491. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1492. ΓöéAOD       ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1493. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1494. ΓöéTBL       ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1495. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1496. ΓöéPresent   ΓöéTBL     ΓöéThe page is discarded by the Swapper.        Γöé
  1497. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1498. ΓöéPresent   ΓöéIdle    ΓöéThe Page Ager "idles" the page if it has not Γöé
  1499. Γöé          Γöé        Γöébeen accessed recently.                      Γöé
  1500. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1501. ΓöéIdle      ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1502. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1503. ΓöéIdle      ΓöéSwapped ΓöéThe Swapper writes the page contents to disk Γöé
  1504. Γöé          Γöé        Γöébecause it needs the physical page.          Γöé
  1505. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1506. ΓöéSwapped   ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1507. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1508.  
  1509.  
  1510. ΓòÉΓòÉΓòÉ 7.2.5. Memory State Venn Diagram ΓòÉΓòÉΓòÉ
  1511.  
  1512. The Venn diagram for the states of physical and virtual memory is: 
  1513.  
  1514.  
  1515. ΓòÉΓòÉΓòÉ 7.3. Memory Management Control Blocks ΓòÉΓòÉΓòÉ
  1516.  
  1517. The memory management control blocks are presented in three methods: 
  1518.  
  1519.  o The Different Views of Memory 
  1520.  o Table of Memory Management Control Blocks 
  1521.  o Pictures of Memory Control Blocks 
  1522.  
  1523.  
  1524. ΓòÉΓòÉΓòÉ 7.3.1. The Different Views of Memory ΓòÉΓòÉΓòÉ
  1525.  
  1526. The Memory Manager uses several control blocks to keep track of all the 
  1527. different views of memory. The views are: 
  1528.  
  1529.  View       Control Blocks 
  1530.  Virtual    The GDT and LDT are used to convert virtual addresses to linear 
  1531.             addresses. 
  1532.  Linear     The arena is used to manage the linear address space. 
  1533.  Physical   The Page Directory and Page Tables are used to convert linear 
  1534.             addresses to physical addresses. 
  1535.  Modules    The MTE is used to manage modules. 
  1536.  
  1537.  For an explanation of the relationship of the linear and physical views, see 
  1538.  Linear/Physical Relationship. 
  1539.  
  1540.  For a tabular summary, see Table of Memory Management Control Blocks. 
  1541.  
  1542.  
  1543. ΓòÉΓòÉΓòÉ 7.3.1.1. Virtual View Control Blocks ΓòÉΓòÉΓòÉ
  1544.  
  1545. The GDT and LDT are used to convert virtual addresses to linear addresses. 
  1546.  
  1547.  GDT   (Global Descriptor Table) The GDT has selectors which are valid in any 
  1548.        process context. These include selectors for device drivers, system 
  1549.        tables, kernel code, and the flat selectors that are loaded by the 
  1550.        system for 32-bit flat programs. 
  1551.  LDT   (Local Descriptor Table) Each process has an LDT, which is used only for 
  1552.        16-bit segmented applications. 
  1553.  
  1554.  
  1555. ΓòÉΓòÉΓòÉ 7.3.1.2. Linear View Control Blocks ΓòÉΓòÉΓòÉ
  1556.  
  1557. The arena is used to manage the linear address space. 
  1558.  
  1559.  arena           The arena keeps track of what linear addresses are being used. 
  1560.                  The arena contains arena records, alias records, object 
  1561.                  records, and context records. See sections starting with 
  1562.                  Arenas with Arena Records for a pictorial representation of 
  1563.                  their relationships of these control blocks. See section Arena 
  1564.                  Relationships for a pictorial representation of the 
  1565.                  relationships between the various types of arenas. 
  1566.  arena header    There is an arena header for each arena. They are doubly 
  1567.                  linked. The Arena Header picture shows this graphically. 
  1568.  private arena   The PTDA contains the arena header for the private arena for 
  1569.                  that process. The arena header has a pointer to the sentinel 
  1570.                  arena record for the private arena for that Process. The 
  1571.                  private arena is usable only in the context of that process. 
  1572.                  The Arena Header picture shows this graphically. 
  1573.  shared arena    The shared arena tracks all of the shared memory objects in 
  1574.                  the system. The shared arena is context-sensitive, because the 
  1575.                  backing memory (pages of real RAM) may be process-unique. 
  1576.                  (This is the case for the instance data in a DLL file.) The 
  1577.                  context records keep track of which processes can access each 
  1578.                  memory object. 
  1579.  system arena    The system arena maps the linear address space which belongs 
  1580.                  to the OS/2 system. The system memory objects are not 
  1581.                  addressable by application programs. 
  1582.  VPT             (Virtual Page Table) The Virtual Page Table has an entry for 
  1583.                  each committed page. Each entry also includes the hob of the 
  1584.                  memory object that is attached to the page. 
  1585.  
  1586.  
  1587. ΓòÉΓòÉΓòÉ 7.3.1.3. Physical View Control Blocks ΓòÉΓòÉΓòÉ
  1588.  
  1589. The Page Directory and Page Tables are used to convert linear addresses to 
  1590. physical addresses. 
  1591.  
  1592.  PD    (Page Directory) The Page Directory is the first-level address 
  1593.        translation table used by the hardware to map a linear address to a 
  1594.        physical address. The entries in the Page Directory point to Page 
  1595.        Tables. 
  1596.  PT    (Page Table) The Page Table is the second-level address translation 
  1597.        table used by the hardware to map a linear address to a physical 
  1598.        address. The entries in the Page Directory point to Page Tables, which 
  1599.        in turn point to pages of physical RAM. 
  1600.  PPD   (Process Page Directory) Each PTDA contains a pointer to a Process Page 
  1601.        Directory which points to Page Tables that track the physical pages that 
  1602.        may be referenced by that Process. The PPD maps the area for both the 
  1603.        private and shared arenas. 
  1604.  PFT   (Page Frame Table) The Page Frame Table keeps track of physical memory. 
  1605.        There is an entry for each addressable page of RAM in the machine. Each 
  1606.        in-use entry in this table has a pointer to an entry in the Virtual Page 
  1607.        Table, which effectively links physical and linear memory. 
  1608.  PRT   (Page Range Table) The Page Range Table tells which pages are 
  1609.        addressable. 
  1610.  
  1611.  For systems up to and including 2.11, the Process Page Directory (PPD) mapped 
  1612.  the entire private and shared arenas. However, starting with OS/2 Warp, the 
  1613.  PPD maps the private arena and the "read/write data" portion of the shared 
  1614.  arena. The "code" and "read-only data" portion of the shared arena is mapped 
  1615.  from the System Page Directory. As a result, the Process Working Set and Leak 
  1616.  Detection computations can no longer determine which process is accessing a 
  1617.  particular page of DLL code. 
  1618.  
  1619.  
  1620. ΓòÉΓòÉΓòÉ 7.3.1.4. Module View Control Blocks ΓòÉΓòÉΓòÉ
  1621.  
  1622. The MTE is used to manage modules. 
  1623.  
  1624.  MTE   (Module Table Entry) Each module that is loaded has an MTE that is used 
  1625.        to manage the memory objects that make up the module. The MTEs are 
  1626.        linked together. The PTDA points to the MTE for the EXE file for that 
  1627.        process. 
  1628.  
  1629.        The MTE is split into resident and swappable portions. There are several 
  1630.        subtates in each category, including the object/segment table that has 
  1631.        the actual object/segment information for the module. 
  1632.  
  1633.  
  1634. ΓòÉΓòÉΓòÉ 7.3.1.5. Linear/Physical Relationship ΓòÉΓòÉΓòÉ
  1635.  
  1636. The picture Arena Relationships shows pictorially how the arenas are arranged 
  1637. in the linear address space. 
  1638.  
  1639.  For OS/2 2.x versions up to and including 2.11: 
  1640.            The Process Page Directory maps the linear space represented by the 
  1641.            private and shared arenas. This is the first 512M of the linear 
  1642.            address space. 
  1643.  
  1644.  For OS/2 2.x versions including and after OS/2 Warp: 
  1645.            The Process Page Directory maps the linear space represented by the 
  1646.            private arena and the first portion of the shared arena, which 
  1647.            includes only the read/write data memory objects. This is the first 
  1648.            320M of the linear address space. 
  1649.  
  1650.            The code and read-only data memory objects in the shared arena are 
  1651.            mapped by the System Page Directory. This is the next 192M of the 
  1652.            linear address space. 
  1653.  
  1654.  The System Page Directory maps all the system arena. This is the top 2.5G of 
  1655.  linear address space. 
  1656.  
  1657.  The linear address space between 512M (0.5G) and 1.5G is not mapped by any 
  1658.  arena. The System Page Directory has no page tables for that region of space. 
  1659.  
  1660.  
  1661. ΓòÉΓòÉΓòÉ 7.3.2. Table of Memory Management Control Blocks ΓòÉΓòÉΓòÉ
  1662.  
  1663. A summary of how the various Memory Management Control Blocks refer to each 
  1664. other: 
  1665.  
  1666. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1667. ΓöéControl Block ----->ΓöéPointer Type ------>ΓöéControl Block       Γöé
  1668. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1669. Γöéalias record        Γöéhar                 Γöéarena record        Γöé
  1670. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1671. Γöéarena record        Γöéhar                 Γöénext arena record inΓöé
  1672. Γöé                    Γöé                    Γöéthe arena           Γöé
  1673. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1674. Γöéarena record        Γöéhal                 Γöéalias record        Γöé
  1675. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1676. Γöéarena record        Γöéhob                 Γöéobject record       Γöé
  1677. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1678. Γöéarena record        Γöéhco                 Γöécontext record      Γöé
  1679. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1680. Γöéobject record       Γöéhar                 Γöéarena record        Γöé
  1681. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1682. Γöéobject record       Γöéhob                 Γöéowner               Γöé
  1683. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1684. Γöéobject record       Γöéhob                 Γöéthe EXE or DLL file Γöé
  1685. Γöé                    Γöé                    Γöéwhich allocated the Γöé
  1686. Γöé                    Γöé                    Γöémemory              Γöé
  1687. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1688. Γöécontext record      Γöéhob                 ΓöéPTDA with access to Γöé
  1689. Γöé                    Γöé                    Γöéthe shared object   Γöé
  1690. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1691. Γöécontext record      Γöéhco                 Γöénext context record Γöé
  1692. Γöé                    Γöé                    Γöéin the access chain Γöé
  1693. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1694. Γöéarena header        Γöélinear address      Γöéarena sentinel      Γöé
  1695. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1696. ΓöéPTDA                Γöélinear address and  ΓöéLDT                 Γöé
  1697. Γöé                    Γöéhob                 Γöé                    Γöé
  1698. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1699. ΓöéPTDA                Γöélinear address      ΓöéProcess Page        Γöé
  1700. Γöé                    Γöé                    ΓöéDirectory           Γöé
  1701. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1702. ΓöéPTDA                Γöéhob                 ΓöéMTE of the EXE file Γöé
  1703. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1704. ΓöéMTE                 Γöélinear address      Γöénext MTE in the listΓöé
  1705. Γöé                    Γöé                    Γöéof MTEs             Γöé
  1706. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1707. ΓöéPage Directory      Γöéphysical address    ΓöéPage Table          Γöé
  1708. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1709. ΓöéPage Table Entry    ΓöéImplied by the      ΓöéPage Frame Entry    Γöé
  1710. Γöé                    Γöéphysical address    Γöé                    Γöé
  1711. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1712. ΓöéPage Frame Entry    ΓöéLinear address      ΓöéVirtual Page Entry  Γöé
  1713. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1714. ΓöéVirtual Page Entry  Γöéhob                 ΓöéObject Record       Γöé
  1715. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1716. ΓöéVirtual Page Entry  Γöéframeid             ΓöéPhysical page       Γöé
  1717. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1718.  
  1719. This is all the information that is gathered together by: 
  1720.  
  1721.  o Description of Linear Object, 
  1722.  o Description of Segment, and 
  1723.  o Description of Physical Object. 
  1724.  
  1725.  
  1726. ΓòÉΓòÉΓòÉ 7.3.3. Pictures of Memory Control Blocks ΓòÉΓòÉΓòÉ
  1727.  
  1728. The memory manager control block pictures are: 
  1729.  
  1730.  o Arena Header picture 
  1731.  o Arena Relationships 
  1732.  o Arenas with Arena Records 
  1733.  o Arenas with Object Records 
  1734.  o Arenas with Context Records 
  1735.  
  1736.  
  1737. ΓòÉΓòÉΓòÉ 7.3.3.1. Arena Header picture ΓòÉΓòÉΓòÉ
  1738.  
  1739. Most arena headers are within PTDAs and all are linked together: 
  1740.  
  1741. Next picture: Arena Relationships. 
  1742.  
  1743.  
  1744. ΓòÉΓòÉΓòÉ 7.3.3.2. Arena Relationships ΓòÉΓòÉΓòÉ
  1745.  
  1746. The arenas are related by linear address: 
  1747.  
  1748. Adjacent pictures: Arenas with Arena Records, Arena Headers. 
  1749.  
  1750.  
  1751. ΓòÉΓòÉΓòÉ 7.3.3.3. Arenas with Arena Records ΓòÉΓòÉΓòÉ
  1752.  
  1753. The arenas are made up of doubly linked arena records: 
  1754.  
  1755. Adjacent pictures: Arenas with Object Records, Arena Relationships. 
  1756.  
  1757.  
  1758. ΓòÉΓòÉΓòÉ 7.3.3.4. Arenas with Object Records ΓòÉΓòÉΓòÉ
  1759.  
  1760. All the arena records, except the sentinel, have object records: 
  1761.  
  1762. Adjacent pictures: Arenas with Context Records, Arenas with Arena Records. 
  1763.  
  1764.  
  1765. ΓòÉΓòÉΓòÉ 7.3.3.5. Arenas with Context Records ΓòÉΓòÉΓòÉ
  1766.  
  1767. The arena records in the shared arena have context records: 
  1768.  
  1769. Previous picture: Arenas with Object Records. 
  1770.  
  1771.  
  1772. ΓòÉΓòÉΓòÉ 7.4. Cost of Memory Objects ΓòÉΓòÉΓòÉ
  1773.  
  1774. The cost of a memory object can be summarized as follows: 
  1775.  
  1776.  Item                    Cost in bytes (decimal) 
  1777.  DTE                     8 
  1778.  PTE                     4 * total number of pages 
  1779.  Arena Record            22 
  1780.  Object Record           16 
  1781.  Context Record          5 * number of Processes that have access to the object 
  1782.  Page Frame Record       12 * number of pages in RAM 
  1783.  Virtual Page Record     12 * number of committed pages 
  1784.  
  1785.  If the object is loaded from a 32-bit EXE/DLL file, then add: 
  1786.  
  1787.  Item                    Cost in bytes (decimal) 
  1788.  MTE object entry        24 
  1789.  
  1790.  If the object is loaded from a 16-bit EXE/DLL file, then add: 
  1791.  
  1792.  Item                    Cost in bytes (decimal) 
  1793.  MTE segment entry       16 
  1794.  
  1795.  Remember that this is a per-object/segment cost. Each object/segment loaded 
  1796.  from the module must be included. 
  1797.  
  1798.  
  1799. ΓòÉΓòÉΓòÉ 8. Changes ΓòÉΓòÉΓòÉ
  1800.  
  1801. Version 2.0 is the initial product version of THESEUS2. 
  1802.  
  1803.  o Changes between v2.0 and v2.0.1 
  1804.  
  1805.  o Changes between v2.0.1 and v2.0.1a 
  1806.  
  1807.  o Changes between v2.0.1a and v2.0.1b 
  1808.  
  1809.  o Changes between v2.0.1b and v2.0.1c 
  1810.  
  1811.  o Changes between v2.0.1c and v2.0.1f 
  1812.  
  1813.  o Changes between v2.0.1f and v2.0.1g 
  1814.  
  1815.  o Changes between v2.0.1g and v2.0.1h 
  1816.  
  1817.  o Changes between v2.0.1h and v2.0.1i 
  1818.  
  1819.  o Changes between v2.0.1i and v2.0.1j 
  1820.  
  1821.  o Changes between v2.0.1j and v2.0.1k 
  1822.  
  1823.  
  1824. ΓòÉΓòÉΓòÉ 8.1. Changes between v2.0 and v2.0.1 ΓòÉΓòÉΓòÉ
  1825.  
  1826.   1. Added a second section on memory leak determination, using the SWAPPER.DAT 
  1827.      contents to determine the problem. 
  1828.  
  1829.   2. Added the locked memory state to the Memory State Venn Diagram. 
  1830.  
  1831.   3. Fixed an error in the Virtual Memory Display dialog for expand down 
  1832.      segments. 
  1833.  
  1834.   4. Made the program work correctly with OS/2 2.1 beta 1 (6.479). The mte 
  1835.      format changed. The data displayed has not been changed. 
  1836.  
  1837.   5. Added some decoding of flag fields in the MTE display. 
  1838.  
  1839.   6. Added file flags to Open Files portion of the General Process Information 
  1840.      display. 
  1841.  
  1842.   7. Fixed a trap when there was more than about 70 processes. 
  1843.  
  1844.   8. Generated separate totals for the private and owned shared columns on the 
  1845.      RAM Usage by Process display. 
  1846.  
  1847.   9. Fixed a loop caused when the program was started with a minimized window. 
  1848.  
  1849.  10. Changed the values shown in the type column of the Modules display from 
  1850.      16/32 to NE/LX. This was done because LX modules are not all 32-bit, some 
  1851.      are 16-bit and some are mixed 16 & 32-bit. 
  1852.  
  1853.  11. Fixed a Hyperblock link error on the SFT entry display. 
  1854.  
  1855.  12. Fixed an error which caused the last entry to not show on the Open Files 
  1856.      display. 
  1857.  
  1858.  13. Added "memory" of following functions from one invocation to the next: 
  1859.  
  1860.     o Process Hierarchy window position, size, and state 
  1861.     o Font for Process Hierarchy window 
  1862.     o Default font for Detail windows 
  1863.     o `Link' color 
  1864.  
  1865.  14. Fixed an error which caused a trap when entering an invalid file name in 
  1866.      the SaveAs dialog. 
  1867.  
  1868.  15. Enabled long file names for the program. 
  1869.  
  1870.  16. Fixed an error in the column summations on the RAM Usage by Process 
  1871.      display which was introduced with the changes for item 8 above. 
  1872.  
  1873.  17. Made the program work correctly with OS/2 2.1 (6.488+). The mte format 
  1874.      changed, again. 
  1875.  
  1876.  18. Fixed an error which caused the top of the `link' list to not be 
  1877.      "unchecked" which was introduced with the changes for item 13 above. 
  1878.  
  1879.  19. Changed the window trailer line to include the program name and version 
  1880.      and deleted the hundredths of seconds value. 
  1881.  
  1882.  20. Changed where the program version is picked up. It was picked up from the 
  1883.      dialog DLL and is now picked up from the EXE file. 
  1884.  
  1885.  21. Fixed an error in the RAM Usage by Process display which was caused by 
  1886.      trying to assign pages which are not valid (pages not in the Page Range 
  1887.      Table). 
  1888.  
  1889.  22. Removed diagnostic lines from the RAM Usage by Process display. The only 
  1890.      information remaining is the summary. 
  1891.  
  1892.  23. Fixed an error which caused a memory leak when using pop up menus. 
  1893.  
  1894.  24. Added the total machine run time in hours, minutes, and seconds to the 
  1895.      General System Information display.  This is a formatted version of the 
  1896.      QSV_MS_COUNT value. 
  1897.  
  1898.  25. Fixed an error in GDT selector validation caused when the GDT segment was 
  1899.      expanded during the run. 
  1900.  
  1901.  26. Fixed an error on the Memory Utilization display that was caused when 
  1902.      analyzing a process that does not have an LDT, such as a VDM process. 
  1903.  
  1904.  27. Changed the order of the output on the General System Information display 
  1905.      to make it more usable. 
  1906.  
  1907.  28. Modified the working set algorithm description to better explain how the 
  1908.      calculations occur. 
  1909.  
  1910.  29. Added Memory Leak Detection to the System and Process pull-downs. 
  1911.  
  1912.  30. Made the program work correctly with OS/2 2.1 (6.504+). The mte format 
  1913.      changed, again. 
  1914.  
  1915.  31. Added the process environment to the General Process Information display. 
  1916.  
  1917.  32. Fixed an error in the Detail of Working Set (by Object) report which 
  1918.      caused incorrect values to be shown (sometimes negative) in the accessed - 
  1919.      no column in the Objects from the `shared' arena section. 
  1920.  
  1921.  33. Added an Illustration section to the Working Set panels. 
  1922.  
  1923.  34. Changed the avg. time values on the Detail of Working Set (by Object) 
  1924.      report to make it easier to tell if all the pages were accessed at the 
  1925.      same time. 
  1926.  
  1927.  35. Added logic to detect that the process requested for periodic update has 
  1928.      terminated. 
  1929.  
  1930.  36. Added additional thread states to the General Process Information displays 
  1931.      thread status area. 
  1932.  
  1933.  37. Changed the behavior of the single click of mouse button 2 so that it no 
  1934.      longer will do an "item selection." 
  1935.  
  1936.  38. Added code to the initialization phase to try to make the program less 
  1937.      prone to killing the whole system when the version of OS/2 is not 
  1938.      recognized. 
  1939.  
  1940.  39. Reworded some of the initialization failure error messages. 
  1941.  
  1942.  40. Added Memory Object Leak Detection to the Functions pull-down. 
  1943.  
  1944.  41. Fixed a memory leak in the General Process Information display. 
  1945.  
  1946.  42. Fixed a memory leak in the T2FreeMemory API function. 
  1947.  
  1948.  43. Added an interface for REXX for some of the API functions. 
  1949.  
  1950.  44. Fixed a problem with the Memory displays which occurred when crossing page 
  1951.      boundaries. 
  1952.  
  1953.  45. Added an output of the source of the base information in the Leak Detector 
  1954.      displays. 
  1955.  
  1956.  46. Fixed a problem with the time interval output when starting working set 
  1957.      after changing the time interval. 
  1958.  
  1959.  47. Made it work with 2.0's Service Pak2. 
  1960.  
  1961.  48. Fixed an error in the T2AnalyzeSwapper API which caused incorrect results 
  1962.      to be returned. 
  1963.  
  1964.  49. Fixed errors in the Open Files display when there are more than 500 files 
  1965.      open. 
  1966.  
  1967.  50. Fixed errors in the disassembler. 
  1968.  
  1969.  51. Removed the Environment output from the General Process Information 
  1970.      display for VDM processes. (The environment hob which is in the PTDA is 
  1971.      not valid and caused problems when trying to display the environment.) 
  1972.  
  1973.  52. Added display of the requested Arena Record to the Har Description 
  1974.      display. 
  1975.  
  1976.  53. Added display of the requested Object Record and its referenced Arena 
  1977.      Record to the Hob Description display. 
  1978.  
  1979.  54. Added allocated memory to the System Leak Detection and Process Leak 
  1980.      Detection displays. 
  1981.  
  1982.  55. Added the Trace control flags to the Global Info Seg display. 
  1983.  
  1984.  56. Fixed an error during initialization on an OS/2 2.0 GA machine. 
  1985.  
  1986.  57. Fixed an error which was caused in opening the sixteenth window. 
  1987.  
  1988.  58. Changed the pointer management during periodic updates, because it was 
  1989.      causing a leak in PMGRE memory. 
  1990.  
  1991.  59. Fixed a problem which caused the segment number of 16-bit objects to be 
  1992.      reported as 0000 in the object description. 
  1993.  
  1994.  60. Added a code or data indicator to the shared part of an object 
  1995.      description. 
  1996.  
  1997.  61. Fixed a problem which caused a trap in Working Set calculations when a 
  1998.      process terminated during the data collection processing. This caused a 
  1999.      change in the device driver THESEUS2.SYS. The change causes the device 
  2000.      driver to disable interrupts during part of its processing and validate 
  2001.      all the addresses it uses for data collection each time it goes disabled. 
  2002.  
  2003.  62. Fixed a problem with the code changed in the previous fix, which caused a 
  2004.      trap in a user of THESEUS0.DLL. 
  2005.  
  2006.  63. Added total threads to the Process List display. 
  2007.  
  2008.  64. Fixed an error in the Swapper display which caused the number of used disk 
  2009.      frames to be underreported. 
  2010.  
  2011.  65. Added code to load certain system pages which might be swapped out. 
  2012.  
  2013.  66. Changed RT2LoadFuncs so that multiple calls to it will not cause multiple 
  2014.      initializations of the underlying functions. 
  2015.  
  2016.  67. Added a column for the number of pages in the working set to the Detail of 
  2017.      Working Set (by Object) display. 
  2018.  
  2019.  68. Added a summary line for each arena and each process on the Detail of 
  2020.      Working Set (by Object) display. 
  2021.  
  2022.  69. Added a Summary by Process display for System Working Set information. 
  2023.  
  2024.  70. Fixed a memory leak in RT2WSSystemTick and RT2WSProcessTick REXX API 
  2025.      functions. 
  2026.  
  2027.  71. Deleted the code in RT2FindProcesses and RT2RamUseByProcess which 
  2028.      attempted to drop the stem variable before constructing the new values. 
  2029.      SysFileTree (part of the RexxUtil package) does not drop the stem, so it 
  2030.      was decided that THESEUS0.DLL should not, either. 
  2031.  
  2032.  72. Fixed an error in the Memory Utilization display which did not properly 
  2033.      count TSD pages when running on a machine with Kernel Debugger installed. 
  2034.  
  2035.  73. Fixed an error in several displays when processing a private arena which 
  2036.      had only a sentinel. 
  2037.  
  2038.  74. Changed the method of specifying the update interval for Detail windows. 
  2039.      There was a problem when specifying an interval of longer than 65 seconds. 
  2040.  
  2041.  75. Fixed an error in the Swapper window processing which occurred when a page 
  2042.      is swapped out and no longer has a copy in RAM. 
  2043.  
  2044.  
  2045. ΓòÉΓòÉΓòÉ 8.2. Changes between v2.0.1 and v2.0.1a ΓòÉΓòÉΓòÉ
  2046.  
  2047.   1. Fixed an error which occurred when displaying selector 0030 by 
  2048.      double-clicking mouse button 1.  The error was caused by not starting at 
  2049.      the limit of this expand down segment. 
  2050.  
  2051.   2. Fixed an error in the Object Description displays which caused nothing to 
  2052.      be displayed in the page table area when the Page Table was not present. 
  2053.  
  2054.   3. Fixed an error which caused the system portions of the Page Tables to 
  2055.      display when the Process Page Table display was requested. 
  2056.  
  2057.   4. Added Periodic Update functions to the Process Hierarchy Window. The 
  2058.      window automatically updates at 10 second interval. 
  2059.  
  2060.  
  2061. ΓòÉΓòÉΓòÉ 8.3. Changes between v2.0.1a and v2.0.1b ΓòÉΓòÉΓòÉ
  2062.  
  2063.   1. Added two more 'C' entry points, T2WSProcessTick2, T2WSStop2, which also 
  2064.      return the System DLL values. 
  2065.  
  2066.  
  2067. ΓòÉΓòÉΓòÉ 8.4. Changes between v2.0.1b and v2.0.1c ΓòÉΓòÉΓòÉ
  2068.  
  2069.   1. Fixed an error in the counting of claimable and swapped memory in the 
  2070.      shared arena in the Process Leak Detection. This was introduced during a 
  2071.      previous attempt at minimizing confusing entries in the System Leak 
  2072.      Detection display. 
  2073.  
  2074.   2. Added two more REXX entry points, RT2WSProcessTick2, RT2WSStop2, which 
  2075.      also return the System DLL values. 
  2076.  
  2077.   3. Fixed an error in the General Process Information display which was caused 
  2078.      by having an environment variable longer than 252 characters. 
  2079.  
  2080.   4. Changed the way Allocated Shared Memory is reported on the System Memory 
  2081.      Leak Detector display. The amount of allocated shared memory will only be 
  2082.      shown on the System line and not on the process's lines. Fields in the 
  2083.      Shared section which are not relevant are blanked. 
  2084.  
  2085.  
  2086. ΓòÉΓòÉΓòÉ 8.5. Changes between v2.0.1c and v2.0.1f ΓòÉΓòÉΓòÉ
  2087.  
  2088.   1. Made it work with a "post CSD" version of OS/2 2.1. (I'm not sure if this 
  2089.      one will ever be released to the public, but the Boca folks needed the 
  2090.      change.) (The starting linear address of the System Arena changed.) 
  2091.  
  2092.      Note:  This caused a change to the device driver THESEUS2.SYS. This is 
  2093.      version 4 of the device driver. 
  2094.  
  2095.   2. Changed the output generated by the Show data from next collection cycle 
  2096.      option on the System Memory Leak Detection display to match the modified 
  2097.      output from version 2.0.1c. 
  2098.  
  2099.   3. Added a function to map the linear address space of all processes at one 
  2100.      time.  This function is Linear Usage by Process under the System pull-down 
  2101.      on the Process Hierarchy window. 
  2102.  
  2103.   4. Changed the way the process names are picked up so that only the 
  2104.      characters before a '.' will be used. (Some people have put the file name 
  2105.      in the NAME statement in the DEF file; e.g. THESEUS2.EXE.) 
  2106.  
  2107.   5. Changed the default value of Use previous sample as base on the Leak 
  2108.      Detection Control dialog from YES to NO. The new default is the mode that 
  2109.      we are using when doing most of our leak detection runs. 
  2110.  
  2111.   6. Added Capture Reference Data to the pop-up menu in the Leak Detection 
  2112.      windows. This makes it work better for most of our runs. 
  2113.  
  2114.   7. Fixed a problem which occurred when a popup menu was on the screen and 
  2115.      another of THESEUS2's windows was selected. 
  2116.  
  2117.   8. Added an Unselect 'link' option to the Misc pull-down on the Detail 
  2118.      window. 
  2119.  
  2120.   9. Eliminated the file THESEUSR.DLL by including the resources within the 
  2121.      file THESEUS2.EXE.  Since the dialogs are not going to be translated, 
  2122.      there is no reason for the extra .DLL file. 
  2123.  
  2124.  10. Added a check for working set greater than 80% of physical RAM in the 
  2125.      System Working Set display.  This is done when the Stop function is 
  2126.      requested. 
  2127.  
  2128.  11. Changed the System Leak Detector to ignore the "sysinit" process. It has 
  2129.      entries in its page table, even though it does not have a private arena. 
  2130.  
  2131.  12. Made it properly recognize the OS/2 2.1 CSD. 
  2132.  
  2133.  13. Fixed an error in the Process column of the Total amount of accessed 
  2134.      memory line on the Process Working Set display. It had the System values 
  2135.      added into it twice. 
  2136.  
  2137.  
  2138. ΓòÉΓòÉΓòÉ 8.6. Changes between v2.0.1f and v2.0.1g ΓòÉΓòÉΓòÉ
  2139.  
  2140.   1. Fixed an error in the RAM Usage by Process display which was caused when a 
  2141.      machine uses the memory above 16M as "fast swap" space. 
  2142.  
  2143.   2. Made it work with OS/2 Warp Beta 1. 
  2144.  
  2145.   3. Added a map of physical memory to the Page Frame Table display. 
  2146.  
  2147.   4. Added an indication as to whether or not the area above 16M is being used 
  2148.      as a "Fast Swap" area to the General System Information display. The 
  2149.      Swapper and Swapper Details displays were also updated to indicate how 
  2150.      much memory is in the "Fast Swap" area. 
  2151.  
  2152.   5. Removed the 3 lines of check data from the bottom of the Process Memory 
  2153.      Utilization display. The tables that contained the information in the PTDA 
  2154.      changed size in the OS/2 Warp version and I no longer think the 
  2155.      information is needed. 
  2156.  
  2157.   6. Added a clarification about the THESEUS0.DLL being a logical part of the 
  2158.      SPM/2 "Distributed Feature" to the Application Programming Interface 
  2159.      Restriction panel. 
  2160.  
  2161.  
  2162. ΓòÉΓòÉΓòÉ 8.7. Changes between v2.0.1g and v2.0.1h ΓòÉΓòÉΓòÉ
  2163.  
  2164.   1. Made a change so that some of the swappable portions of the MTE will be 
  2165.      loaded if they have been swapped out. There are several places in the 
  2166.      display and analysis functions where the swappable portion of the MTE 
  2167.      and/or the object/segment table are needed. This will cause them to be 
  2168.      reloaded. 
  2169.  
  2170.   2. Made the System Working Set and Process Working Set processing work 
  2171.      properly with OS/2 Warp. 
  2172.  
  2173.   3. Added code to display the Alias Record if there is one pointed to from the 
  2174.      Arena Record. 
  2175.  
  2176.   4. Added a section to the documentation titled Linear/Physical Relationship 
  2177.      that explains how the Page Directories are used in the different levels of 
  2178.      OS/2* 2.x. 
  2179.  
  2180.   5. Added a 'pointer' in Is a Process Leaking Memory? (programatic method) to 
  2181.      a White Paper on leak detection. 
  2182.  
  2183.   6. Added a section titled Working Set of a Multi-Process Application? to the 
  2184.      'how to' chapter. 
  2185.  
  2186.  
  2187. ΓòÉΓòÉΓòÉ 8.8. Changes between v2.0.1h and v2.0.1i ΓòÉΓòÉΓòÉ
  2188.  
  2189.   1. Made a change so that the Swapper analysis would be correct even if some 
  2190.      of the Page Tables have been paged out. This fixes APAR IC07111. The page 
  2191.      tables which have been paged out will be reloaded. 
  2192.  
  2193.   2. Added analysis of the free linear space to the Object Summary displays. 
  2194.      This causes the free linear areas to be shown in the proper place in the 
  2195.      linear address (memory object) list. It also shows at the end the total 
  2196.      and the largest 10 free blocks, sorted in free size order. 
  2197.  
  2198.   3. Changed the Page Frame Table display to properly identify idle pages. 
  2199.      Locked pages were improperly being identified as idle. 
  2200.  
  2201.   4. Changed the Free, Idle, and Locked Memory display to properly skip 
  2202.      sections of the physical address space that are not included in the Page 
  2203.      Range Table. 
  2204.  
  2205.   5. Added Resident RAM to the Free, Idle, and Locked Memory display. 
  2206.  
  2207.   6. Added a popup warning panel before the first display of the Ram Usage by 
  2208.      Process display. The warning is because the 'system' tends to use all 
  2209.      available RAM and many users have gotten confused about this. More 
  2210.      explanation was also added to the help panel. 
  2211.  
  2212.   7. Added the Page Contents display to the System pull-down.  This shows the 
  2213.      contents of each page of physical memory. 
  2214.  
  2215.   8. Made it work with OS/2 Warp Beta 2. 
  2216.  
  2217.  
  2218. ΓòÉΓòÉΓòÉ 8.9. Changes between v2.0.1i and v2.0.1j ΓòÉΓòÉΓòÉ
  2219.  
  2220.   1. Added a Secondary pull-down to the Process Working Set display. It has: 
  2221.  
  2222.     o Usage Type Display, which shows the working set of the virtual pages 
  2223.       based on how the memory is used. 
  2224.     o Last Referenced Graphic, which shows the working set of the vitrual pages 
  2225.       as a graphic. 
  2226.  
  2227.   2. Added a Show process contexts display to the Functions pull-down on Detail 
  2228.      displays. This shows which processes have access to a specified linear 
  2229.      address. 
  2230.  
  2231.   3. Added the ability to change the default action of double clicking mouse 
  2232.      button 2.  This is on the Double click options... option of the Misc 
  2233.      pull-down on detail windows. The normal default is to "Describe" the 
  2234.      memory object. An alternate default is to "Show process contexts" of the 
  2235.      memory object. 
  2236.  
  2237.   4. Added a Resident Memory Analysis display to the System pull-down of the 
  2238.      main panel. 
  2239.  
  2240.   5. Corrected an error in the working set computations.  My analysis on a 
  2241.      "bare bones" system indicates that the error was only 0.2%, so that should 
  2242.      not invalidate existing results. 
  2243.  
  2244.   6. Corrected an error on the Linear Memory Map display which caused the 
  2245.      process names to be truncated when copied to the clipboard or printed. 
  2246.  
  2247.   7. Fixed an error caused by requesting Compare Present Leak Data after the 
  2248.      process being monitored had terminated. 
  2249.  
  2250.   8. Fixed an error caused by inputting values on some of the dialogs with 
  2251.      leading zeroes. 
  2252.  
  2253.   9. Made it properly recognize OS/2 "Warp 3.0". 
  2254.  
  2255.  10. Made it properly recognize the "compressed" pages that are not in 
  2256.      SWAPPER.DAT.  This affected the Swapper display. 
  2257.  
  2258.  
  2259. ΓòÉΓòÉΓòÉ 8.10. Changes between v2.0.1j and v2.0.1k ΓòÉΓòÉΓòÉ
  2260.  
  2261.   1. Changed the Control... dialog on the Leak Detection displays so that the 
  2262.      change from not using the previous sample as the base to using the 
  2263.      previous sample as the base will take place immediately, instead of after 
  2264.      the next collection cycle. 
  2265.  
  2266.   2. Changed the Working Set Graphic display to not change the size of the 
  2267.      window when the description is longer than the display is wide.  I've 
  2268.      added a second line for the description. 
  2269.  
  2270.   3. Added Periodic Update control to those displays which did not already have 
  2271.      it.  (There are some displays which do not have this control, as the 
  2272.      underlying data cannot change and, therefore, periodic update does not 
  2273.      mean anything.) 
  2274.  
  2275.   4. Added a Hot Spot Detection display.  It is accessed from the Functions 
  2276.      pull-down of a Detail display. It can be used to determine which bytes 
  2277.      within a page are changing. It has both a graphic and text representation 
  2278.      of the page. 
  2279.  
  2280.  
  2281. ΓòÉΓòÉΓòÉ 9. Process Hierarchy Window ΓòÉΓòÉΓòÉ
  2282.  
  2283. The Process Hierarchy window shows the parent/child relationships of processes 
  2284. as they currently exist in memory. 
  2285.  
  2286. After a process has been selected, you may then move on to a Detail window. 
  2287.  
  2288. Options available on the Process Hierarchy window are: 
  2289.  
  2290.  System      Lists the displays applicable to the system as a whole. 
  2291.  Process     Lists the displays applicable to the selected process. 
  2292.  Registers   Lists the displays applicable to the processor. 
  2293.  Misc        Lists the miscellaneous functions. 
  2294.  Window      Lists the existing THESEUS2 Detail windows. 
  2295.  Help        Lists the help functions. 
  2296.  
  2297.  The window automatically updates at 10 second interval. This can be changed 
  2298.  with the Options dialog of the Contents Update sub-menu of the Misc pull-down. 
  2299.  
  2300.  
  2301. ΓòÉΓòÉΓòÉ 9.1. Selecting a Process ΓòÉΓòÉΓòÉ
  2302.  
  2303. You may select a process in either of two ways: 
  2304.  
  2305.  o Place the mouse pointer over a process name, then press mouse button 1. 
  2306.  
  2307.  o Use the arrow keys: 
  2308.  
  2309.     Left    Moves to the parent of the current process. 
  2310.     Right   Moves to the oldest child of the current process. 
  2311.     Up      Moves to the next younger sibling of the current process. 
  2312.     Down    Moves to the next older sibling of the current process. 
  2313.  
  2314.  If no process is selected, pressing any arrow key makes "sysinit" the selected 
  2315.  process. 
  2316.  
  2317.  
  2318. ΓòÉΓòÉΓòÉ 9.2. Keys ΓòÉΓòÉΓòÉ
  2319.  
  2320. The key usage in the Process Hierarchy window is: 
  2321.  
  2322.  Left            Moves to the parent of the current process. 
  2323.  Right           Moves to the oldest child of the current process. 
  2324.  Up              Moves to the next younger sibling of the current process. 
  2325.  Down            Moves to the next older sibling of the current process. 
  2326.  Alt+Left        Scrolls the window information left. 
  2327.  Alt+Right       Scrolls the window information right. 
  2328.  Alt+Up          Scrolls the window information up. 
  2329.  Alt+Down        Scrolls the window information down. 
  2330.  Page Up         Scrolls the window information up 1/2 the screen height. 
  2331.  Page Down       Scrolls the window information down 1/2 the screen height. 
  2332.  Print Screen    Prints the contents of the window. 
  2333.  F1              Requests contextual help. 
  2334.  F3              Exits THESEUS2. 
  2335.  Enter           Displays General Process Information for the selected process. 
  2336.                  (This is the same as double-clicking mouse button 1.) 
  2337.  
  2338.  
  2339. ΓòÉΓòÉΓòÉ 9.3. System ΓòÉΓòÉΓòÉ
  2340.  
  2341. The System pull-down contains displays applicable to the system as a whole. A 
  2342. process does not have to be selected in order to select one of these displays. 
  2343.  
  2344. Functions available are: 
  2345.  
  2346.  Working Set 
  2347.            Displays the working set of memory for the entire system. 
  2348.  Memory Leak Detection 
  2349.            Displays the number of pages of memory that each process is 
  2350.            accumulating. 
  2351.  Nonswappable Memory Analysis 
  2352.            Displays information about the contents of nonswappable memory. 
  2353.  Linear Usage by Process 
  2354.            Displays a map of the linear address usage for all processes. This 
  2355.            includes the private and shared arenas. 
  2356.  Page Contents 
  2357.            Displays the contents of each page of physical memory. 
  2358.  RAM Usage by Process 
  2359.            First determines and then displays the amount of RAM consumed my 
  2360.            each process. 
  2361.  Free, Idle and Locked Memory 
  2362.            Generates the summary information about free, idle and locked pages. 
  2363.  Swapper 
  2364.            Displays information about the contents of the SWAPPER.DAT file. 
  2365.  General System 
  2366.            A set of displays containing general system information. 
  2367.  Kernel Information 
  2368.            A set of displays containing kernel information. 
  2369.  
  2370.  
  2371. ΓòÉΓòÉΓòÉ 9.3.1. Working Set ΓòÉΓòÉΓòÉ
  2372.  
  2373. Select one: 
  2374.  
  2375.  Selecting 
  2376.  
  2377.  Example Output 
  2378.  
  2379.  Contents of Display 
  2380.  
  2381.  Algorithm 
  2382.  
  2383.  Illustration 
  2384.  
  2385.  Related Topics 
  2386.  
  2387.  
  2388. ΓòÉΓòÉΓòÉ <hidden> Selecting the Working Set Display ΓòÉΓòÉΓòÉ
  2389.  
  2390. When you select the Working Set option of the System pull-down on the Process 
  2391. Hierarchy window, the memory working set of the entire System is computed and 
  2392. displayed. 
  2393.  
  2394. There are optional values that can be shown in realtime. 
  2395.  
  2396.  
  2397. ΓòÉΓòÉΓòÉ <hidden> Example of the Working Set Display ΓòÉΓòÉΓòÉ
  2398.  
  2399. Working Set for the entire System:
  2400. Use the 'Functions' pull-down or the 'Popup Menu'
  2401.   to start and stop the data collection.
  2402. Collection started: interval = 5, Working Set is 3 intervals.
  2403. current time  --------- Total ----------   ------   ------ ---- Process -----
  2404. hh:mm:ss.tt      now       ws   accessed     Free     Idle contributed  total
  2405. 10:49:02.84    4.789M   4.789M     4.789M   3.191M   0.008M          7      7
  2406. 10:49:07.84    4.664M   4.828M     4.828M   3.191M   0.008M          7      7
  2407. 10:49:12.84    4.664M   4.828M     4.828M   3.191M   0.008M          7      7
  2408. 10:49:17.84    4.664M   4.664M     4.828M   3.191M   0.008M          7      7
  2409. 10:49:22.84    4.664M   4.664M     4.828M   3.191M   0.008M          7      7
  2410. 10:49:27.84    4.664M   4.664M     4.828M   3.191M   0.008M          7      7
  2411. 10:49:32.84    4.734M   4.734M     4.898M   3.191M   0.008M          7      7
  2412. 10:49:37.87    5.172M   5.184M     5.199M   3.180M   0.008M          7      7
  2413.  
  2414. 8 samples collected.
  2415.                                     Total
  2416. Absolute minimum amount of memory:  5.172M
  2417. Recommended amount of memory:       5.184M
  2418. Total amount of accessed memory:    5.199M
  2419.  
  2420.  
  2421. ΓòÉΓòÉΓòÉ <hidden> Contents of the Working Set Display ΓòÉΓòÉΓòÉ
  2422.  
  2423. The following values are computed and optionally presented in realtime: 
  2424.  
  2425.  Column         Meaning 
  2426.  
  2427.  current time   The time of the sample, presented in 
  2428.                 hours:minutes:seconds.hundredths. 
  2429.  
  2430.  now            The amount of memory referenced in the current interval. 
  2431.  
  2432.  ws             The working set, which is the amount of memory referenced in 
  2433.                 the past n intervals. 
  2434.  
  2435.  accessed       The total amount of memory accessed since the start of the 
  2436.                 collection run. 
  2437.  
  2438.  Free           The amount of free memory. 
  2439.  
  2440.  Idle           The amount of idle memory. 
  2441.  
  2442.  Process contributed The number of processes that had memory accessed during 
  2443.                 the interval. This value indicates the number of processes 
  2444.                 which are both running and touching non-system memory. 
  2445.  
  2446.  Process total  The total number of processes found during the interval. This 
  2447.                 number changes as processes are created or destroyed. 
  2448.  
  2449.  When the Stop option is selected: 
  2450.  
  2451.  ii samples collected. 
  2452.            The number of samples collected is reported (in decimal notation). 
  2453.  Absolute minimum amount of memory 
  2454.            The maximum value from the now column. This is the amount of memory 
  2455.            absolutely required to run the application without "thrashing" 
  2456.            memory. 
  2457.  Recommended amount of memory 
  2458.            The maximum value from the ws column. This is the recommended amount 
  2459.            of memory for the application to run with minimum impact on paging. 
  2460.  Total amount of accessed memory 
  2461.            The maximum value from the accessed column. This is the amount of 
  2462.            memory required to run the application with no paging activity. 
  2463.  
  2464.  Note:  If either Absolute minimum amount of memory or Recommended amount of 
  2465.  memory are more than 80% of physical RAM, then the results are probably not 
  2466.  valid. You should run your tests on a machine which has too much RAM, in order 
  2467.  to get meaningful results. 
  2468.  
  2469.  
  2470. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2471.  
  2472.  o Memory addressing 
  2473.  
  2474.  o Memory Management Control Blocks 
  2475.  
  2476.  o Memory Analysis Techniques 
  2477.  
  2478.  o Detail of Working Set (by Page) 
  2479.  
  2480.  o Detail of Working Set (by Object) 
  2481.  
  2482.  o Summary by Process 
  2483.  
  2484.  
  2485. ΓòÉΓòÉΓòÉ <hidden> System Working Set Algorithm ΓòÉΓòÉΓòÉ
  2486.  
  2487. To compute the working set for the entire OS/2 system, you need to know: 
  2488.  
  2489.  o Which pages have been referenced 
  2490.  o When the pages were touched. 
  2491.  
  2492.  The algorithm is: 
  2493.  
  2494.   1. The accessed flags are cleared from the Page Tables of all processes 
  2495.      running in the system. 
  2496.  
  2497.   2. A timer is started, and on each timer tick: 
  2498.  
  2499.      a. The pages which have been accessed are noted. 
  2500.      b. The accessed flags are cleared. 
  2501.      c. The number of pages which have been accessed anytime within the 
  2502.         specified number of intervals is counted. 
  2503.      d. Summary information for the interval is generated. 
  2504.      e. The interval information is displayed, if requested. 
  2505.  
  2506.   3. When the Stop option is selected: 
  2507.  
  2508.      a. Summary numbers for the entire run are generated. They are: 
  2509.  
  2510.        Absolute minimum amount of memory 
  2511.                  The maximum of all the now entries. 
  2512.        Recommended amount of memory 
  2513.                  The maximum of all the ws entries. 
  2514.        Total amount of accessed memory 
  2515.                  The maximum of all the accessed entries. 
  2516.  
  2517.      b. The results are displayed. 
  2518.  
  2519.  
  2520. ΓòÉΓòÉΓòÉ <hidden> Working Set Illustration ΓòÉΓòÉΓòÉ
  2521.  
  2522. To illustrate how the working set algorithm works, the follow table will be 
  2523. used: 
  2524.  
  2525. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2526. Γöétick  Γöéwhich pagesΓöépage 1Γöépage 2Γöépage 3Γöénow   Γöéws    ΓöéaccessedΓöé
  2527. Γöé      Γöéaccessed   Γöé      Γöé      Γöé      Γöé      Γöé      Γöé        Γöé
  2528. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2529. Γöé 0    Γöé           Γöé 255  Γöé 255  Γöé 255  Γöé      Γöé      Γöé        Γöé
  2530. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2531. Γöé 1    Γöé 1         Γöé 1    Γöé 255  Γöé 255  Γöé 1    Γöé 1    Γöé 1      Γöé
  2532. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2533. Γöé 2    Γöé 2         Γöé 2    Γöé 1    Γöé 255  Γöé 1    Γöé 2    Γöé 2      Γöé
  2534. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2535. Γöé 3    Γöé 1 3       Γöé 1    Γöé 2    Γöé 1    Γöé 2    Γöé 3    Γöé 3      Γöé
  2536. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2537. Γöé 4    Γöé 1         Γöé 1    Γöé 3    Γöé 2    Γöé 1    Γöé 3    Γöé 3      Γöé
  2538. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2539. Γöé 5    Γöé 1         Γöé 1    Γöé 4    Γöé 3    Γöé 1    Γöé 2    Γöé 3      Γöé
  2540. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2541. Γöé 6    Γöé 1         Γöé 1    Γöé 5    Γöé 4    Γöé 1    Γöé 1    Γöé 3      Γöé
  2542. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2543.  
  2544. The number of intervals in the working set is 3 for this illustration. 
  2545.  
  2546. The meanings of the columns are: 
  2547.  
  2548.  Column            Meaning 
  2549.  tick              The interval number. 
  2550.  pages accessed    Indicates which page numbers were accessed during this 
  2551.                    interval. 
  2552.  page n            The number of intervals since the page was accessed. (255 
  2553.                    indicates the page has never been accessed. The value is not 
  2554.                    allowed to be incremented above 254, so that value simply 
  2555.                    means that the page was accessed "a long time ago.") This 
  2556.                    corresponds to the time column in the detail displays. 
  2557.  now               The number of pages accessed in this interval. This 
  2558.                    corresponds to the now column in the displays. 
  2559.  ws                The number of pages considered to be in the working set. 
  2560.                    This corresponds to the ws column in the displays. 
  2561.  accessed          The number of pages which have been accessed since the run 
  2562.                    began. This corresponds to the accessed column in the 
  2563.                    displays. 
  2564.  
  2565.  Explanation at each tick: 
  2566.  
  2567.  0  At initialization all pages are marked as "never been accessed." 
  2568.  1  Page 1 was accessed. Since it was the only page accessed in the last 
  2569.     interval, the now column has 1. Page 1 has been accessed within the last 3 
  2570.     intervals, so the ws column has 1. 
  2571.  2  Page 2 was accessed. Since it was the only page accessed in the last 
  2572.     interval, the now column has 1. Pages 1 and 2 have been accessed within the 
  2573.     last 3 intervals, so the ws column has 2. 
  2574.  3  Pages 1 and 3 were accessed. They were the only pages accessed in the last 
  2575.     interval, so the now column has 2. Pages 1, 2 and 3 have been accessed 
  2576.     within the last 3 intervals, so the ws column has 3. 
  2577.  4  Page 1 was accessed. Since it was the only page accessed in the last 
  2578.     interval, the now column has 1. Pages 1, 2 and 3 have been accessed within 
  2579.     the last 3 intervals, so the ws column has 3. 
  2580.  5  Page 1 was accessed. Since it was the only page accessed in the last 
  2581.     interval, the now column has 1. Pages 1 and 3 have been accessed within the 
  2582.     last 3 intervals, so the ws column has 2. (Page 2 was accessed 4 intervals 
  2583.     ago.) 
  2584.  6  Page 1 was accessed. Since it was the only page accessed in the last 
  2585.     interval, the now column has 1. Page 1 has been accessed within the last 3 
  2586.     intervals, so the ws column has 1. (Page 2 was accessed 5 intervals ago and 
  2587.     page 3 was accessed 4 intervals ago.) 
  2588.  
  2589.  
  2590. ΓòÉΓòÉΓòÉ 9.3.2. Memory Leak Detection ΓòÉΓòÉΓòÉ
  2591.  
  2592. Select one: 
  2593.  
  2594.  Selecting 
  2595.  
  2596.  Example Output 
  2597.  
  2598.  Contents of Display 
  2599.  
  2600.  Related Topics 
  2601.  
  2602.  
  2603. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  2604.  
  2605. When you select the Memory Leak Detection option of the System pull-down on the 
  2606. Process Hierarchy window, information about memory accumulation for each 
  2607. process in the system is computed and shown. 
  2608.  
  2609. This can be done either on a periodic basis or under user control. See Related 
  2610. Topics for the references for specifying control. 
  2611.  
  2612.  
  2613. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  2614.  
  2615. Memory leak detection:
  2616. < End of THESEUS2 (v 2.0s) output @ 13:21:01 on 8/5/1993 >
  2617. Use the 'Function' pull-down to start and stop the data collection.
  2618. Leak data captured.
  2619. Periodic update started with interval of 10 seconds.
  2620. Previous sample will be used as the base.
  2621. < End of THESEUS2 (v 2.0s) output @ 13:21:10 on 8/5/1993 >
  2622. ----------Private-----------  -----------Shared-----------
  2623. Allocated  Committed  Actual  Allocated  Committed  Actual   PID   Name
  2624.       +16        +17     +17        +64                     0000   System
  2625.       +16         +1      +1                    +0      +0  0004   PMSHL32
  2626.      +160        +56     +39                 +1540    +774  0061  +CMD
  2627. < End of THESEUS2 (v 2.0s) output @ 13:21:21 on 8/5/1993 >
  2628. ----------Private-----------  -----------Shared-----------
  2629. Allocated  Committed  Actual  Allocated  Committed  Actual   PID   Name
  2630.       -16        -17     -17        -64                     0000   System
  2631.       -16         -1      -1                    +0      +0  0004   PMSHL32
  2632.      -160        -56     -39                 -1540    -774  0061  -CMD
  2633. < End of THESEUS2 (v 2.0s) output @ 13:21:31 on 8/5/1993 >
  2634. Periodic updated stopped.
  2635. < End of THESEUS2 (v 2.0s) output @ 13:21:32 on 8/5/1993 >
  2636.  
  2637.  
  2638. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  2639.  
  2640. One line is displayed for each process whose allocated, committed, or actual 
  2641. (present + swapped) memory values have changed: 
  2642.  
  2643.  Column      Meaning 
  2644.  Private Allocated The change in the number of pages of allocated (virtual) 
  2645.              memory in the private arena. 
  2646.  Private Committed The change in the number of pages of committed memory in the 
  2647.              private arena. 
  2648.  Private Actual The change in the number of pages of actual memory in the 
  2649.              private arena. 
  2650.  Shared Allocated The change in the number of pages of allocated (virtual) 
  2651.              memory in the shared arena. 
  2652.  Shared Committed The change in the number of pages of committed memory in the 
  2653.              shared arena. 
  2654.  Shared Actual The change in the number of pages of actual memory in the shared 
  2655.              arena. 
  2656.  PID         The PID of the process for this line. 
  2657.  Name        The name of the process on this line. If the process is new (not 
  2658.              present in the base data), then a prefix '+' is shown. If the 
  2659.              process has terminated, then a prefix '-' is shown. 
  2660.  
  2661.  
  2662. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2663.  
  2664.  o Memory addressing 
  2665.  
  2666.  o Memory states 
  2667.  
  2668.  o Leak detection control 
  2669.  
  2670.  o Manual data capture 
  2671.  
  2672.  o Manual data compare 
  2673.  
  2674.  
  2675. ΓòÉΓòÉΓòÉ 9.3.3. Nonswappable Memory Analysis ΓòÉΓòÉΓòÉ
  2676.  
  2677. Select one: 
  2678.  
  2679.  Selecting 
  2680.  
  2681.  Example Output 
  2682.  
  2683.  Contents of Display 
  2684.  
  2685.  Related Topics 
  2686.  
  2687.  
  2688. ΓòÉΓòÉΓòÉ <hidden> Selecting the Nonswappable Memory Analysis display ΓòÉΓòÉΓòÉ
  2689.  
  2690. When you select the Nonswappable Memory Analysis option of the System pull-down 
  2691. on the Process Hierarchy window, information about nonswappable memory is 
  2692. displayed. 
  2693.  
  2694.  
  2695. ΓòÉΓòÉΓòÉ <hidden> Example of the Nonswappable Memory Analysis display ΓòÉΓòÉΓòÉ
  2696.  
  2697. This is from a freshly booted ThinkPad 720C with 16M RAM and 160M hardfile, 
  2698. running OS/2 Warp, using the "Easy Installation" option. 
  2699.  
  2700. Nonswappable Memory analysis:
  2701. Apps & DLLs      = 00009000 ->   36K -> 0.035M
  2702. Process overhead = 00048000 ->  288K -> 0.281M
  2703. DD allocated     = 0000D000 ->   52K -> 0.051M
  2704. DOS              = 00008000 ->   32K -> 0.031M
  2705. VDisk            = 00000000 ->    0K -> 0.000M
  2706. File system      = 001D9000 -> 1892K -> 1.848M
  2707. Kernel code      = 00063000 ->  396K -> 0.387M
  2708. Kernel data      = 0004D000 ->  308K -> 0.301M
  2709. Kernel heap      = 00072000 ->  456K -> 0.445M
  2710.  
  2711. Total            = 00361000 -> 3460K -> 3.379M
  2712.  
  2713.  
  2714. ΓòÉΓòÉΓòÉ <hidden> Contents of the Nonswappable Memory Analysis Display ΓòÉΓòÉΓòÉ
  2715.  
  2716. The information presented on the Nonswappable Memory Analysis display is as 
  2717. follows: 
  2718.  
  2719.  Apps & DLLS         Memory which is in the private and shared arenas. 
  2720.  Process overhead    Memory which is in the system arena and is used by the 
  2721.                      system to manage processes. 
  2722.  DD allocated        Memory allocated by device drivers, or on their behalf. 
  2723.  DOS                 Memory allocated for the Virtual DOS Machine support. 
  2724.  VDisk               Memory allocated for a VirtualDisk. 
  2725.  File system         Memory allocated by the File System, including FAT chache. 
  2726.  Kernel code         Kernel code. 
  2727.  Kernel data         Kernel data and whatever doesn't fit in the other 
  2728.                      categories. 
  2729.  Kernel heap         The resident and locked portions of the kernel heap, 
  2730.                      including HPFS cache. 
  2731.  xxxxxxxx            Amount of memory in hexadecimal bytes in this category. 
  2732.  iiiK                Amount of memory in Kilobytes in this category. 
  2733.  iiiM                Amount of memory in Megabytes in this category. 
  2734.  
  2735.  
  2736. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2737.  
  2738.  o Memory addressing 
  2739.  
  2740.  
  2741. ΓòÉΓòÉΓòÉ 9.3.4. Linear Usage by Process ΓòÉΓòÉΓòÉ
  2742.  
  2743. Select one: 
  2744.  
  2745.  Selecting 
  2746.  
  2747.  Example Output 
  2748.  
  2749.  Contents of Display 
  2750.  
  2751.  Related Topics 
  2752.  
  2753.  
  2754. ΓòÉΓòÉΓòÉ <hidden> Selecting the Linear Usage by Process Display ΓòÉΓòÉΓòÉ
  2755.  
  2756. When you select the Linear Usage by Process option of the System pull-down on 
  2757. the Process Hierarchy window, information about usage of linear address space 
  2758. of all processes is shown. 
  2759.  
  2760. For the private arena, each block of memory (64K) is shown on a separate line, 
  2761. with the processes being shown as columns. Whether a block is allocated or free 
  2762. in each process is shown. 
  2763.  
  2764. For the shared arena, each memory object is shown on a separate line, with the 
  2765. processes being shown as columns. The highest access ability of each process is 
  2766. indicated. 
  2767.  
  2768.  
  2769. ΓòÉΓòÉΓòÉ <hidden> Example of the Linear Usage by Process Display ΓòÉΓòÉΓòÉ
  2770.  
  2771. Linear memory map:
  2772.          Process Names
  2773.          sLLLLECSEPHSSSEPMWWPMKSLNLSCSRSASACACVT
  2774.          yOAASPNPPMAPPTPMUKKMALPSBPPMPEPCPSMCMDH
  2775.          sGNNDWTMWSRMMOWSGSSDHOMCQDMSMMMSMPKSDME
  2776.          iDMDARRNMHDSNPPHLTTAJN
  2777.          nASLEOLBULENELSLRAALODIISLOALACAS0MEEEE
  2778.          iEGLMU
  2779.          tME
  2780.  
  2781.  
  2782. address   usage...
  2783. 00000000  ....................................0.
  2784. 00010000  00000000000000000000000000000000..0000
  2785. 00020000  11111101111011111110101110101111..1100
  2786. 00030000  2222220222202222.220202220202222002200
  2787. 00040000  33333303333033332331303330303333113310
  2788. 00050000  44444414444144443441404440414344224451
  2789. 00060000  55555525555255554551505550525455335591
  2790. 00070000  66666636666366665662606660636565446632
  2791. 00080000  x77777477774777767737077707476755x7773
  2792. 00090000   x8xx85x8885888878848088808587856 8814
  2793. 000A0000    x  96 9996999989959099909698957 99.5
  2794. 000B0000       07 0xx7000.9x060000000709058 00.6
  2795. 000C0000       18 1  811100 171011101810159 1x77
  2796. 000D0000       29 2  9221x. 2820.2202921250 2 18
  2797. ┬╖┬╖┬╖
  2798. 01440000                6
  2799. 01450000                .
  2800. 01460000                .
  2801. 01470000                7
  2802. 01480000                x
  2803. 01490000
  2804.  
  2805. There is 43.500M between the private and shared arenas.
  2806. Shared arena starts at 04000000, which is 64.000M.
  2807.  Free memory from 04000000 for 225.750M, which is equivalent to 3612 64K spaces.
  2808. 121C0000  ..............o.......................  PMWIN    allocated it
  2809. 121D0000  ......w.ww.wwwoww.wwwwwwwwwwwww.w.ww.w  PMGRE    allocated it
  2810.  object is 128K
  2811. 121F0000  ......w.ww.wwwoww.wwwwwwwwwwwww.w.ww.w  PMGRE    allocated it
  2812. 12200000  ......w.ww.wwwoww.wwwwwwwwwwwww.w.ww.w  PMGRE    allocated it
  2813. 12210000  ......w.ww.wwwoww.wwwwwwwwwwwww.w.ww.w  PMGRE    allocated it
  2814. 12220000  ..............o.......................  PMWIN    allocated it
  2815. 12230000  ........w.....o.......................  IBM42XX  #0008 (shared data)
  2816. 12240000  ........e.....o.......................  IBM42XX  #0005 (shared code)
  2817. 12250000  ........e.....o.......................  IBM42XX  #0003 (shared code)
  2818. 12260000  ........e.....o.......................  IBM42XX  #0002 (shared code)
  2819. ┬╖┬╖┬╖
  2820. 1AE50000  ........o..eeeeee.eeeeeeeeeeeee.e.ee.e  IBMXGA32 #0003 (shared code)
  2821.  object is 256K
  2822. 1AE90000  ........o..eeeeee.eeeeeeeeeeeee.e.ee.e  IBMXGA32 #0004 (shared code)
  2823. 1AEA0000  ........o..wwwwww.wwwwwwwwwwwww.w.ww.w  IBMXGA32 #0005 (shared data)
  2824.  Free memory from 1AEB0000 for 17.188M, which is equivalent to 275 64K spaces.
  2825. 1BFE0000  rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.r  infoseg (local or global) (owner)
  2826. 1BFF0000  rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.r  infoseg (local or global) (owner)
  2827. Total free space in the shared arena = 39.500M.
  2828.  
  2829.  
  2830. ΓòÉΓòÉΓòÉ <hidden> Contents of the Linear Usage by Process Display ΓòÉΓòÉΓòÉ
  2831.  
  2832. The process names are shown at the tops of their respective columns, with the 
  2833. names being printed vertically. The processes will be listed in the same order 
  2834. that they are in the Process List option of the General System option of the 
  2835. System pull-down. 
  2836.  
  2837. Each of the entries is Hyperblock linked. When you select a particular entry, 
  2838. the process context and linear address are both set so that the normal 
  2839. "display" and "describe" functions work properly. 
  2840.  
  2841.  For the private arena: 
  2842.  
  2843.     o One line is displayed for each 64K block of address space. Each memory 
  2844.       object starts on a 64K boundary and is a multiple of 64K bytes long. 
  2845.       (This is part of the definition of the "16-bit compatibility region" that 
  2846.       all the application processes run in.) 
  2847.  
  2848.     o Each process is shown as a separate column. 
  2849.  
  2850.     o Each memory object is represented by a number. The numbers start at 0 for 
  2851.       each process. Each time a new memory object is encountered, the number is 
  2852.       incremented. So, if you see a vertical string of several 0's, that 
  2853.       indicates that the memory object is more than 64K bytes long. For 
  2854.       instance, if there are 3 0's in a row, then it is between 132K and 192K 
  2855.       bytes long. 
  2856.  
  2857.       Note:  If there are memory objects less than 64K in size, they will 
  2858.       consume numbers, but not necessarily be displayed.  The VDM process has 
  2859.       some that are like this. Since the purpose in this display is to look at 
  2860.       overall usage of linear addresss space, this is not considered to be a 
  2861.       problem. 
  2862.  
  2863.     o Free space in the address space is represented with a dot (.). 
  2864.  
  2865.     o An x is put at the end of the private arena for each process. The x is on 
  2866.       the line following the last allocated block. 
  2867.  
  2868.     o The free space between the end of the largest private arena and the 
  2869.       shared arena sentinel is reported. 
  2870.  
  2871.  For the shared arena: 
  2872.  
  2873.     o One line is displayed for each memory object. If the memory object is 
  2874.       greater than 64K bytes, then another line is used to report the size of 
  2875.       the memory object in Kilobytes or Megabytes, whichever is appropriate. 
  2876.  
  2877.     o Each process is shown as a separate column. 
  2878.  
  2879.     o Each memory object is represented by a letter, indicating what 
  2880.       accessability the process has to the memory object, with the following 
  2881.       priority applied to the various valid attributes: 
  2882.  
  2883.        Character    Meaning 
  2884.  
  2885.        i            The object is "instance" data for the process. 
  2886.  
  2887.        o            This process is the "originator" of the memory object. 
  2888.  
  2889.        w            The process can write to the memory object. 
  2890.  
  2891.        e            The process can execute the code in the memory object. 
  2892.  
  2893.        r            The process can read the contents of the memory object. 
  2894.  
  2895.        s            The process has shared access, which was not one of the 
  2896.                     above. (I do not believe it is possible to get this 
  2897.                     attribute, but it is here as a "default" value, just in 
  2898.                     case.) 
  2899.  
  2900.        .            The process does not have access to the memory object. This 
  2901.                     is used so that it is easier to scan across the display and 
  2902.                     keep the eye on a particular line. 
  2903.  
  2904.     o Free space in the address space is reported as the amount in Kilobytes. 
  2905.       If the amount is greater than 64K, the number of 64K memory objects which 
  2906.       would fit in the free space is reported. 
  2907.  
  2908.     o The total free space in the shared arena is reported at the end. For 
  2909.       purposes of this calculation, the shared arena is considered to start at 
  2910.       the first memory object, not at the address in the sentinel. The address 
  2911.       in the sentinel is a "high water mark" of the private arenas, with a 
  2912.       minimum of 64M. 
  2913.  
  2914.  
  2915. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2916.  
  2917.  o Memory addressing 
  2918.  
  2919.  o Memory states 
  2920.  
  2921.  
  2922. ΓòÉΓòÉΓòÉ 9.3.5. Page Contents ΓòÉΓòÉΓòÉ
  2923.  
  2924. Select one: 
  2925.  
  2926.  Selecting 
  2927.  
  2928.  Example Output 
  2929.  
  2930.  Contents of Display 
  2931.  
  2932.  Related Topics 
  2933.  
  2934.  
  2935. ΓòÉΓòÉΓòÉ <hidden> Selecting the Page Contents display ΓòÉΓòÉΓòÉ
  2936.  
  2937. When you select the Page Contents option of the System pull-down on the Process 
  2938. Hierarchy window, information about the contents and state of each page of 
  2939. physical memory is shown. 
  2940.  
  2941.  
  2942. ΓòÉΓòÉΓòÉ <hidden> Example of the Page Contents Display ΓòÉΓòÉΓòÉ
  2943.  
  2944.                          relative
  2945. physical        vp   hob     page owner state  description
  2946. 00000000  FF3FE000  FF77     0000               generic init-time only
  2947. 00001000  FF3FE050  0007     0000  FF6D    R   DosHelp segment (owner)
  2948. ┬╖┬╖┬╖
  2949. 0000E000  FF41980A  070A     000B  FFF7     D  PMGRE    allocated it
  2950. ┬╖┬╖┬╖
  2951. 00130000  FF3FE492  0015     000B  FFAA   L    os2krnl load image (owner)
  2952. ┬╖┬╖┬╖
  2953. 002FF000                                        free
  2954. 00300000  FF411A92  0859     0005  0A7F  I     TCP32DLL #0001 (shared code)
  2955. ┬╖┬╖┬╖
  2956. 017FF000  FF407B8C  001D     000A  FFB3    R   VP array (owner)
  2957.  
  2958.    69 pages (  276K or  0.270M) are marked I (Idle).
  2959.   176 pages (  704K or  0.688M) are marked L (Locked).
  2960.  1727 pages ( 6908K or  6.746M) are marked R (Resident).
  2961.  1228 pages ( 4912K or  4.797M) are marked D (Dirty).
  2962. There are 6045 pages (24180K or 23.613M) reported.
  2963.  
  2964.  
  2965. ΓòÉΓòÉΓòÉ <hidden> Contents of the Page Contents Display ΓòÉΓòÉΓòÉ
  2966.  
  2967. One line is displayed for each entry in the Page Frame Table: 
  2968.  
  2969.  Column          Meaning 
  2970.  physical        The physical address for the page on this line. 
  2971.  vp              The linear address of the Virtual Page Table entry for this 
  2972.                  page. 
  2973.  hob             The hob of the object record associated with this memory 
  2974.                  object. 
  2975.  relative page   Which page within the memory object. 
  2976.  owner           This is either the special system owner code or the hob of the 
  2977.                  memory object that created this memory object. 
  2978.  state           The state of the page: 
  2979.  
  2980.     I   The page is idle. 
  2981.     L   The page is locked. 
  2982.     R   The page is resident. 
  2983.     D   The page is dirty. 
  2984.  description     A description in English of the object that the page is a part 
  2985.                  of. 
  2986.  
  2987.  
  2988. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2989.  
  2990.  o Memory addressing 
  2991.  
  2992.  
  2993. ΓòÉΓòÉΓòÉ 9.3.6. RAM Usage by Process ΓòÉΓòÉΓòÉ
  2994.  
  2995. Select one: 
  2996.  
  2997.  Selecting 
  2998.  
  2999.  Example Output 
  3000.  
  3001.  Contents of Display 
  3002.  
  3003.  Algorithm 
  3004.  
  3005.  Related Topics 
  3006.  
  3007.  
  3008. ΓòÉΓòÉΓòÉ <hidden> Selecting the RAM Usage by Process Display ΓòÉΓòÉΓòÉ
  3009.  
  3010. When you select the RAM Usage by Process option of the System pull-down on the 
  3011. Process Hierarchy window, information about RAM utilization for the entire 
  3012. system is computed and displayed. All pages of RAM are assigned to a process, 
  3013. after which summaries are provided. 
  3014.  
  3015. CAUTION:
  3016. This is a 'snap-shot' of RAM at the time of display generation. It does not 
  3017. represent the amount of RAM required by the various processes, including the 
  3018. 'system'. Use Working Set to compute the RAM required by processes and the 
  3019. system. 
  3020.  
  3021. The display generation takes about 7 seconds on an 8MB 20Mhz P70. 
  3022.  
  3023.  
  3024. ΓòÉΓòÉΓòÉ <hidden> Example of the RAM Usage by Process Display ΓòÉΓòÉΓòÉ
  3025.  
  3026. RAM Usage by Process:
  3027. --------- private --------   ------ owned shared ------
  3028.    bytes   Kbytes   Mbytes      bytes   Kbytes   Mbytes   who
  3029. 00409000     4132    4.035   0026A000     2472    2.414   system
  3030. 00000000        0    0.000                                sysinit
  3031. 00031000      196    0.191   000D5000      852    0.832   PMSHL32
  3032. 00009000       36    0.035   00005000       20    0.020   HARDERR
  3033. 000BE000      760    0.742   00047000      284    0.277   PMSHL32
  3034. 00018000       96    0.094   0000A000       40    0.039   PULSE
  3035. 00061000      388    0.379                                VDM
  3036. 00025000      148    0.145   00008000       32    0.031   CMD
  3037. 0004B000      300    0.293   00008000       32    0.031   THESEUS2
  3038. --------   ------   ------   --------   ------   ------
  3039. 001E1000     1924    1.879   0013B000     1260    1.230   total RAM in use
  3040. 00611000     6212    6.066   free RAM
  3041. --------   ------   ------
  3042. 00FA0000    16000   15.625   total of all RAM pages found
  3043.  
  3044.  
  3045. ΓòÉΓòÉΓòÉ <hidden> Contents of the RAM Usage by Process Display ΓòÉΓòÉΓòÉ
  3046.  
  3047. CAUTION:
  3048. This is a 'snap-shot' of RAM at the time of display generation. It does not 
  3049. represent the amount of RAM required by the various processes, including the 
  3050. 'system'. Use Working Set to compute the RAM required by processes and the 
  3051. system. 
  3052.  
  3053. The information presented on the RAM Usage by Process display is as follows, 
  3054. with one line displayed for each process: 
  3055.  
  3056.  Column           Meaning 
  3057.  private          Memory from the private arena of this process. If multiple 
  3058.                   processes have the same page in their private arenas, the 
  3059.                   process with the lowest PID value is charged with the memory. 
  3060.  owned shared     Memory from the shared arena that is owned by this process. 
  3061.  bytes            The amount of memory in bytes. 
  3062.  Kbytes           The amount of memory in kilobytes. 
  3063.  Mbytes           The amount of memory in megabytes. 
  3064.  who              Name of the process whose data appears on the line. 
  3065.  
  3066.  
  3067. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3068.  
  3069.  o Memory addressing 
  3070.  
  3071.  o Memory Management Control Blocks 
  3072.  
  3073.  o Memory Analysis Using THESEUS2 
  3074.  
  3075.  
  3076. ΓòÉΓòÉΓòÉ <hidden> RAM Usage by Process Algorithm ΓòÉΓòÉΓòÉ
  3077.  
  3078.   1. An array having an entry for each page in the machine is allocated, and 
  3079.      backing RAM is forced for it. This array is called PF-parallel. This array 
  3080.      keeps track of the state of each page and which process is charged with 
  3081.      the page. 
  3082.  
  3083.   2. Memory for a private copy of the Page Frame Table is allocated, and the 
  3084.      Page Frame Table is copied into it. This table is called private-PF. 
  3085.  
  3086.   3. The free pages (as indicated in private-PF) are marked in PF-parallel and 
  3087.      counted. 
  3088.  
  3089.   4. The idle pages (as indicated in private-PF) are marked in PF-parallel and 
  3090.      counted. 
  3091.  
  3092.   5. For each process: 
  3093.  
  3094.      a. For each arena record in its private arena: 
  3095.  
  3096.         1. Execute the MarkPresentPages routine (below). 
  3097.  
  3098.   6. For each arena record in the shared arena: 
  3099.  
  3100.      a. If there is an hco in the arena record: 
  3101.  
  3102.         1. Determine the process indicated as the originator by looking at the 
  3103.            context records. 
  3104.  
  3105.         2. Execute the MarkPresentPages routine for the originator process. 
  3106.  
  3107.      b. If there is no hco in the arena record: 
  3108.  
  3109.         1. For each process: 
  3110.  
  3111.            a. Execute the MarkPresentPages routine for the non-shared DLL 
  3112.               object. 
  3113.  
  3114.   7. For each arena record in the system arena: 
  3115.  
  3116.      a. Execute the MarkPresentPages routine. 
  3117.  
  3118.   8. For each entry in PF-parallel that has not been assigned or that is marked 
  3119.      idle: 
  3120.  
  3121.      a. Get the hob from private-PF. 
  3122.  
  3123.      b. The object record and the linear address (from the arena record) can be 
  3124.         used to determine which process should be charged with the page. The 
  3125.         method used is similar to what occurred in preceding steps for normal 
  3126.         objects. 
  3127.  
  3128.   9. For each entry in PF-parallel: 
  3129.  
  3130.      a. Add a page to the proper counter being charged. This will either be the 
  3131.         free counter or a process counter. 
  3132.  
  3133.  10. Display the counters, showing both private and shared memory. 
  3134.  
  3135.  The MarkPresentPages routine is passed a range of pages and a thing to assign 
  3136.  them to. The algorithm is: 
  3137.  
  3138.   1. For each page in the object which is present and not UVirt: 
  3139.  
  3140.      a. If the page has not been assigned to something and this is a shared 
  3141.         page, then assign it to this thing. 
  3142.  
  3143.      b. If the page is a shared page and is already assigned to something and 
  3144.         the linear addresses do not match, there is a conflict. 
  3145.  
  3146.      c. If the page is not a shared page and is already assigned to something 
  3147.         or the linear addresses do not match, there is a conflict. 
  3148.  
  3149.      d. If system pages are being assigned and if the owner code indicates 
  3150.         INFOSEGOWNER, then assign the page to the system. 
  3151.  
  3152.      e. If system pages are being assigned and if the owner code indicates 
  3153.         VDMALIASOWNER or VDHOWNER, do not assign the page. It will be assigned 
  3154.         to the VDM that really owns it when the VDM is processed. 
  3155.  
  3156.      f. If a conflict was detected, print out both the old and new information 
  3157.         about the page. 
  3158.  
  3159.      g. If there was no conflict, modify PF-parallel to indicate what the page 
  3160.         was assigned to and the type of memory (shared, private, or system). 
  3161.  
  3162.  
  3163. ΓòÉΓòÉΓòÉ 9.3.7. Free, Idle, and Locked Memory ΓòÉΓòÉΓòÉ
  3164.  
  3165. Select one: 
  3166.  
  3167.  Selecting 
  3168.  
  3169.  Example Output 
  3170.  
  3171.  Contents of Display 
  3172.  
  3173.  Related Topics 
  3174.  
  3175.  
  3176. ΓòÉΓòÉΓòÉ <hidden> Selecting the Free, Idle, and Locked Memory display ΓòÉΓòÉΓòÉ
  3177.  
  3178. When you select the Free, Idle, and Locked Memory option of the System 
  3179. pull-down on the Process Hierarchy window, information about free, idle, and 
  3180. locked memory is displayed. 
  3181.  
  3182. If the list of pages making up a category is desired, double-click mouse button 
  3183. 1 with the pointer over the page count. (This procedure is similar to "display 
  3184. a control block" processing.) 
  3185.  
  3186.  
  3187. ΓòÉΓòÉΓòÉ <hidden> Example of the Free, Idle, and Locked Memory Display ΓòÉΓòÉΓòÉ
  3188.  
  3189. Free, Idle, and Locked Memory:
  3190. Free                RAM = 000BD000 bytes (  756K) ( 0.738M).
  3191. Idle                RAM = 00076000 bytes (  472K) ( 0.461M).
  3192.         (Dirty idle RAM = 00068000 bytes (  416K) ( 0.406M)).
  3193. Long  Term Locked   RAM = 0001C000 bytes (  112K) ( 0.109M).
  3194. Short Term Locked   RAM = 00000000 bytes (    0K) ( 0.000M).
  3195. Short & Long Locked RAM = 00000000 bytes (    0K) ( 0.000M).
  3196.  
  3197.  
  3198. ΓòÉΓòÉΓòÉ <hidden> Contents of the Free, Idle, and Locked Memory Display ΓòÉΓòÉΓòÉ
  3199.  
  3200. The information presented on the Free, Idle, and Locked Memory display is as 
  3201. follows: 
  3202.  
  3203.  Free RAM = xxxxxxxx 
  3204.            Amount of free memory. 
  3205.  Idle RAM = xxxxxxxx 
  3206.            Amount of idle memory. 
  3207.  Dirty idle RAM 
  3208.            Amount of idle memory which is marked dirty. 
  3209.  Long  Term Locked RAM = xxxxxxxx 
  3210.            Amount of Long Term Locked memory. 
  3211.  Short Term Locked RAM = xxxxxxxx 
  3212.            Amount of Short Term Locked memory. 
  3213.  Short & Long Locked RAM = xxxxxxxx 
  3214.            Amount of memory that is both Long Term and Short Term Locked. This 
  3215.            memory is not included in the Short and Long values on the previous 
  3216.            lines. (There are three separate counts of locked memory.) 
  3217.  
  3218.  
  3219. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3220.  
  3221.  o Memory addressing 
  3222.  
  3223.  o Physical addresses 
  3224.  
  3225.  
  3226. ΓòÉΓòÉΓòÉ 9.3.8. Swapper ΓòÉΓòÉΓòÉ
  3227.  
  3228. Select one: 
  3229.  
  3230.  Selecting 
  3231.  
  3232.  Example Output 
  3233.  
  3234.  Contents of Display 
  3235.  
  3236.  Related Topics 
  3237.  
  3238.  
  3239. ΓòÉΓòÉΓòÉ <hidden> Selecting the Swapper Display ΓòÉΓòÉΓòÉ
  3240.  
  3241. When you select the Swapper option of the System pull-down on the Process 
  3242. Hierarchy window, information about the contents of the SWAPPER.DAT file will 
  3243. be displayed. 
  3244.  
  3245.  
  3246. ΓòÉΓòÉΓòÉ <hidden> Example of the Swapper Display ΓòÉΓòÉΓòÉ
  3247.  
  3248. Analysis of the SWAPPER.DAT file:
  3249. There are 1152 disk frames in SWAPPER.DAT (each is 4K bytes).
  3250. There are  715 frames used.  (2860K => 2.793M)
  3251. There are  437 frames free.  (1748K => 1.707M)
  3252. There are 1152 frames total. (4608K => 4.500M)
  3253.  
  3254.  
  3255. ΓòÉΓòÉΓòÉ <hidden> Contents of the Swapper Display ΓòÉΓòÉΓòÉ
  3256.  
  3257. The information presented on the Swapper display is as follows: 
  3258.  
  3259.  There are iiii disk frames in SWAPPER.DAT (each is 4K bytes). 
  3260.            The number of 4KB disk frames currently allocated for the 
  3261.            SWAPPER.DAT file. 
  3262.  There are iiii frames used. 
  3263.            The number of 4KB disk frames that are currently being used. The 
  3264.            amount is also given in kilobytes and megabytes of space. 
  3265.  There are iiii frames free. 
  3266.            The number of 4KB disk frames that are currently free. The amount is 
  3267.            also given in kilobytes and megabytes of space. 
  3268.  There are iiii frames total. 
  3269.            The total number of 4KB disk frames that were found. (The sum of the 
  3270.            previous two lines.) The amount is also given in kilobytes and 
  3271.            megabytes of space. 
  3272.  There are iiii frames compressed. 
  3273.            Starting with Warp 3, pages which have only a few bits in them are 
  3274.            compressed and placed in a "compressed pages" area in the Kernel 
  3275.            Resident Heap, instead of being written to the SWAPPER.DAT file. The 
  3276.            number of these pages is shown here. They will not be reported in 
  3277.            the SWAPPER.DAT contents (by page) display. 
  3278.  
  3279.  
  3280. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3281.  
  3282.  o Memory addressing 
  3283.  
  3284.  o SWAPPER.DAT contents (by page) 
  3285.  
  3286.  
  3287. ΓòÉΓòÉΓòÉ 9.3.9. General System ΓòÉΓòÉΓòÉ
  3288.  
  3289. The General System option contains: 
  3290.  
  3291.  General System Information 
  3292.            Displays selected general system information. 
  3293.  Device Drivers 
  3294.            Displays information about all Device Drivers currently loaded. 
  3295.  GDT 
  3296.            Displays the Global Descriptor Table. 
  3297.  Modules 
  3298.            Displays information about all modules currently loaded. 
  3299.  System Anchor Segment 
  3300.            Displays the System Anchor Segment. 
  3301.  Global Info Seg 
  3302.            Displays the Global Information Segment. 
  3303.  Open Files 
  3304.            Displays information about the files that are open. 
  3305.  Process List 
  3306.            Displays a list of all processes that are running. 
  3307.  
  3308.  
  3309. ΓòÉΓòÉΓòÉ 9.3.9.1. General System Information ΓòÉΓòÉΓòÉ
  3310.  
  3311. Select one: 
  3312.  
  3313.  Selecting 
  3314.  
  3315.  Example Output 
  3316.  
  3317.  Contents of Display 
  3318.  
  3319.  Related Topics 
  3320.  
  3321.  
  3322. ΓòÉΓòÉΓòÉ <hidden> Selecting the General System Information Display ΓòÉΓòÉΓòÉ
  3323.  
  3324. When you select the General System Information option of the General System 
  3325. option of the System pull-down on the Process Hierarchy window, information 
  3326. that THESEUS2 discovers during its initialization is displayed. The values 
  3327. returned by DosQuerySysInfo are displayed, also. 
  3328.  
  3329.  
  3330. ΓòÉΓòÉΓòÉ <hidden> Example of the General System Information Display ΓòÉΓòÉΓòÉ
  3331.  
  3332. General System Information:
  3333. OS/2 version = 2.11, revision = 0.
  3334.   This looks like OS/2 2.1 with the CSD.
  3335. Machine information: Model = 248 (0xF8),
  3336.                      Submodel = 19 (0x13),
  3337.                      Revision = 5 (0x05),
  3338.                      ABIOS = 65535 (0xFFFF).
  3339. BIOS date = 11/02/92.
  3340. RAM available to OS/2 = 0179D000 bytes (23.613M).
  3341. It appears that all of it is being used as 'paging space' by OS/2.
  3342.  
  3343. Following are the values from DosQuerySysInfo:
  3344.  1. QSV_MAX_PATH_LENGTH   = 260.
  3345.  2. QSV_MAX_TEXT_SESSIONS = 16.
  3346.  3. QSV_MAX_PM_SESSIONS   = 16.
  3347.  4. QSV_MAX_VDM_SESSIONS  = 257.
  3348.  5. QSV_BOOT_DRIVE        = 3.
  3349.  6. QSV_DYN_PRI_VARIATION = 1.
  3350.  7. QSV_MAX_WAIT          = 3.
  3351.  8. QSV_MIN_SLICE         = 32.
  3352.  9. QSV_MAX_SLICE         = 32.
  3353. 10. QSV_PAGE_SIZE         = 4096.
  3354. 11. QSV_VERSION_MAJOR     = 20.
  3355. 12. QSV_VERSION_MINOR     = 11.
  3356. 13. QSV_VERSION_REVISION  = 0.
  3357. 14. QSV_MS_COUNT          = 29992343 (8:19:52).
  3358. 15. QSV_TIME_LOW          = 771267684.
  3359. 16. QSV_TIME_HIGH         = 0.
  3360. 17. QSV_TOTPHYSMEM        = 24760320 (24180K -> 23.613M).
  3361. 18. QSV_TOTRESMEM         = 7598080 (7420K -> 7.246M).
  3362. 19. QSV_TOTAVAILMEM       = 25239552 (24648K -> 24.070M).
  3363. 20. QSV_MAXPRMEM          = 247791616 (241984K -> 236.313M).
  3364. 21. QSV_MAXSHMEM          = 369033216 (360384K -> 351.938M).
  3365. 22. QSV_TIMER_INTERVAL    = 310.
  3366. 23. QSV_MAX_COMP_LENGTH   = 255.
  3367.  
  3368. System Anchor Segment (SAS) selector = 0070.
  3369. Size of PTDA                 = 0824 bytes.
  3370. Size of Arena        record  = 0016 bytes.
  3371. Size of Object       record  = 0010 bytes.
  3372. Size of Context      record  = 0005 bytes.
  3373. Size of Page Frame   record  = 000C bytes.
  3374. Size of Virtual Page record  = 000A bytes.
  3375. har of System Arena Sentinel = 0004.
  3376. har of Shared Arena Sentinel = 0005.
  3377. har of Page Frame table      = 0019.
  3378. har of Virtual Page table    = 001C.
  3379.  
  3380.  
  3381. ΓòÉΓòÉΓòÉ <hidden> Contents of the General System Information display ΓòÉΓòÉΓòÉ
  3382.  
  3383. The following information appears on the General System Information display: 
  3384.  
  3385. The first group of values is "discovered" by THESEUS2 during its 
  3386. initialization: 
  3387.  
  3388.  OS/2 version = i.i, revision = i. 
  3389.            The major and minor version numbers, followed by the revision. 
  3390.  This looks like... 
  3391.            Based on several parameters, THESEUS2 determines which level of OS/2 
  3392.            2.x you are running. 
  3393.  BIOS date = mm/dd/yy. 
  3394.            The date from the ROM BIOS chip at physical memory location 0xFFFF5. 
  3395.  RAM available to OS/2 = hhhhhhhh bytes (dd.dddM). 
  3396.            The amount of RAM available to the OS/2 system. This may be less 
  3397.            than the total RAM in your system by 128KB (.125MB), because, on 
  3398.            some systems, 128KB is used to copy the BIOS from ROM into RAM. This 
  3399.            is because ROM is too slow to keep the processor running at full 
  3400.            speed. 
  3401.  
  3402.            Note:  This is presented as a cross-check. If the amount is 
  3403.            different than what you expect, then OS/2 may not be using memory on 
  3404.            a memory board installed in your machine. 
  3405.  It appears... 
  3406.            This message indicates whether or not OS/2 is using the area above 
  3407.            the 16M line in physical RAM as "Fast Swap" space or as "normal 
  3408.            paging" space. 
  3409.  
  3410.  The second group is retrieved from DosQuerySysInfo. The following QSV_ 
  3411.  descriptions come from the on-line documentation of the DosQuerySysInfo system 
  3412.  call. 
  3413.  
  3414.  QSV_MAX_PATH_LENGTH 
  3415.            Maximum length, in bytes, of a path name. 
  3416.  QSV_MAX_TEXT_SESSIONS 
  3417.            Maximum number of text sessions. 
  3418.  QSV_MAX_PM_SESSIONS 
  3419.            Maximum number of PM sessions. 
  3420.  QSV_MAX_VDM_SESSIONS 
  3421.            Maximum number of DOS sessions. 
  3422.  QSV_BOOT_DRIVE 
  3423.            Drive from which the system was started (1 means drive A, 2 means 
  3424.            drive B, and so on). 
  3425.  QSV_DYN_PRI_VARIATION 
  3426.            Dynamic priority variation flag (0 means absolute priority, 1 means 
  3427.            dynamic priority). 
  3428.  QSV_MAX_WAIT 
  3429.            Maximum wait in seconds. 
  3430.  QSV_MIN_SLICE 
  3431.            Minimum time slice in milliseconds. 
  3432.  QSV_MAX_SLICE 
  3433.            Maximum time slice in milliseconds. 
  3434.  QSV_PAGE_SIZE 
  3435.            Memory page size in bytes.  This value is 4096 for the 80386 
  3436.            processor. 
  3437.  QSV_VERSION_MAJOR 
  3438.            Major version number. 
  3439.  QSV_VERSION_MINOR 
  3440.            Minor version number. 
  3441.  QSV_VERSION_REVISION 
  3442.            Revision letter. 
  3443.  QSV_MS_COUNT 
  3444.            Value of a 32-bit, free-running millisecond counter. This value is 
  3445.            zero when the system is started. This value does not reflect the 
  3446.            "suspended" time for Thinkpads; it is only that time that the 
  3447.            processor is running. It is also formatted as hours, minutes, and 
  3448.            seconds. 
  3449.  QSV_TIME_LOW 
  3450.            Low-order 32 bits of the time in seconds since January 1, 1970 at 
  3451.            0:00:00. 
  3452.  QSV_TIME_HIGH 
  3453.            High-order 32 bits of the time in seconds since January 1, 1970 at 
  3454.            0:00:00. 
  3455.  QSV_TOTPHYSMEM 
  3456.            Total amount of physical memory in the system. 
  3457.  QSV_TOTRESMEM 
  3458.            Total amount of resident memory in the system. 
  3459.  QSV_TOTAVAILMEM 
  3460.            Maximum amount of memory that can be allocated by all processes in 
  3461.            the system. This number is advisory and is not guaranteed, since 
  3462.            system conditions change constantly. 
  3463.  QSV_MAXPRMEM 
  3464.            Maximum amount of memory that this process can allocate in its 
  3465.            private arena. This number is advisory and is not guaranteed, since 
  3466.            system conditions change constantly. 
  3467.  QSV_MAXSHMEM 
  3468.            Maximum amount of memory that this process can allocate in the 
  3469.            shared arena. This number is advisory and is not guaranteed, since 
  3470.            system conditions change constantly. 
  3471.  QSV_TIMER_INTERVAL 
  3472.            Timer interval in tenths of a millisecond. 
  3473.  QSV_MAX_COMP_LENGTH 
  3474.            Maximum length, in bytes, of one component in a path name. 
  3475.  
  3476.  The last group of values is also "discovered" by THESEUS2 during its 
  3477.  initialization: 
  3478.  
  3479.  System Anchor Segment (SAS) selector = ssss. 
  3480.            The selector that points to the System Anchor Segment is located 
  3481.            from the GDT. 
  3482.  Size of PTDA = hhhh bytes. 
  3483.            The PTDA is different sizes on different systems. 
  3484.  Size of Arena record = hhhh bytes. 
  3485.            The size of the Arena record, as mapped by a .H file. 
  3486.  Size of Object record = hhhh bytes. 
  3487.            The size of the Object record, as mapped by a .H file. 
  3488.  Size of Context record = hhhh bytes. 
  3489.            The size of the Context record, as mapped by a .H file. 
  3490.  Size of Page Frame record = hhhh bytes. 
  3491.            The size of the Page Frame record, as mapped by a .H file. 
  3492.  Size of Virtual Page record = hhhh bytes. 
  3493.            The size of the Virtual Page record, as mapped by a .H file. 
  3494.  har of System Arena Sentinel = hhhh. 
  3495.            The System Arena's Sentinel is not pointed to by anything and must 
  3496.            be discovered. 
  3497.  har of Shared Arena Sentinel = hhhh. 
  3498.            The Shared Arena's Sentinel is pointed to from the process's 
  3499.            sentinel. 
  3500.  har of Page Frame table = hhhh. 
  3501.            The Page Frame table's har is discovered, based on its address. 
  3502.  har of Virtual Page table = hhhh. 
  3503.            The Virtual Page Table's har is discovered, based on its owner 
  3504.            value. 
  3505.  
  3506.  
  3507. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3508.  
  3509.  o Memory addressing 
  3510.  
  3511.  o Handles 
  3512.  
  3513.  
  3514. ΓòÉΓòÉΓòÉ 9.3.9.2. Device Drivers ΓòÉΓòÉΓòÉ
  3515.  
  3516. Select one: 
  3517.  
  3518.  Selecting 
  3519.  
  3520.  Example Output 
  3521.  
  3522.  Contents of Display 
  3523.  
  3524.  Related Topics 
  3525.  
  3526.  
  3527. ΓòÉΓòÉΓòÉ <hidden> Selecting the Device Drivers display ΓòÉΓòÉΓòÉ
  3528.  
  3529. When you select the Device Drivers option of the General System option of the 
  3530. System pull-down on the Process Hierarchy window, information about all Device 
  3531. Drivers currently loaded is displayed. Device Drivers defined in the CONFIG.SYS 
  3532. file, but which did not load are not shown. 
  3533.  
  3534.  
  3535. ΓòÉΓòÉΓòÉ <hidden> Example of the Device Drivers Display ΓòÉΓòÉΓòÉ
  3536.  
  3537. Device Drivers:
  3538. Header addr Limit  Strategy   Limit  Name/Units Attr ...
  3539.  0070:08EC  06A4C  0F00:06A0  09A0F  NUL        8084 CHR NUL LVL=OS/2
  3540.  0400:0908  06A4C  0F00:06A8  09A0F  CON        8083 CHR SCR KBD LVL=OS/2
  3541.  0778:0000  00040  0798:0000  0022A  THESEU2$   8080 CHR LVL=OS/2
  3542.  0550:0000  01CD7  0558:0E00  02603         5   2080 IBM LVL=OS/2
  3543.  04D0:0000  0010A  04D8:0002  00790  CLOCK$     8188 CHR CLK LVL=3 ??
  3544.  
  3545.  
  3546. ΓòÉΓòÉΓòÉ <hidden> Contents of the Device Drivers Display ΓòÉΓòÉΓòÉ
  3547.  
  3548. One line is displayed for each Device Driver: 
  3549.  
  3550.  Column          Meaning 
  3551.  Header addr     The virtual address (selector:offset) of the header for the 
  3552.                  Device Driver. 
  3553.  Limit           Limit value for the header segment. (This value is 1 less than 
  3554.                  the size of the segment.) 
  3555.  Strategy        The virtual address (selector:offset) of the Strategy Routine 
  3556.                  of the Device Driver. 
  3557.  Limit           Limit value for the Strategy Routine segment. (This value is 1 
  3558.                  less than the size of the segment.) 
  3559.  Name/Units      For character devices, the name of the device. 
  3560.                  For block devices, the number of units supported by the 
  3561.                  device. 
  3562.  Attr            The device attributes in hexadecimal notation. 
  3563.  ...             The device attributes decoded and presented in English: 
  3564.  
  3565.     CHR       Bit 15 - The device is a "character" device. Otherwise, it is a 
  3566.               "block" device. 
  3567.     IDC       Bit 14 - The device supports "Inter-device Driver Communication". 
  3568.               If this option is set, the IDC Entry Point must be valid. 
  3569.     IBM       Bit 13 - The device is non-IBM block format. 
  3570.     SHR       Bit 12 - The device supports "shared device access checking." 
  3571.     OPN       Bit 11 - The device supports removable media (block devices) or 
  3572.               device open/close (character devices). 
  3573.     LVL       Bits 9-7 - Function level of support. 
  3574.  
  3575.        PC/DOS    000 - PC/DOS device driver.  (This should never be seen in 
  3576.                  OS/2 2.0.) 
  3577.        OS/2      001 - OS/2 device driver, that does not support DosDevIOCTL2 
  3578.                  packets. 
  3579.        IOCTL2    010 - OS/2 device driver, that supports DosDevIOCTL2 and 
  3580.                  SHUTDOWN request packets. 
  3581.        BitStrip  011 - OS/2 device driver, with a Capabilities Bit Strip in the 
  3582.                  header. 
  3583.        ??        Level was not one of the above. The level value is printed. 
  3584.     CLK       Bit 3 - The device is the CLOCK device. 
  3585.     NUL       Bit 2 - The device is the NULL device. 
  3586.     SCR       Bit 1 - The device is the SCREEN (STDOUT). 
  3587.     KBD       Bit 0 - The device is the KEYBOARD (STDIN). 
  3588.  
  3589.  
  3590. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3591.  
  3592.  o Memory addressing 
  3593.  
  3594.  o Virtual addresses 
  3595.  
  3596.  
  3597. ΓòÉΓòÉΓòÉ 9.3.9.3. GDT ΓòÉΓòÉΓòÉ
  3598.  
  3599. Select one: 
  3600.  
  3601.  Selecting 
  3602.  
  3603.  Example Output 
  3604.  
  3605.  Contents of Display 
  3606.  
  3607.  Descriptor Table Entry Description 
  3608.  
  3609.  Related Topics 
  3610.  
  3611.  
  3612. ΓòÉΓòÉΓòÉ <hidden> Selecting the GDT Display ΓòÉΓòÉΓòÉ
  3613.  
  3614. When you select the GDT option of the General System option of the System 
  3615. pull-down on the Process Hierarchy window, the contents of the GDT is 
  3616. displayed. 
  3617.  
  3618. The display generation takes about 3 seconds on an 8MB 20Mhz P70. 
  3619.  
  3620.  
  3621. ΓòÉΓòÉΓòÉ <hidden> Example of the GDT Display ΓòÉΓòÉΓòÉ
  3622.  
  3623. Global Descriptor Table:
  3624. GDT(0010) BTSS32  Base=FFE42DC8 Limit=00067 DPL=0               P=1 G=0
  3625. GDT(0018) Data    Base=FFE42966 Limit=003FF DPL=0 ED=0  W=1 A=1 P=1 G=0 B=0 Alias
  3626. GDT(0020) Data    Base=FFEDA000 Limit=003FF DPL=0 ED=0  W=1 A=1 P=1 G=0 B=0 Alias
  3627. GDT(0028) LDT     Base=7C6D5000 Limit=0FFFF DPL=0               P=1
  3628. ┬╖┬╖┬╖
  3629. GDT(0038) Data    Base=7CAD5DAC Limit=000F3 DPL=3 ED=0  W=1 A=0 P=1 G=0 B=0
  3630. ┬╖┬╖┬╖
  3631. GDT(0058) Code    Base=00000000 Limit=1BFFF DPL=2 CF=1  R=1 A=1 P=1 G=1 D=1 Alias
  3632. ┬╖┬╖┬╖
  3633. GDT(05B8) CallG   Selector=DFEE Offset=0292 DPL=3 WordCount=03  P=1
  3634. ┬╖┬╖┬╖
  3635. GDT(07A8) CallG32 Selector=07C0 Offset=01A0 DPL=3 WordCount=00  P=1
  3636. ┬╖┬╖┬╖
  3637.  
  3638.  
  3639. ΓòÉΓòÉΓòÉ <hidden> Contents of the GDT Display ΓòÉΓòÉΓòÉ
  3640.  
  3641. One line is displayed for each valid entry in the GDT. 
  3642.  
  3643. Please see the Descriptor Table Entry for the format of an entry. 
  3644.  
  3645.  
  3646. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3647.  
  3648.  o Memory addressing 
  3649.  
  3650.  o Virtual addresses 
  3651.  
  3652.  
  3653. ΓòÉΓòÉΓòÉ 9.3.9.4. Modules ΓòÉΓòÉΓòÉ
  3654.  
  3655. Select one: 
  3656.  
  3657.  Selecting 
  3658.  
  3659.  Example Output 
  3660.  
  3661.  Contents of Display 
  3662.  
  3663.  Related Topics 
  3664.  
  3665.  
  3666. ΓòÉΓòÉΓòÉ <hidden> Selecting the Modules Display ΓòÉΓòÉΓòÉ
  3667.  
  3668. When you select the Modules option of the General System option of the System 
  3669. pull-down on the Process Hierarchy window, information about all modules 
  3670. currently loaded is displayed. 
  3671.  
  3672.  
  3673. ΓòÉΓòÉΓòÉ <hidden> Example of the Modules Display ΓòÉΓòÉΓòÉ
  3674.  
  3675. Modules currently loaded:
  3676.   MTE @    hob    Name    type  Full Path
  3677. FEB63770  0252  THESEUS2   LX   D:\THESEUS2\THESEUS2.EXE
  3678. FEB43AC0  026E  VIEWDOC    LX   C:\OS2\VIEWDOC.EXE
  3679. FEB3BB34  0220  CMD        LX   C:\OS2\CMD.EXE
  3680. FEB60584  01F8  PMEXEC     LX   C:\OS2\PMEXEC.EXE
  3681. FEB5ABB0  014B  HARDERR    NE   C:\OS2\SYSTEM\HARDERR.EXE
  3682. ┬╖┬╖┬╖
  3683.  
  3684.  
  3685. ΓòÉΓòÉΓòÉ <hidden> Contents of the Modules Display ΓòÉΓòÉΓòÉ
  3686.  
  3687. One line is displayed for each module currently loaded: 
  3688.  
  3689.  Column          Meaning 
  3690.  MTE @           Linear address of the Module Table Entry (MTE) of the module. 
  3691.  hob             The hob of the MTE. 
  3692.  Name            The name of the module. 
  3693.  type            Specifies the type of module: 
  3694.  
  3695.     NE  The module was generated by the linker on the OS/2 1.x system. The 
  3696.         module is all 16-bit. 
  3697.     LX  The module was generated by the linker on the OS/2 2.x system. The 
  3698.         module may be any combination of 16 & 32-bit. 
  3699.  Full Path       The fully qualified path name of the file. 
  3700.  
  3701.  
  3702. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3703.  
  3704.  o Memory addressing 
  3705.  
  3706.  o Handles 
  3707.  
  3708.  
  3709. ΓòÉΓòÉΓòÉ 9.3.9.5. System Anchor Segment ΓòÉΓòÉΓòÉ
  3710.  
  3711. Select one: 
  3712.  
  3713.  Selecting 
  3714.  
  3715.  Example Output 
  3716.  
  3717.  Contents of Display 
  3718.  
  3719.  Related Topics 
  3720.  
  3721.  
  3722. ΓòÉΓòÉΓòÉ <hidden> Selecting the System Anchor Segment Display ΓòÉΓòÉΓòÉ
  3723.  
  3724. When you select the System Anchor Segment option of the General System option 
  3725. of the System pull-down on the Process Hierarchy window, the contents of the 
  3726. System Anchor Segment are displayed. 
  3727.  
  3728. Many of the tables and control block chains used by the OS/2 system have their 
  3729. anchors in the System Anchor Segment. 
  3730.  
  3731.  
  3732. ΓòÉΓòÉΓòÉ <hidden> Example of the System Anchor Segment Display ΓòÉΓòÉΓòÉ
  3733.  
  3734. System Anchor Segment (SAS), selector = 0070
  3735. tables_area @ 0016
  3736.                   GDT      = 0008 (selector) - ERROR
  3737.                   LDT      = 0000 (selector) - ERROR
  3738.                   IDT      = 0018 (selector)
  3739.                   GDT pool = 0100 (starting selector)
  3740. flat_sel    = 0158 (selector) (this is for the Kernel Data)
  3741. config_area @ 001E
  3742.                   Config table @ 09D6 (offset into SAS) (?)
  3743. dd_area     @ 0020
  3744.                   bimodal chain          @ 094F (offset into SAS)
  3745.                   real    chain          @ 0000 (offset into SAS)
  3746.                   Drive Parameter Block  = 04E8 (selector) (?)
  3747.                   ABIOS Common Data Area = 0430 (selector) (?)
  3748.                   ABIOS Common Data Area = 6A00 (segment) (?)
  3749.                   FSC Common Data Area   = 00C8 (selector) (?)
  3750. vm_area     @ 002C
  3751.                   arena records      @ FEF29020 (flat)
  3752.                   object records     @ FF08A020 (flat)
  3753.                   context records    @ FFEC8020 (flat)
  3754.                   kernel MTE records @ FFF2F46C (flat)
  3755.                   linked MTE list    @ FFF2E9A8 (flat)
  3756.                   page frame table   @ FFE20000 (flat)
  3757.                   page range table   @ FFE1F000 (flat)
  3758.                   swap frame table   @ 7C7C3144 (flat), length = 512
  3759.                   idle head          @ FFE2078C (flat) (within 'page frame table')
  3760.                   free head          @ FFE20780 (flat) (within 'page frame table')
  3761.                   heap array         @ 00000000 (flat) (?)
  3762. task_area   @ 0058
  3763.                   PTDA           = 0030 (selector)
  3764.                   Process tree   @ FFE518DC (flat)
  3765.                   Thread array   @ FFE318B9 (flat) (array of TCB linears)
  3766.                   Current Thread @ FFE2B802 -> 002E
  3767.                   Thread Count   @ FFE2B806 -> 0031
  3768. ras_area    @ 006A
  3769.                   System Trace Data area = 0000 (selector) (?)
  3770.                   System Trace Data area = 0000 (segment) (?)
  3771.                   Trace enable table     @ 07CC (offset into SAS) (?)
  3772. file_area   @ 0070
  3773.                   Master File Table           = FEB30FC0 (flat) (?)
  3774.                   System File Table           = 00C0 (selector)
  3775.                   Volume Parameter Block      = 03E8 (selector) (?)
  3776.                   Current Directory Structure = 0608 (selector)
  3777.                   Buffer Segment              = 00A8 (selector) (?)
  3778. info_area   @ 007C
  3779.                   Global Info Segment       = 0428 (selector)
  3780.                   Local Info Segment        = 03B8 (selector)
  3781.                   3xBox Info Segment        = FFFFFFFF (?)
  3782.                   Codepage Data Info Block  = 061B (selector)
  3783.  
  3784.  
  3785. ΓòÉΓòÉΓòÉ <hidden> Contents of the System Anchor Segment Display ΓòÉΓòÉΓòÉ
  3786.  
  3787. There are some fields within the System Anchor Segment (SAS) which I have been 
  3788. unable to verify. They are all marked with a (?) on the display and are also 
  3789. explicitly indicated in the descriptions below. 
  3790.  
  3791. The fields of the System Anchor Segment are displayed as follows: 
  3792.  
  3793.  System Anchor Segment (SAS), selector = ssss 
  3794.            The GDT selector that points to the SAS. 
  3795.  
  3796.  tables_area @ oooo 
  3797.            The offset within the SAS that contain selectors to certain system 
  3798.            tables. 
  3799.  GDT = ssss (selector) - ERROR 
  3800.            The selector of the Global Descriptor Table (GDT). The value 
  3801.            displayed is incorrect. 
  3802.  LDT = ssss (selector) - ERROR 
  3803.            The selector of the Local Descriptor Table (LDT). The value 
  3804.            displayed is incorrect. 
  3805.  IDT = ssss (selector) 
  3806.            The selector of the Interrupt Descriptor Table (IDT). 
  3807.  GDT pool = ssss (starting selector) 
  3808.            Starting selector of a pool of GDT selectors used by the OS/2 
  3809.            kernel. 
  3810.  
  3811.  flat_sel = ssss (selector) (this is for the Kernel Data) 
  3812.            Selector used by the kernel as the flat addressing selector for its 
  3813.            data. 
  3814.  
  3815.  config_area @ oooo 
  3816.            The offset within the SAS that contains the configuration pointers. 
  3817.  Config table @ oooo (offset into SAS) (?) 
  3818.            The Configuration table itself is at this offset within the SAS. 
  3819.            (This is unverified.) 
  3820.  
  3821.  dd_area @ oooo 
  3822.            The offset within the SAS that contains the information about Device 
  3823.            Drivers. 
  3824.  bimodal chain @ oooo (offset into SAS) 
  3825.            The offset within the SAS that contains the start of the chain of 
  3826.            "bimodal" device drivers. (This is the device header for the NUL 
  3827.            device.) 
  3828.  real chain @ oooo (offset into SAS) 
  3829.            The offset within the SAS that contains the start of the chain of 
  3830.            "real mode" device drivers. (This appears to be a hold over from 
  3831.            1.x.) 
  3832.  Drive Parameter Block = ssss (selector) (?) 
  3833.            The segment with the Driver Parameter Block information. (This is 
  3834.            unverified.) 
  3835.  ABIOS Common Data Area = ssss (selector) (?) 
  3836.            The segment with the ABIOS Common Data Area. This selector is valid 
  3837.            for Protect mode. (This is unverified.) 
  3838.  ABIOS Common Data Area = ssss (segment) (?) 
  3839.            The segment with the ABIOS Common Data Area. This segment is valid 
  3840.            for Real mode. (This is unverified.) 
  3841.  FSC Common Data Area = ssss (selector) (?) 
  3842.            The segment with the File System Control (FSC) Common Data Area. 
  3843.            (This is unverified.) 
  3844.  
  3845.  vm_area @ oooo 
  3846.            The offset within the SAS that contains the information about Memory 
  3847.            Management. 
  3848.  arena records @ llllllll (flat) 
  3849.            The linear address of the Arena Table. 
  3850.  object records @ llllllll (flat) 
  3851.            The linear address of the Object Table. 
  3852.  context records @ llllllll (flat) 
  3853.            The linear address of the Context Table. 
  3854.  kernel MTE records @ llllllll (flat) 
  3855.            The linear address of the last MTE which is a DLL. This points to 
  3856.            DOSCALLS.DLL. 
  3857.  linked MTE list @ llllllll (flat) 
  3858.            The linear address of the linear address of the first MTE which is a 
  3859.            DLL. 
  3860.  page frame table @ llllllll (flat) 
  3861.            The linear address of the Page Frame Table. 
  3862.  page range table @ llllllll (flat) 
  3863.            The linear address of the Page Range Table. 
  3864.  swap frame table @ llllllll (flat), length = iii 
  3865.            The linear address of the table of bits that indicate the 
  3866.            free/allocated state of the SWAPPER.DAT page frames. The length is 
  3867.            given as the number of bits in the table. 
  3868.  idle head @ llllllll (flat) (within 'page frame table') 
  3869.            The head of the "idle chain" of pages. This head is within the Page 
  3870.            Frame Table and points to an entry that has no physical memory 
  3871.            associated with it. 
  3872.  free head @ llllllll (flat) (within 'page frame table') 
  3873.            The head of the "free chain" of pages. This head is within the Page 
  3874.            Frame Table and points to an entry that has no physical memory 
  3875.            associated with it. 
  3876.  heap array @ llllllll (flat) (?) 
  3877.            This value is always zero. 
  3878.  
  3879.  task_area @ oooo 
  3880.            The offset within the SAS that contains the information about 
  3881.            processes and threads. 
  3882.  PTDA = ssss (selector) 
  3883.            The selector points to the active process's PTDA. This segment is 
  3884.            "sparse" and contains the PTDA, TCB and TSD. 
  3885.  Process tree @ llllllll (flat) 
  3886.            The linear address of the top process (sysinit) in the process tree. 
  3887.  Thread array @ llllllll (flat) (array of TCB linears) 
  3888.            The linear address of the Thread Table. There is one entry for each 
  3889.            thread defined in the system. The index into this table is the 
  3890.            thread number. 
  3891.  Current Thread @ llllllll -> hhhh 
  3892.            The linear address of the word containing the current thread number. 
  3893.            This is followed by the actual value. This will always be a thread 
  3894.            in THESEUS2. 
  3895.  Thread Count @ llllllll -> hhhh 
  3896.            The linear address of the word containing the actual number of 
  3897.            threads in the system. This is not the maximum number of threads. 
  3898.  
  3899.  ras_area @ oooo 
  3900.            The offset within the SAS that contains the information about trace. 
  3901.  System Trace Data area = ssss (selector) 
  3902.            The selector of the System Trace buffer. (This is unverified.) 
  3903.  System Trace Data area = ssss (segment) (?) 
  3904.            The selector of the System Trace buffer. (This is unverified.) 
  3905.  Trace enable table @ oooo (offset into SAS) (?) 
  3906.            ??? (This is unverified.) 
  3907.  
  3908.  file_area @ oooo 
  3909.            The offset within the SAS that contains the information about File 
  3910.            System. 
  3911.  Master File Table = llllllll (flat) (?) 
  3912.            Linear address of the Master File Table. (This is unverified.) 
  3913.  System File Table = ssss (selector) 
  3914.            This is the selector of the segment containing the System File Table 
  3915.            selectors 
  3916.  Volume Parameter Block = ssss (selector) (?) 
  3917.            ??? (This is unverified.) 
  3918.  Current Directory Structure = ssss (selector) 
  3919.            This is the selector of the segment containing the current 
  3920.            directory. 
  3921.  Buffer Segment = ssss (selector) (?) 
  3922.  
  3923.  info_area @ oooo 
  3924.            The offset within the SAS that contains the information about Info 
  3925.            Segments. 
  3926.  Global Info Segment = ssss (selector) 
  3927.            The selector of the Global Information Segment. This selector is for 
  3928.            "ring 0" and is not usable by an application program. 
  3929.  Local Info Segment = ssss (selector) 
  3930.            The selector of the Local Information Segment. This selector is for 
  3931.            "ring 0" and is not usable by an application program. 
  3932.  3xBox Info Segment = hhhhhhhh (?) 
  3933.            ??? (This is unverified.) 
  3934.  Codepage Data Info Block = ssss (selector) 
  3935.            This selector points to the code page table currently loaded. 
  3936.  
  3937.  
  3938. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3939.  
  3940.  o Memory addressing 
  3941.  
  3942.  o Virtual addresses 
  3943.  
  3944.  o Linear addresses 
  3945.  
  3946.  
  3947. ΓòÉΓòÉΓòÉ 9.3.9.6. Global Info Seg ΓòÉΓòÉΓòÉ
  3948.  
  3949. Select one: 
  3950.  
  3951.  Selecting 
  3952.  
  3953.  Example Output 
  3954.  
  3955.  Contents of Display 
  3956.  
  3957.  Related Topics 
  3958.  
  3959.  
  3960. ΓòÉΓòÉΓòÉ <hidden> Selecting the Global Info Seg Display ΓòÉΓòÉΓòÉ
  3961.  
  3962. When you select the Global Info Seg option of the General System option of the 
  3963. System pull-down on the Process Hierarchy window, the contents of the Global 
  3964. Information Segment is displayed. 
  3965.  
  3966.  
  3967. ΓòÉΓòÉΓòÉ <hidden> Example of the Global Info Seg Display ΓòÉΓòÉΓòÉ
  3968.  
  3969. Global Info Seg:
  3970. Time since 1/1/1970  = 289D662A (hex secs)
  3971. Time since ipl       = 0151A406 (hex msecs)
  3972. Current time         = 14:52:26.53
  3973. Time zone            = undefined
  3974. Timer interval       = 31.0 (msec)
  3975. Date                 = 8/5/1991
  3976. Day of week          = 1 (Monday)
  3977. OS/2 version         = 20.0, revision = ' '
  3978. Current screen group = 1
  3979. Maximum number of screen groups = 16
  3980. HugeShift            = 3
  3981. ProtectOnly          = 0 (No)
  3982. Current PID          = 0005
  3983. Dynamic Scheduling   = 1 (Dynamic)
  3984. MaxWait              = 3 (sec)
  3985. Min time slice       = 32, Max time slice = 32 (msec)
  3986. Boot drive           = 3 (C:)
  3987. Trace control flags:
  3988.    0-15: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  3989.   16-31: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  3990. Max VIO windowable sessions = 16
  3991. Max PM  windowable sessions = 16
  3992. Error logging status = 0
  3993. MMPH selector        = 0000, linear = 00000000
  3994.  
  3995.  
  3996. ΓòÉΓòÉΓòÉ <hidden> Contents of the Global Info Seg Display ΓòÉΓòÉΓòÉ
  3997.  
  3998. The following information is taken from the Control Program Programming 
  3999. Reference, version 1.2. 
  4000.  
  4001. The information presented on the Global Info Seg display is as follows: 
  4002.  
  4003.  Time since 1/1/1970 = hhhhhhhh (hex secs) 
  4004.            Time in seconds since January 1, 1970. 
  4005.  Time since ipl = hhhhhhhh (hex msecs) 
  4006.            Time in milliseconds. 
  4007.  Current time = hh:mm:ss.hh 
  4008.            Current time as hours:minutes:seconds.hundredths. 
  4009.  Time zone = undefined 
  4010.            Minutes from UTC; if the value is hex FFFF, the time zone is 
  4011.            undefined. 
  4012.  Timer interval = dd.d (msec) 
  4013.            Timer interval in milliseconds. 
  4014.  Date = m/d/yyyy 
  4015.            Date as month/day/year. 
  4016.  Day of week = i (aaaaaa) 
  4017.            Day of the week. The number is given, followed by the day in ASCII. 
  4018.  OS/2 version = vv.v, revision = 'c' 
  4019.            OS/2 version, given as major version then minor version. The 
  4020.            revision is a letter. 
  4021.  Current screen group = d 
  4022.            Current foreground full-screen session. 
  4023.  Maximum number of screen groups = dd 
  4024.            Maximum number of full-screen sessions, in decimal notation. 
  4025.  HugeShift = d 
  4026.            Shift count for huge segments. 
  4027.  ProtectOnly = d (aa) 
  4028.            Protect-mode-only indicator. The number is given, followed by yes or 
  4029.            no. This is controlled by the PROTECTONLY command in the CONFIG.SYS 
  4030.            file. 
  4031.  Current PID = hhhh 
  4032.            Process ID of the current foreground process. 
  4033.  Dynamic Scheduling = d (aaaaaaa) 
  4034.            Dynamic variation flag. The number is given, followed by Absolute or 
  4035.            Dynamic. This is controlled by the PRIORITY command in the 
  4036.            CONFIG.SYS file. 
  4037.  MaxWait = d (sec) 
  4038.            Maximum wait in seconds. This is controlled by the MAXWAIT command 
  4039.            in the CONFIG.SYS file. 
  4040.  Min time slice = dd, Max time slice = dd (msec) 
  4041.            Minimum and maximum time-slice values. These are controlled by the 
  4042.            TIMESLICE command in the CONFIG.SYS file. 
  4043.  Boot drive = d (c:) 
  4044.            Drive from which the system was booted. The number is given, 
  4045.            followed by the drive letter and a colon. 
  4046.  Trace control flags: 
  4047.            The flags used to control what trace events are being generated. 
  4048.  Max VIO windowable sessions = dd 
  4049.            Maximum number of VIO windowable sessions. 
  4050.  Max PM  windowable sessions = dd 
  4051.            Maximum number of Presentation Manager sessions. 
  4052.  Error logging status = d 
  4053.            Error-logging status value. 
  4054.  MMPH selector = ssss, linear = llllllll 
  4055.            The selector and linear address to be used when doing MMPH hooks. 
  4056.            MMPH is the OS/2 2.x name given to the same type hooks designated as 
  4057.            MMIO in the OS/2 1.x system. 
  4058.  
  4059.  
  4060. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4061.  
  4062.  o Memory addressing 
  4063.  
  4064.  o Virtual addresses 
  4065.  
  4066.  o Linear addresses 
  4067.  
  4068.  
  4069. ΓòÉΓòÉΓòÉ 9.3.9.7. Open Files ΓòÉΓòÉΓòÉ
  4070.  
  4071. Select one: 
  4072.  
  4073.  Selecting 
  4074.  
  4075.  Example Output 
  4076.  
  4077.  Contents of Display 
  4078.  
  4079.  Related Topics 
  4080.  
  4081.  
  4082. ΓòÉΓòÉΓòÉ <hidden> Selecting the Open Files Display ΓòÉΓòÉΓòÉ
  4083.  
  4084. When you select the Open Files option of the General System option of the 
  4085. System pull-down on the Process Hierarchy window, information about all files 
  4086. that are open is displayed. 
  4087.  
  4088.  
  4089. ΓòÉΓòÉΓòÉ <hidden> Example of the Open Files Display ΓòÉΓòÉΓòÉ
  4090.  
  4091. Open Files:
  4092. System File Table - (table of selectors) selector = 00C0
  4093. System File Table - Selector = 03F8
  4094.             Ref  System
  4095.  Address  Count  Handle   PID   --Chain--  --MFT---  name
  4096. 03F8:0008     1   0000   0002              FEB563C8  D:\EA DATA. SF
  4097. 03F8:0087     1   0001  System             FEB5632C  C:\OS2\DLL\PMSHAPIM.DLL
  4098. 03F8:0106     1   0002  System             FEB562E4  C:\OS2\DLL\PMSDMRI.DLL
  4099. ┬╖┬╖┬╖
  4100. 03F8:31A4     1   0064  System             FEB619A4  C:\THESEUS2\THESEUS2.EXE
  4101. 03F8:3223     1   0065   0017              FEB6172C  \DEV\THESEU2$
  4102. 03F8:32A2     1   0066  System             FEB6160C  C:\THESEUS2\THESEUSR.DLL
  4103.  
  4104. There were 99 open files found.
  4105.  
  4106.  
  4107. ΓòÉΓòÉΓòÉ <hidden> Contents of the Open Files Display ΓòÉΓòÉΓòÉ
  4108.  
  4109. The information presented on the Open Files display is as follows: 
  4110.  
  4111.  System File Table - (table of selectors) selector = ssss 
  4112.            This is the selector of the table of selectors which make up the 
  4113.            System File Table (SFT). 
  4114.  System File Table - Selector = ssss 
  4115.            This is the selector of the segment of the SFT which follows. 
  4116.  
  4117.  One line is displayed for each file that is open: 
  4118.  
  4119.  Column            Meaning 
  4120.  Address           Virtual address of the SFT entry for this file. 
  4121.  Ref Count         Number of processes that reference this file. 
  4122.  System Handle     The system wide handle for this file. 
  4123.  PID               Process ID of the process that opened this file This has 
  4124.                    `System' if it was opened by the system instead of a 
  4125.                    process. 
  4126.  Chain             The virtual address of an SFT which is opened for the same 
  4127.                    file. 
  4128.  MFT               The linear address of the Master File Table (MFT) entry for 
  4129.                    this file. 
  4130.  name              The name of the file. 
  4131.  
  4132.  This is followed by a line which gives the total number of SFT entries which 
  4133.  are used. 
  4134.  
  4135.  
  4136. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4137.  
  4138.  o Memory addressing 
  4139.  
  4140.  o Virtual addresses 
  4141.  
  4142.  o System File Table entries 
  4143.  
  4144.  
  4145. ΓòÉΓòÉΓòÉ 9.3.9.8. Process List ΓòÉΓòÉΓòÉ
  4146.  
  4147. Select one: 
  4148.  
  4149.  Selecting 
  4150.  
  4151.  Example Output 
  4152.  
  4153.  Contents of Display 
  4154.  
  4155.  Related Topics 
  4156.  
  4157.  
  4158. ΓòÉΓòÉΓòÉ <hidden> Selecting the Process List Display ΓòÉΓòÉΓòÉ
  4159.  
  4160. When you select the Process List option of the General System option of the 
  4161. System pull-down on the Process Hierarchy window, information about all 
  4162. processes currently running is displayed. Also shown are the total number of 
  4163. threads in the system and the PID of the current selected process. 
  4164.  
  4165.  
  4166. ΓòÉΓòÉΓòÉ <hidden> Example of the Process List Display ΓòÉΓòÉΓòÉ
  4167.  
  4168.        PTDA       PTDA      # of   Parent
  4169.  PID    hob     Linear   Threads      PID   Name
  4170. 0001   006E   FFE537DC         5     0000   sysinit
  4171. 0002   0090   7D3D5020        20     0001   PMSHL32
  4172. 0003   018C   7D3D5844         3     0002   HARDERR
  4173. 0005   0245   7D3D688C        11     0002   PMSHL32
  4174. 0006   02CA   7D3D6068         3     0002   PULSE
  4175. 0007   02F7   7D3D70B0         1     0002   VDM
  4176. 0008   030D   7D3D78D4         1     0002   CMD
  4177. 011C   033D   7D3DA188         1     0002   THESEUS2
  4178. 45 threads were found.
  4179. Current PID qualifier = 0000.
  4180.  
  4181.  
  4182. ΓòÉΓòÉΓòÉ <hidden> Contents of the Process List Display ΓòÉΓòÉΓòÉ
  4183.  
  4184. One line is displayed for each process: 
  4185.  
  4186.  Column          Meaning 
  4187.  PID             Process ID of the process. 
  4188.  PTDA hob        Hob of the PTDA. 
  4189.  PTDA Linear     The linear address of the PTDA. 
  4190.  # of Threads    The number of threads in the process. 
  4191.  Parent PID      PID of the parent process. 
  4192.  Name            Name of the process. 
  4193.  
  4194.  
  4195. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4196.  
  4197.  o Memory addressing 
  4198.  
  4199.  
  4200. ΓòÉΓòÉΓòÉ 9.3.10. Kernel Information ΓòÉΓòÉΓòÉ
  4201.  
  4202. The Kernel Information option contains: 
  4203.  
  4204.  Kernel Memory Usage 
  4205.            First determines and then displays the amount of memory consumed by 
  4206.            the Operating System. 
  4207.  System Object Summary 
  4208.            Displays the System Object Summary. 
  4209.  System Arena Table 
  4210.            Displays the System Arena Table. 
  4211.  System Page Table 
  4212.            Displays the System Page Table. 
  4213.  Page Frame Table 
  4214.            Displays the Page Frame Table. 
  4215.  
  4216.  
  4217. ΓòÉΓòÉΓòÉ 9.3.10.1. Kernel Memory Usage ΓòÉΓòÉΓòÉ
  4218.  
  4219. Select one: 
  4220.  
  4221.  Selecting 
  4222.  
  4223.  Example Output 
  4224.  
  4225.  Contents of Display 
  4226.  
  4227.  Algorithm 
  4228.  
  4229.  Related Topics 
  4230.  
  4231.  
  4232. ΓòÉΓòÉΓòÉ <hidden> Selecting the Kernel Memory Usage Display ΓòÉΓòÉΓòÉ
  4233.  
  4234. When you select the Kernel Memory Usage option of the Kernel Information option 
  4235. of the System pull-down on the Process Hierarchy window, information about 
  4236. kernel memory usage is computed and displayed. The memory is accumulated by 
  4237. system owner code, sorted by system owner code. 
  4238.  
  4239. The display generation takes about 2 seconds on an 8MB 20Mhz P70. 
  4240.  
  4241.  
  4242. ΓòÉΓòÉΓòÉ <hidden> Example of the Kernel Memory Usage Display ΓòÉΓòÉΓòÉ
  4243.  
  4244. Memory Usage for System Memory (memory in the 'System' Arena):
  4245. allocated committed   present  resident  owner
  4246.  00010000  00002000  00002000  00002000  FF31 (Named pipe NP segment)
  4247.  00010000  00001000  00001000  00001000  FF33 (DD strat2 request packets)
  4248.  00001000  00001000  00001000  00001000  FF37 (ROM data)
  4249.  00010000  00001000  00001000  00001000  FF40 (DD strat1 request packets)
  4250.  00020000  00020000  00020000  00020000  FF41 (Allocated via DevHlp AllocPhys)
  4251.  00400000  00002000  00002000  00002000  FF43 (Resident R/W 1Meg mem heap owner)
  4252.  00100000  00002000  00002000  00002000  FF44 (Resident R/W 1Meg mem heap owner)
  4253.  00010000  00001000  00001000  00001000  FF47 (record lock record owner)
  4254.  --------  --------  --------  --------
  4255.  00561000  0002A000  0002A000  0002A000  Subtotal for 'Miscellaneous' group 1
  4256. ┬╖┬╖┬╖
  4257. allocated committed   present  resident  Totals
  4258.  --------  --------  --------  --------
  4259.  8383E000  005B1000  00533000  003BE000  Total (in bytes)
  4260.   2154744      5828      5324      3832  Total (in Kbytes)
  4261.  2104.242     5.691     5.199     3.742  Total (in Mbytes)
  4262.  
  4263.  
  4264. ΓòÉΓòÉΓòÉ <hidden> Contents of the Kernel Memory Usage Display ΓòÉΓòÉΓòÉ
  4265.  
  4266. One line is displayed for each system owner with allocated memory: 
  4267.  
  4268.  Column        Meaning 
  4269.  allocated     The total amount of linear address space allocated. 
  4270.  committed     The amount of committed memory for this owner. 
  4271.  present       The actual amount of RAM which is present for the owner. This is 
  4272.                real RAM. 
  4273.  resident      The amount of resident memory for this owner. 
  4274.  owner         The system owner, presented as a hexadecimal value followed by a 
  4275.                short ASCII name. 
  4276.  
  4277.  
  4278. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4279.  
  4280.  o Memory addressing 
  4281.  
  4282.  o Memory Management Control Blocks 
  4283.  
  4284.  o Detail for System Owner 
  4285.  
  4286.  
  4287. ΓòÉΓòÉΓòÉ <hidden> Kernel Memory Usage Algorithm ΓòÉΓòÉΓòÉ
  4288.  
  4289.   1. For each arena record in the system arena: 
  4290.  
  4291.      a. Determine the amount of linear space allocated by looking at the page 
  4292.         count in the arena record. 
  4293.      b. Check the Page Directory and Page Tables to determine how many pages 
  4294.         within the linear address range represented by this entry are committed 
  4295.         and how many are present. 
  4296.  
  4297.   2. Display the results, sorted by system owner value. 
  4298.  
  4299.  
  4300. ΓòÉΓòÉΓòÉ 9.3.10.2. Object Summary ΓòÉΓòÉΓòÉ
  4301.  
  4302. Select one: 
  4303.  
  4304.  Selecting 
  4305.  
  4306.  Example Output 
  4307.  
  4308.  Contents of Display 
  4309.  
  4310.  Related Topics 
  4311.  
  4312.  
  4313. ΓòÉΓòÉΓòÉ <hidden> Selecting the Object Summary Display ΓòÉΓòÉΓòÉ
  4314.  
  4315. The Object Summary display can be selected in several ways: 
  4316.  
  4317.  o When you select the System Object Summary option of the Kernel Information 
  4318.    option of the System pull-down on the Process Hierarchy window, a summary of 
  4319.    all the memory objects defined in the system arena is displayed. 
  4320.  
  4321.  o When you select the Private Object Summary option of the Process pull-down 
  4322.    on the Process Hierarchy window, a summary of all the memory objects defined 
  4323.    in the private arena for the selected process is displayed. 
  4324.  
  4325.  o When you select the Shared Object Summary option of the Process pull-down on 
  4326.    the Process Hierarchy window, a summary of all the memory objects defined in 
  4327.    the shared arena for the selected process is displayed. 
  4328.  
  4329.  o When you select the hyperblock link from the bytes allocated column of the 
  4330.    Process Memory Utilization display, a summary of all the memory objects 
  4331.    defining that memory type is displayed. 
  4332.  
  4333.  
  4334. ΓòÉΓòÉΓòÉ <hidden> Example of an Object Summary Display ΓòÉΓòÉΓòÉ
  4335.  
  4336.   Object  Allocated  Committed   Present   Swapped
  4337.  address     memory     memory    memory    memory  Description
  4338. 7BC00000   00400000   00112000  00004000  00000000  'VDM Alias' (decoded owner from object record)
  4339. 7C2D5000   00010000   00003000  00003000  00000000  'SEL LDT' (decoded owner from object record)
  4340. ┬╖┬╖┬╖
  4341. FFF4C000   0000F000   0000F000  0000F000  00000000  'os2krnl load image' (decoded owner from object record)
  4342. FFF5B000   00065000   0005D000  00053000  00000000  'os2krnl load image' (decoded owner from object record)
  4343.            --------   --------  --------  --------
  4344. Totals:    83AC5000   007D8000  005DF000  00000000  (in bytes)
  4345.             2157332       8032      6012         0  (in Kbytes)
  4346.            2106.770      7.844     5.872     0.000  (in Mbytes)
  4347. Number of objects = 207.
  4348.  
  4349.  
  4350. ΓòÉΓòÉΓòÉ <hidden> Contents of an Object Summary Display ΓòÉΓòÉΓòÉ
  4351.  
  4352. One line is displayed for each memory object in the selected arena or area: 
  4353.  
  4354.  Column                  Meaning 
  4355.  Object address          Linear address of the memory object. 
  4356.  Allocated memory        Amount of allocated memory (in bytes). 
  4357.  Committed memory        Amount of committed memory (in bytes). 
  4358.  Present memory          Amount of RAM in use (in bytes). 
  4359.  Swapped memory          Amount of memory (in bytes) that has been written to 
  4360.                          the swap file. 
  4361.  Description             A description in English of the object. 
  4362.  
  4363.  Totals of all the "amount" columns are given in hexadecimal bytes, decimal 
  4364.  kilobytes, and decimal megabytes. The number of objects found is also 
  4365.  indicated. 
  4366.  
  4367.  The number of free areas in the linear address space is shown, along with the 
  4368.  total amount of memory in hexadecimal bytes, decimal kilobytes, and decimal 
  4369.  megabytes. The largest 10 areas are shown, sorted by size. 
  4370.  
  4371.  Note:  It is possible for a page to be both present and swapped. The following 
  4372.  is one way this can occur: 
  4373.  
  4374.   1. A read/write page is written into (becomes "dirty"). 
  4375.   2. The page is not used for a long time and is swapped out to disk. 
  4376.   3. When the page is referenced, it is brought back into RAM. Until the RAM 
  4377.      page is written into, both pages are valid. If the RAM page gets aged, it 
  4378.      will not need to be written to disk, because the copy there is still 
  4379.      valid. Once the RAM page is written into, the swapped page is discarded. 
  4380.  
  4381.  
  4382. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4383.  
  4384.  o Memory addressing 
  4385.  
  4386.  o Linear addresses 
  4387.  
  4388.  o Memory Management Control Blocks 
  4389.  
  4390.  
  4391. ΓòÉΓòÉΓòÉ 9.3.10.3. System Arena Table ΓòÉΓòÉΓòÉ
  4392.  
  4393. Select one: 
  4394.  
  4395.  Selecting 
  4396.  
  4397.  Example Output 
  4398.  
  4399.  Contents of Display 
  4400.  
  4401.  Arena Record Description 
  4402.  
  4403.  Related Topics 
  4404.  
  4405.  
  4406. ΓòÉΓòÉΓòÉ <hidden> Selecting the System Arena Table display ΓòÉΓòÉΓòÉ
  4407.  
  4408. When you select the System Arena Table option of the Kernel Information option 
  4409. of the System pull-down on the Process Hierarchy window, the contents of the 
  4410. System Arena is displayed. 
  4411.  
  4412. The display generation takes about 2 seconds on an 8MB 20Mhz P70. 
  4413.  
  4414.  
  4415. ΓòÉΓòÉΓòÉ <hidden> Example of the System Arena Table Display ΓòÉΓòÉΓòÉ
  4416.  
  4417. System Arena Table:
  4418.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  4419. 0004 00000000 60000000 003 01E1 0010 0000 0000 Sentinel, max pages=000FFFC0
  4420. 01E1 00000400 7C000000 001 020E 0004 0000 007A 022D 0000 0000 /
  4421. 020E 00000010 7C705000 121 01D5 01E1 0000 0000 0238 0000 0000 / Write Read
  4422. ┬╖┬╖┬╖
  4423. 0006 00000003 FFF36000 009 000F 000E 0000 0000 0007 0000 0100 / Mapped
  4424. 000F 00000009 FFF39000 001 0010 0006 0000 0000 0010 0000 0000 /
  4425. 0010 0000007E FFF42000 001 0004 000F 0000 0000 0011 0000 0000 /
  4426.  
  4427.  
  4428. ΓòÉΓòÉΓòÉ <hidden> Contents of the System Arena Table Display ΓòÉΓòÉΓòÉ
  4429.  
  4430. One line is displayed for each entry in the system arena. 
  4431.  
  4432. Please see the arena record for the format of an entry. 
  4433.  
  4434.  
  4435. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4436.  
  4437.  o Handles 
  4438.  
  4439.  
  4440. ΓòÉΓòÉΓòÉ 9.3.10.4. System Page Table ΓòÉΓòÉΓòÉ
  4441.  
  4442. Select one: 
  4443.  
  4444.  Selecting 
  4445.  
  4446.  Example Output 
  4447.  
  4448.  Contents of Display 
  4449.  
  4450.  Page Table Entry Description 
  4451.  
  4452.  Related Topics 
  4453.  
  4454.  
  4455. ΓòÉΓòÉΓòÉ <hidden> Selecting the System Page Table Display ΓòÉΓòÉΓòÉ
  4456.  
  4457. When you select the System Page Table option of the Kernel Information option 
  4458. of the System pull-down on the Process Hierarchy window, the contents of the 
  4459. System Page Table is displayed. 
  4460.  
  4461. The display generation takes about 8 seconds on an 8MB 20Mhz P70. 
  4462.  
  4463.  
  4464. ΓòÉΓòÉΓòÉ <hidden> Example of the System Page Table Display ΓòÉΓòÉΓòÉ
  4465.  
  4466. System Page Table:
  4467. *Linear=7C000000 Physical=0065D000 D=1 A=1 User  R/W P=1 Resident
  4468.  Linear=7C000000 Physical=0002F000 D=1 A=1 User  R/W P=1
  4469.  Linear=7C001000 Physical=00183000 D=1 A=1 User  R/W P=1
  4470. ┬╖┬╖┬╖
  4471.  Linear=7C0F4000 FrameId=000F4     D=0 A=0 User  R/W P=0 UVirt
  4472.  Linear=7C0F5000 Physical=000F5000 D=0 A=1 User  R/W P=1 UVirt
  4473.  Linear=7C0F6000 FrameId=000F6     D=0 A=0 User  R/W P=0 UVirt
  4474. ┬╖┬╖┬╖
  4475.  Linear=7C852000 Physical=00668000 D=0 A=1 Super R/O P=1 Resident
  4476.  Linear=7C875000 Physical=005D3000 D=1 A=1 User  R/W P=1
  4477.  Linear=7C876000 FrameId=00001     D=0 A=0 User  R/W P=0
  4478. ┬╖┬╖┬╖
  4479.  
  4480.  
  4481. ΓòÉΓòÉΓòÉ <hidden> Contents of the System Page Table Display ΓòÉΓòÉΓòÉ
  4482.  
  4483. One line is displayed for each valid entry in the System Page Table. 
  4484.  
  4485. Please see the Page Table Entry for the format of an entry. 
  4486.  
  4487.  
  4488. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4489.  
  4490.  o Memory addressing 
  4491.  
  4492.  o Linear addresses 
  4493.  
  4494.  o Physical addresses 
  4495.  
  4496.  
  4497. ΓòÉΓòÉΓòÉ 9.3.10.5. Page Frame Table ΓòÉΓòÉΓòÉ
  4498.  
  4499. Select one: 
  4500.  
  4501.  Selecting 
  4502.  
  4503.  Example Output 
  4504.  
  4505.  Contents of Display 
  4506.  
  4507.  Related Topics 
  4508.  
  4509.  
  4510. ΓòÉΓòÉΓòÉ <hidden> Selecting the Page Frame Table Display ΓòÉΓòÉΓòÉ
  4511.  
  4512. When you select the Page Frame Table option of the Kernel Information option of 
  4513. the System pull-down on the Process Hierarchy window, the contents of the Page 
  4514. Frame Table is displayed. A map of physical memory is also shown. 
  4515.  
  4516. The display generation takes about 6 seconds on an 8MB 20Mhz P70. 
  4517.  
  4518.  
  4519. ΓòÉΓòÉΓòÉ <hidden> Example of the Page Frame Table Display ΓòÉΓòÉΓòÉ
  4520.  
  4521. Physical memory map:
  4522.     From         To     Size
  4523. 00000000   00033000    0.203M
  4524. 00037000   0009F000    0.410M
  4525. 00100000   017FF000   23.000M
  4526.  
  4527. Page Frame table:
  4528.  Free head = 000A0000, flink = 005BC, blink = 00409
  4529.  Idle head = 000A1000, flink = 0065F, blink = 0065F
  4530.                         ---lock---
  4531. physical    vp   pteCnt long short flink blink block flags
  4532. 00000000 FF421000 0001  0000 0000              00000 0000
  4533. 00001000 FF42105A 0001  0000 0000              00000 0000
  4534. 00002000 FF421064 0001  0000 0000              00000 0000
  4535. ┬╖┬╖┬╖
  4536. 0009F000 FF40B2BC 0002  0000 0000              00000 0000
  4537.  
  4538. The Page Range Table indicates a break in the physical memory.
  4539.  
  4540. 00100000 FF40B2C6 0001  0000 0000              00000 0000
  4541. ┬╖┬╖┬╖
  4542.  
  4543.  
  4544. ΓòÉΓòÉΓòÉ <hidden> Contents of the Page Frame Table Display ΓòÉΓòÉΓòÉ
  4545.  
  4546. A map of physical memory is shown. One line is displayed for each range of 
  4547. pages: 
  4548.  
  4549.  Column      Meaning 
  4550.  From        The starting physical address of this range. 
  4551.  To          The ending physical address of this range. 
  4552.  Size        The size in megabytes of this range. 
  4553.  
  4554.  The heads of the free and idle lists are shown. They consist of only a flink 
  4555.  and blink fields. 
  4556.  
  4557.  Breaks in the contiguous range of pages are noted with the sentence, "The Page 
  4558.  Range Table indicates a break in the physical memory." 
  4559.  
  4560.  One line is displayed for each entry in the Page Frame Table: 
  4561.  
  4562.  Column          Meaning 
  4563.  physical        The physical address for the page on this line. 
  4564.  vp              The linear address of the Virtual Page Table entry for this 
  4565.                  page. 
  4566.  pteCnt          The number of PTEs that refer to this page as being present. 
  4567.  lock long       The number of long term locks outstanding for this page. 
  4568.  lock short      The number of short term locks outstanding for this page. 
  4569.  flink           Forward link.  Used when a page is on the free or idle list. 
  4570.  blink           Backward link.  Used when a page is on the free or idle list. 
  4571.  block           Pager disk frame or Loader Block number 
  4572.  flags           Flags indicating the status of the page. They are shown as hex 
  4573.                  and then decoded into ASCII: 
  4574.  
  4575.     fast        Page is in fast memory. 
  4576.     busy        Page is busy. 
  4577.     free        Page is on the free chain. 
  4578.     reserved?   Reserved bit. 
  4579.  
  4580.  
  4581. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4582.  
  4583.  o Memory addressing 
  4584.  
  4585.  
  4586. ΓòÉΓòÉΓòÉ 9.4. Process ΓòÉΓòÉΓòÉ
  4587.  
  4588. The Process pull-down contains displays which are applicable to the selected 
  4589. process. 
  4590.  
  4591. For information on selecting a process, see Selecting a Process. 
  4592.  
  4593. Functions available are: 
  4594.  
  4595.  Working Set 
  4596.            Displays the working set of memory for the process. 
  4597.  Memory Utilization 
  4598.            Displays details of memory usage for the process. 
  4599.  Memory Leak Detection 
  4600.            Displays the number of pages of memory that each object is 
  4601.            accumulating. 
  4602.  General Process Information 
  4603.            Displays general information about the process. 
  4604.  Per Task Data Area (PTDA) 
  4605.            Displays the PTDA. 
  4606.  LDT 
  4607.            Displays the LDT. 
  4608.  Page Table 
  4609.            Displays the process unique Page Table. 
  4610.  Private Object Summary 
  4611.            Displays a summary of the private arena memory objects. 
  4612.  Shared Object Summary 
  4613.            Displays a summary of the shared arena memory objects. 
  4614.  Private Arena Table 
  4615.            Displays the process unique arena table. 
  4616.  Shared Arena Table 
  4617.            Displays the shared arena, in the process' context. 
  4618.  
  4619.  
  4620. ΓòÉΓòÉΓòÉ 9.4.1. Working Set ΓòÉΓòÉΓòÉ
  4621.  
  4622. Select one: 
  4623.  
  4624.  Selecting 
  4625.  
  4626.  Example Output 
  4627.  
  4628.  Contents of Display 
  4629.  
  4630.  Algorithm 
  4631.  
  4632.  Illustration 
  4633.  
  4634.  Related Topics 
  4635.  
  4636.  
  4637. ΓòÉΓòÉΓòÉ <hidden> Selecting the Working Set Display ΓòÉΓòÉΓòÉ
  4638.  
  4639. When you select the Working Set option of the Process pull-down on the Process 
  4640. Hierarchy window, memory working set of the selected process is computed and 
  4641. displayed. 
  4642.  
  4643. There are optional values which can be shown in realtime. 
  4644.  
  4645.  
  4646. ΓòÉΓòÉΓòÉ <hidden> Example of the Working Set Display ΓòÉΓòÉΓòÉ
  4647.  
  4648. Working Set for the Process with PID = 0100, name = 'THESEUS2':
  4649. Use the 'Functions' pull-down to start and stop the data collection.
  4650. Collection started: interval = 5, Working Set is 3 intervals.
  4651. current time ------ Process -------   ------ System DLL -----
  4652. hh:mm:ss.tt     now      ws   acc'd       now      ws   acc'd
  4653. 16:54:53.16   0.180M  0.180M  0.180M    0.406M  0.406M  0.406M
  4654. 16:54:58.00   0.184M  0.195M  0.195M    0.379M  0.438M  0.438M
  4655. 16:55:03.03   0.184M  0.195M  0.195M    0.379M  0.438M  0.438M
  4656. 16:55:08.00   0.180M  0.188M  0.195M    0.414M  0.414M  0.438M
  4657. 16:55:13.00   0.188M  0.195M  0.199M    0.449M  0.449M  0.473M
  4658. 16:55:18.03   0.184M  0.195M  0.199M    0.379M  0.449M  0.473M
  4659. 16:55:23.00   0.176M  0.195M  0.199M    0.379M  0.449M  0.473M
  4660. 16:55:28.00   0.176M  0.184M  0.199M    0.379M  0.379M  0.473M
  4661. 16:55:33.03   0.176M  0.176M  0.199M    0.379M  0.379M  0.473M
  4662. 16:55:38.00   0.176M  0.176M  0.199M    0.375M  0.379M  0.473M
  4663.  
  4664. 10 samples collected.
  4665.                                  Process      DLL    Total
  4666. Absolute minimum amount of memory: 0.188M   0.449M   0.637M
  4667. Recommended amount of memory:      0.195M   0.449M   0.645M
  4668. Total amount of accessed memory:   0.199M   0.473M   0.672M
  4669.  
  4670.  
  4671. ΓòÉΓòÉΓòÉ <hidden> Contents of the Working Set Display ΓòÉΓòÉΓòÉ
  4672.  
  4673. Three values are computed for each of two areas during each data collection 
  4674. cycle. The data can be presented in real-time. 
  4675.  
  4676. The values are: 
  4677.  
  4678.  Column         Meaning 
  4679.  
  4680.  current time   The time of the sample, presented in 
  4681.                 hours:minutes:seconds.hundredths. 
  4682.  
  4683.  now            The amount of memory referenced in the current interval. 
  4684.  
  4685.  ws             The working set. This is the amount of memory referenced in the 
  4686.                 past n intervals. 
  4687.  
  4688.  acc'd          The total amount of memory accessed since the start of the 
  4689.                 collection run. 
  4690.  
  4691.  The areas are: 
  4692.  
  4693.  Process        The memory that is: in the private arena, DLL instance data 
  4694.                 memory, non-system DLLs, and system memory used by this 
  4695.                 process. 
  4696.  
  4697.  System DLL     The memory that is in system DLLs. 
  4698.  
  4699.  The totals are computed on each data collection cycle, but not displayed due 
  4700.  to lack of space in the window. 
  4701.  
  4702.  When the Stop option is selected, the following is presented: 
  4703.  
  4704.  ii samples collected. 
  4705.            The number of samples collected is reported (in decimal). 
  4706.  
  4707.  The following are reported for Private, System DLL, and Total: 
  4708.  
  4709.  Absolute minimum amount of memory 
  4710.            The maximum value from the now column. This is the amount of memory 
  4711.            absolutely required to run the application without "thrashing" 
  4712.            memory. 
  4713.  Recommended amount of memory 
  4714.            The maximum value from the ws column. This is the recommended amount 
  4715.            of memory for the application to run with minimum impact on paging. 
  4716.  Total amount of accessed memory 
  4717.            The maximum value from the accessed column. This is the amount of 
  4718.            memroy required to run the application with no paging activity. 
  4719.  
  4720.  
  4721. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4722.  
  4723.  o Memory addressing 
  4724.  
  4725.  o Memory Management Control Blocks 
  4726.  
  4727.  o Memory Analysis Techniques 
  4728.  
  4729.  o Detail of Working Set (by Page) 
  4730.  
  4731.  o Detail of Working Set (by Object) 
  4732.  
  4733.  o Usage Type Display 
  4734.  
  4735.  o Last Referenced Graphic 
  4736.  
  4737.  
  4738. ΓòÉΓòÉΓòÉ <hidden> Memory Working Set Algorithm ΓòÉΓòÉΓòÉ
  4739.  
  4740. To compute the working set for a particular OS/2 process, you need to know: 
  4741.  
  4742.  o Which pages have been referenced 
  4743.  o Whether or not a particular page "belongs" to the specified process 
  4744.  o When the pages were touched. 
  4745.  
  4746.  The algorithm is: 
  4747.  
  4748.   1. The accessed flags are cleared from the Page Tables of the selected 
  4749.      process. 
  4750.  
  4751.   2. A timer is started, and on each timer tick: 
  4752.  
  4753.      a. The pages which have been accessed are noted. 
  4754.      b. The accessed flags are cleared. 
  4755.      c. For each newly accessed page, determine its owning memory object. 
  4756.      d. Classify the object (and, therefore, the page) by type: 
  4757.  
  4758.        o Private 
  4759.        o System DLL 
  4760.        o System. 
  4761.  
  4762.         Starting with OS/2 Warp, the way the Page Directory is managed has 
  4763.         changed. (See Linear/Physical Relationship for the changes.) The above 
  4764.         part of the algorithm had to be modified to first check to see if the 
  4765.         DLL page was "accessible" from the specified process. If not, the page 
  4766.         is marked Ignore in the "page usage table". 
  4767.  
  4768.      e. The number of pages which have been accessed anytime within the 
  4769.         specified number of intervals is counted. 
  4770.      f. Generate summary information for this interval. 
  4771.      g. Display the interval information, if requested. 
  4772.  
  4773.   3. When the Stop option is selected: 
  4774.  
  4775.      a. A final data collection cycle is performed. 
  4776.      b. Summary numbers for the entire run are generated. They are: 
  4777.  
  4778.        Absolute minimum number of pages 
  4779.                  The maximum of all the now entries. 
  4780.        Recommended number of pages 
  4781.                  The maximum of all the ws entries. 
  4782.        Total number of accessed pages 
  4783.                  The maximum of all the accessed entries. 
  4784.  
  4785.      c. The results are displayed. 
  4786.  
  4787.  Note:  Even though the "infosegs" are in the shared arena, they are counted as 
  4788.  system pages. They are, in fact, shared pages. 
  4789.  
  4790.  
  4791. ΓòÉΓòÉΓòÉ 9.4.2. Memory Utilization ΓòÉΓòÉΓòÉ
  4792.  
  4793. Select one: 
  4794.  
  4795.  Selecting 
  4796.  
  4797.  Example Output 
  4798.  
  4799.  Contents of Display 
  4800.  
  4801.  Algorithm 
  4802.  
  4803.  Related Topics 
  4804.  
  4805.  
  4806. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Utilization Display ΓòÉΓòÉΓòÉ
  4807.  
  4808. When you select the Memory Utilization option of the Process pull-down on the 
  4809. Process Hierarchy window, information about the memory used by the selected 
  4810. process is computed and displayed. 
  4811.  
  4812. The display generation takes about 3 seconds on an 8MB 20Mhz P70. 
  4813.  
  4814.  
  4815. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Utilization Display ΓòÉΓòÉΓòÉ
  4816.  
  4817. Memory Utilization for Process with PID = 005C, name = 'THESEUS2':
  4818.     bytes      bytes    number  bytes      bytes
  4819. allocated  committed   present   each    present  description
  4820.  0000071C   0000071C         1   071C   0000071C  PTDA
  4821.  000001AC   000001AC         1   01AC   000001AC  TCB
  4822.  00001000   00001000         1   1000   00001000  TSD
  4823.  00010000   00003000         3   1000   00003000  LDT
  4824.  00000200   00000200         1   0200   00000200  Process Page Directory
  4825.  00080000   0000B000        11   1000   0000B000  Page Tables
  4826.  01110000   00471000       547   1000   00223000  Accessible Shared memory
  4827.  001A0000   00031000        14   1000   0000E000  Originated Shared memory
  4828.  00B40000   00072000        83   1000   00053000  Private memory
  4829.  --------   --------                    --------
  4830.  00091AC8   0000FAC8                    0000FAC8  Total System
  4831.  001A0000   00031000                    0000E000  Total Shared originated
  4832.  00B40000   00072000                    00053000  Total Private
  4833.  --------   --------                    --------
  4834.  00D71AC8   000B2AC8                    00070AC8  Total RAM for the Process
  4835.     13767        715                         451  (in Kbytes)
  4836.    13.445      0.698                       0.441  (in Mbytes)
  4837.  
  4838.  
  4839. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Utilization Display ΓòÉΓòÉΓòÉ
  4840.  
  4841. One line is displayed for each type of memory associated with a process: 
  4842.  
  4843.  Column              Meaning 
  4844.  bytes allocated     The amount of linear address space allocated for the 
  4845.                      memory type on this line. 
  4846.  bytes committed     The amount of committed memory for the memory type on this 
  4847.                      line 
  4848.  number present      The number of instances of the memory type on this line 
  4849.                      present in RAM for this process. (This column is in 
  4850.                      decimal notation; all others are hexadecimal.) 
  4851.  bytes each          The size of one of the memory types on this line. 
  4852.  bytes present       The actual amount of real RAM used by the memory type on 
  4853.                      this line. 
  4854.  description         The name of the memory type reported on this line. 
  4855.  
  4856.  The "Accessible Shared memory" is not added into the summaries. It is the 
  4857.  total amount of shared memory which is accessible by the process. It includes: 
  4858.  originated shared memory, DLLs used by the process, memory given to it by 
  4859.  another process (using DosGiveSharedMem), and memory gotten by it (using 
  4860.  DosGetSharedMem). 
  4861.  
  4862.  Summaries are provided and shown as hex bytes: 
  4863.  
  4864.  Total System 
  4865.            The system RAM consists of the lines for PTDA, TCB, TSD, LDT, 
  4866.            Process Page Directory, and Page Tables. 
  4867.  Total Shared originated 
  4868.            The shared memory that was not originated by this process is 
  4869.            ignored. 
  4870.  Total Private 
  4871.            This entry includes the .EXE file and all privately allocated 
  4872.            memory. This memory is computed as if there were no other processes 
  4873.            in the system. So, if there are multiple copies of a particular 
  4874.            program running, each of them would show the .EXE file as being 
  4875.            consumed by that process. 
  4876.  Total RAM for the Process 
  4877.            The total of the above three values, presented in bytes, kilobytes 
  4878.            and megabytes. 
  4879.  
  4880.  
  4881. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4882.  
  4883.  o Memory addressing 
  4884.  
  4885.  o Memory Management Control Blocks 
  4886.  
  4887.  o Memory Analysis Using THESEUS2 
  4888.  
  4889.  o Object Summary 
  4890.  
  4891.  
  4892. ΓòÉΓòÉΓòÉ <hidden> Memory Utilization Algorithm ΓòÉΓòÉΓòÉ
  4893.  
  4894.   1. There is one PTDA for the process. Its size is determined during THESEUS2 
  4895.      initialization. 
  4896.  
  4897.   2. There is one TCB for each thread being used by the process. Its size is 
  4898.      determined by a mapping structure. 
  4899.  
  4900.   3. There is one TSD for each thread being used by the process. Its allocated 
  4901.      size is 4KB. The number of pages actually in use is counted. 
  4902.  
  4903.   4. There is one LDT for the process. Its allocated size is 64KB. The number 
  4904.      of pages actually in use is counted. 
  4905.  
  4906.   5. There is one Process Page Directory for the process. Its size is 512 
  4907.      bytes. 
  4908.  
  4909.   6. There is a group of Page Tables for the process. The number of Page Tables 
  4910.      in use is determined by looking at the Process Page Directory and then 
  4911.      determining what pages are present. 
  4912.  
  4913.   7. For each arena record in the private arena: 
  4914.  
  4915.      a. Determine the number of allocated pages. 
  4916.      b. Count the number of pages actually in use. 
  4917.  
  4918.   8. For each arena record in the shared arena for which the process has access 
  4919.      to the memory object (by looking at the context records): 
  4920.  
  4921.      a. Determine the number of allocated pages. 
  4922.      b. Count the number of pages actually in use. 
  4923.  
  4924.   9. For each arena record in the shared arena for which the process was the 
  4925.      originator, (by looking at the context records): 
  4926.  
  4927.      a. Determine the number of allocated pages. 
  4928.      b. Count the number of pages actually in use. 
  4929.  
  4930.  
  4931. ΓòÉΓòÉΓòÉ 9.4.3. Memory Leak Detection ΓòÉΓòÉΓòÉ
  4932.  
  4933. Select one: 
  4934.  
  4935.  Selecting 
  4936.  
  4937.  Example Output 
  4938.  
  4939.  Contents of Display 
  4940.  
  4941.  Related Topics 
  4942.  
  4943.  
  4944. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  4945.  
  4946. When you select the Memory Leak Detection option of the Process pull-down on 
  4947. the Process Hierarchy window, information about memory accumulation for each 
  4948. object in the process is computed and shown. 
  4949.  
  4950. This can be done either on a periodic basis or under user control. See Related 
  4951. Topics for the references for specifying control. 
  4952.  
  4953.  
  4954. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  4955.  
  4956. Memory leak detection for Process with PID = 0039, name = THESEUS2:
  4957. < End of THESEUS2 (v 2.0s) output @ 10:42:49 on 8/5/1993 >
  4958. Use the 'Function' pull-down to start and stop the data collection.
  4959. Leak data captured.
  4960. Periodic update started with interval of 10 seconds.
  4961. Previous sample will be used as the base.
  4962. < End of THESEUS2 (v 2.0s) output @ 10:43:06 on 8/5/1993 >
  4963. Allocated   Committed   Actual    har     Address   P/S   Description
  4964.        +0          +1       +1   0342    01100000   Pvt   THESEUS2 allocated it
  4965.        +0          +0       +1   0343    01130000   Pvt   THESEUS2 allocated it
  4966. < End of THESEUS2 (v 2.0s) output @ 10:43:16 on 8/5/1993 >
  4967. Allocated   Committed   Actual    har     Address   P/S   Description
  4968.        +0          +1       +1   0343    01130000   Pvt   THESEUS2 allocated it
  4969.       +96          +1       +1   034B   +019B0000   Pvt   THESEUS2 allocated it
  4970.      +688          +1       +1   034C   +01A10000   Pvt   THESEUS2 allocated it
  4971.       +16          +2       +2   034D   +01CC0000   Pvt   PMWIN    allocated it
  4972.       +16          +1       +1   034E   +01CD0000   Pvt   PMGPI    allocated it
  4973.       +16          +1       +0   034F   +01CE0000   Pvt   PMGPI    allocated it
  4974.     +1024          +1       +1   0350   +01CF0000   Pvt   PMGPI    allocated it
  4975.     +1024          +1       +1   0351   +020F0000   Pvt   PMGPI    allocated it
  4976.        +0          +2       +2   0185    16070000   Shr   PMGRE    allocated it
  4977. < End of THESEUS2 (v 2.0s) output @ 10:43:26 on 8/5/1993 >
  4978. Allocated   Committed   Actual    har     Address   P/S   Description
  4979.       -96          -1       -1   034B   -019B0000   Pvt
  4980.      -688          -1       -1   034C   -01A10000   Pvt
  4981.       -16          -2       -2   034D   -01CC0000   Pvt
  4982.       -16          -1       -1   034E   -01CD0000   Pvt
  4983.       -16          -1       +0   034F   -01CE0000   Pvt
  4984.     -1024          -1       -1   0350   -01CF0000   Pvt
  4985.     -1024          -1       -1   0351   -020F0000   Pvt
  4986. < End of THESEUS2 (v 2.0s) output @ 10:43:36 on 8/5/1993 >
  4987. Periodic updated stopped.
  4988. < End of THESEUS2 (v 2.0s) output @ 10:43:38 on 8/5/1993 >
  4989.  
  4990.  
  4991. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  4992.  
  4993. One line is displayed for each memory object whose committed or actual (present 
  4994. + swapped) memory values have changed: 
  4995.  
  4996.  Column      Meaning 
  4997.  Allocated   The change in the number of pages of allocated (virtual) memory in 
  4998.              this object. This will be non-zero only when the memory object is 
  4999.              allocated or freed. 
  5000.  Committed   The change in the number of pages of committed memory in this 
  5001.              object. 
  5002.  Actual      The change in the number of pages of actual memory in this object. 
  5003.  har         The har of this object. 
  5004.  Address     The linear address of this object. 
  5005.  P/S         An indicator as to the type of memory object: 
  5006.  
  5007.     Pvt  The memory object is in the private arena. 
  5008.     Shr  The memory object is in the shared arena. 
  5009.  Description A description in English of the object. 
  5010.  
  5011.  
  5012. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5013.  
  5014.  o Memory addressing 
  5015.  
  5016.  o Memory states 
  5017.  
  5018.  o Leak detection control 
  5019.  
  5020.  o Manual data capture 
  5021.  
  5022.  o Manual data compare 
  5023.  
  5024.  
  5025. ΓòÉΓòÉΓòÉ 9.4.4. General Process Information ΓòÉΓòÉΓòÉ
  5026.  
  5027. Select one: 
  5028.  
  5029.  Selecting 
  5030.  
  5031.  Example Output 
  5032.  
  5033.  Contents of Display 
  5034.  
  5035.  Related Topics 
  5036.  
  5037.  
  5038. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Process Information Display ΓòÉΓòÉΓòÉ
  5039.  
  5040. When you select the General Process Information option of the Process pull-down 
  5041. on the Process Hierarchy window, general information about the process is 
  5042. shown: 
  5043.  
  5044.   1. Linear address of the PTDA. 
  5045.   2. Number of threads, if THESEUS2 found a number different from what the PTDA 
  5046.      indicates. 
  5047.   3. General information about each thread, including: 
  5048.  
  5049.      a. Thread number; 
  5050.      b. Addresses of the TCB and TSD; 
  5051.      c. Scheduling priority and state. 
  5052.  
  5053.   4. The Exit List. 
  5054.   5. The open files. 
  5055.   6. The environment strings. 
  5056.  
  5057.  
  5058. ΓòÉΓòÉΓòÉ <hidden> Example of the General Process Information Display ΓòÉΓòÉΓòÉ
  5059.  
  5060. General Information about the Process with PID = 010A, name = 'THESEUS2':
  5061. PTDA address = 7D3E821C
  5062.  
  5063. Threads for this Process:
  5064.                                     ---- priority ----
  5065.  TID   Th_#        TCB        TSD  class  level actual  state
  5066. 0001   002F   7D3CEB5C   7D2F8000     02     00   0500   0005  Running
  5067.  
  5068. Exit List:
  5069.   Class   RtnAddress  Description
  5070.    0010   BF6F:015E   DISPLAY  #0007 (shared)
  5071.    0010   D44F:02C4   PMGRE    #0006 (shared)
  5072.    0010   D0FF:0A54   PMWIN    #0005 (shared)
  5073.    0010   D18F:A1E6   PMSHAPI  #0001 (shared)
  5074.    00C0   D067:27A8   OS2CHAR  #0001 (shared)
  5075.    0100   1A393454    HELPMGR  #0001 (shared)
  5076.    0100   0003A7DB    THESEUS2 #0001 (shared)
  5077.    0100   1A4B6188    PMCTLS   #0002 (shared)
  5078.    0100   D2B7:9D1C   PMSPL    #0004 (shared)
  5079.    01A5   D0FF:04A6   PMWIN    #0005 (shared)
  5080.    01AB   D44F:02CE   PMGRE    #0006 (shared)
  5081.    01C0   D067:27B5   OS2CHAR  #0001 (shared)
  5082.    01FF   1A4B61E4    PMCTLS   #0002 (shared)
  5083.    01FF   D44F:0308   PMGRE    #0006 (shared)
  5084.  
  5085. Open Files (MaxFH=20):
  5086.   ---- handles ---
  5087.   Process   System   File name
  5088.      0000     0027   \DEV\CON
  5089.      0001     0027   \DEV\CON
  5090.      0002     0027   \DEV\CON
  5091.      0003     0080   \DEV\THESEU2$
  5092.      0004     002C   \DEV\KBD$
  5093.      0005     0059   C:\THESEUS2\THESEUS2.HLP
  5094.      0006     0081   C:\OS2\HELP\HMHELP.HLP
  5095.      000C     0050   \DEV\KBD$
  5096.  
  5097. Environment:
  5098.   "WP_OBJHANDLE=113848"
  5099.   "USER_INI=C:\OS2\OS2.INI"
  5100.   "SYSTEM_INI=C:\OS2\OS2SYS.INI"
  5101.   "OS2_SHELL=C:\OS2\CMD.EXE"
  5102.   "AUTOSTART=PROGRAMS,TASKLIST,FOLDERS"
  5103.   "RUNWORKPLACE=C:\OS2\PMSHELL.EXE"
  5104.   "COMSPEC=C:\OS2\CMD.EXE"
  5105.   "PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;C:\;C:\OS2\MDOS;C:\OS2\APPS;E:\TOOLKT20\OS2BIN"
  5106.   "DPATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;C:\;C:\OS2\BITMAP;C:\OS2\MDOS;C:\OS2\APPS"
  5107.   "PROMPT=$i[$p]"
  5108.   "HELP=C:\OS2\HELP;C:\OS2\HELP\TUTORIAL;E:\TOOLKT20\OS2HELP"
  5109.   "GLOSSARY=C:\OS2\HELP\GLOSS;"
  5110.   "KEYS=ON"
  5111.   "DELDIR=C:\DELETE,512;D:\DELETE,512;E:\DELETE,512;"
  5112.   "BOOKSHELF=C:\OS2\BOOK;E:\TOOLKT20\BOOK"
  5113.   "EPATH=C:\OS2\APPS"
  5114.   "VIDEO_DEVICES=VIO_VGA"
  5115.   "VIO_VGA=DEVICE(BVHVGA)"
  5116.   "TMP=E:\"
  5117.   "PROGREF20=GUIREF20.INF"
  5118.   "PMREF=PMFUN.INF+PMGPI.INF+PMMSG.INF+PMWIN.INF"
  5119.   "WORKPLACE__PROCESS=NO"
  5120.   Program (actual)    = "E:\THESEUS2\THESEUS2.EXE"
  5121.   Program (specified) = "E:\THESEUS2\THESEUS2.EXE"
  5122.   Parameters = ""
  5123.  
  5124.  
  5125. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Process Information Display ΓòÉΓòÉΓòÉ
  5126.  
  5127. The information presented on the General Process Information display is as 
  5128. follows: 
  5129.  
  5130.  General Information about the Process with PID = hhhh 
  5131.            The PID of the specified process. 
  5132.  name = 'aaaaaaaa' 
  5133.            The name of the .EXE file that is the module for the process. 
  5134.  PTDA address = llllllll 
  5135.            The linear address of the PTDA being shown. 
  5136.  Thread count (as discovered by THESEUS2) = i, 
  5137.            The number of threads that THESEUS2 found for this process when it 
  5138.            scanned the thread table. This number is shown only if this and the 
  5139.            following value are not the same. 
  5140.  as claimed by PTDA = i. 
  5141.            The number that is in the PTDA. 
  5142.  
  5143.  One line is displayed for each thread: 
  5144.  
  5145.  Column           Meaning 
  5146.  TID              Thread ID of the thread. 
  5147.  Th_#             Thread number of the thread. 
  5148.  TCB              Linear address of the Thread Control Block of the thread. 
  5149.  TSD              Linear address of the Thread Swappable Data of the thread. 
  5150.  Priority class   Declared priority class of the thread. 
  5151.  Priority level   Declared priority level of the thread. 
  5152.  Priority actual  Actual priority being used by the scheduler, after all the 
  5153.                   dynamic calculations have been applied. 
  5154.  state            Dispatch state of the thread. The following decoded states 
  5155.                   are shown: 
  5156.  
  5157.     Ready      The thread is ready to run, but is not the highest priority that 
  5158.                is ready. 
  5159.     Blocked    The thread is blocked, waiting on some event. 
  5160.     Suspended  The thread has been suspended by the system. 
  5161.     Critical section The thread has done a DosEnterCritSec and not completed. 
  5162.     Running    The thread is running. 
  5163.     Ready, but apply an IO boost The thread is ready to run, but needs to be 
  5164.                "boosted" because it has just completed some I/O. 
  5165.     Thread waiting for TSD The thread is waiting for a TSD to become available. 
  5166.     Delayed TKWakeup (Almost Ready) The thread has been delayed by the system. 
  5167.     Frozen Thread The thread has been "frozen" by the system, waiting on its 
  5168.                parent. 
  5169.     Incoming TSD ??? 
  5170.     TSD failed to swap in A disk error occurred trying to swap the TSD in. 
  5171.  
  5172.  One line is displayed for each entry in the Exit List: 
  5173.  
  5174.  Column         Meaning 
  5175.  Class          The class/priority of the Exit Routine. See the description of 
  5176.                 the DosExitList function for the meaning of this. 
  5177.  RtnAddress     The address of the Exit Routine. This is either a 16:16 virtual 
  5178.                 address or a 0:32 flat address. 
  5179.  Description    The name of the module and the segment/object number this 
  5180.                 routine is in. 
  5181.  
  5182.  The Open Files are displayed. The maximum number of process file handles 
  5183.  (MaxFH) is shown. Then, the open files are shown, with 1 line for each open 
  5184.  file: 
  5185.  
  5186.  Column             Meaning 
  5187.  Process handle     The value of the process file handle. These are unique to 
  5188.                     the process.  That is, process file handle 5 in the process 
  5189.                     with PID = 5 is not the same as process file handle 5 in 
  5190.                     the process with PID = 6. 
  5191.  System handle      The corresponding system file handle. These are common 
  5192.                     across the entire system. That is, system file handle 5 in 
  5193.                     the process with PID = 5 is the same as system file handle 
  5194.                     5 in the process with PID = 6. 
  5195.  Flags              The file state flags. They are decoded into English at the 
  5196.                     end of the line. 
  5197.  File name          This can be: 
  5198.  
  5199.     o Fully qualified file name. 
  5200.     o "anonymous pipe" = an anonymous pipe is opened on this handle. 
  5201.     o "named pipe" = a named pipe is opened on this handle. 
  5202.  
  5203.  The process environment is displayed. Each string is displayed on a line, 
  5204.  surrounded by quote marks. The fully qualified program file name is displayed, 
  5205.  surrounded by quote marks. The program name as input is displayed, surrounded 
  5206.  by quote marks. The parameters passed to the program are displayed, surrounded 
  5207.  by quote marks. 
  5208.  
  5209.  
  5210. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5211.  
  5212.  o Memory addressing 
  5213.  
  5214.  o PTDA 
  5215.  
  5216.  o Open Files 
  5217.  
  5218.  
  5219. ΓòÉΓòÉΓòÉ 9.4.5. Per Task Data Area (PTDA) ΓòÉΓòÉΓòÉ
  5220.  
  5221. Select one: 
  5222.  
  5223.  Selecting 
  5224.  
  5225.  Example Output 
  5226.  
  5227.  Contents of Display 
  5228.  
  5229.  Related Topics 
  5230.  
  5231.  
  5232. ΓòÉΓòÉΓòÉ <hidden> Selecting the Per Task Data Area (PTDA) Display ΓòÉΓòÉΓòÉ
  5233.  
  5234. When you select the Per Task Data Area (PTDA) option of the Process pull-down 
  5235. on the Process Hierarchy window, the Per Task Data Area (PTDA) for the selected 
  5236. process is displayed. 
  5237.  
  5238.  
  5239. ΓòÉΓòÉΓòÉ <hidden> Example of the Per Task Data Area (PTDA) Display ΓòÉΓòÉΓòÉ
  5240.  
  5241. Per Task Data Area (PTDA) for Process with PID = 0088, name = 'THESEUS2':
  5242. parent PTDA     @ 7D31E020, this PTDA          @ 7D320A80
  5243. first child     @ 00000000, exec child         @ 00000000
  5244. next sibling    @ 7D31FC60, previous sibling   @ 00000000
  5245. EXE pointer     @ FE5A2934, name = D:\THESEUS2\THESEUS2.EXE
  5246. last TCB        @ FD422E10, first TCB          @ FD422E10
  5247. # of threads    = 0001,     tib count          = 0055
  5248. TIB 0           = 00050000, TIB 1              = FFFFFFFF
  5249. TIB 2           = FFFFFFFF, TIB 3              = FFFFFFFF
  5250. debug data      @ 00000000, debug flag         = 00000000
  5251.  
  5252. Virtual Memory Manager information:
  5253. Next Arena      @ 7D31FCA0, Previous Arena     @ FFF408FC
  5254. Arena sentinel  @ FEF31ECA, Hint of first free @ FEF3244A
  5255. bitmap dir (?)  @ FEF2D650, hash table         @ FEF2D8CC
  5256. per-type info   @ FFF3C23C, VM flags           = 00000002
  5257. min address     = 00010000, max address        = 00810000
  5258. arena count     = 00000000, need bitmap        = 00000000
  5259. max bitmap      = 00000003, max bitmap entry   = 00000000
  5260. max hash index  = 00000081, arena header hob   = 0275
  5261.  
  5262. Physical Memory Manager information:
  5263. page tables                       @ 7D680000
  5264. Process Page Directory (1st 512M) @ FF215A00
  5265. allocated page counts             @ 7D320B28
  5266. present page counts               @ 7D320C28
  5267. locked/resident page counts       @ 7D320D28
  5268. base virtual page number          = 00000000
  5269. base vdm alias region             = 00000000
  5270. max potential pdes for this arena = 0080
  5271. count of low  in-use pdes         = 0003
  5272. count of high in-use pdes         = 0015
  5273. page table context                = 0006
  5274. per-process page manager flags    = 0000
  5275.    process was aged in this sweep.
  5276.  
  5277. Environment hob = 0352 (linear = 00060000, selector = 0037)
  5278.  
  5279. PerfView data @ 00000000
  5280.  
  5281. Exit List @ FE5B55C0
  5282.  
  5283. hob of PTDA = 026C, hob of MTE = 024C
  5284. hob of LDT  = 0278, LDT        @ 7C705000
  5285. PID         = 0088, parent PID = 0002
  5286. selector    = 0E48, signature  = TD
  5287.  
  5288.  
  5289. ΓòÉΓòÉΓòÉ <hidden> Contents of the Per Task Data Area (PTDA) Display ΓòÉΓòÉΓòÉ
  5290.  
  5291. The information presented on the Per Task Data Area (PTDA) display is as 
  5292. follows: 
  5293.  
  5294.  Per Task Data Area (PTDA) for Process with PID = hhhh 
  5295.            The PID of the specified process. 
  5296.  name = 'aaaaaaaa' 
  5297.            The name of the .EXE file that is the module for the process. 
  5298.  
  5299.  The following items concern the process lineage and its threads: 
  5300.  parent PTDA @ llllllll 
  5301.            The processes have a parent/child relationship. This entry is the 
  5302.            linear address of the parent process' PTDA. 
  5303.  this PTDA @ llllllll 
  5304.            The linear address of this PTDA. 
  5305.  first child @ llllllll 
  5306.            The linear address of the PTDA of the youngest child of this 
  5307.            process. 
  5308.  exec child @ llllllll 
  5309.            The linear address of the PTDA of the child process, while the child 
  5310.            is being created. 
  5311.  next sibling @ llllllll 
  5312.            The linear address of the next oldest sibling in the structure. 
  5313.  previous sibling @ llllllll 
  5314.            The linear address of the next youngest sibling in the structure. 
  5315.  EXE pointer @ llllllll 
  5316.            The linear address of the fully qualified .EXE file name. 
  5317.  name = aaaaaaaa 
  5318.            The fully qualified file name of the .EXE file for this process. 
  5319.  last TCB @ llllllll 
  5320.            The linear address of the last TCB in the TCB chain for this 
  5321.            process. 
  5322.  first TCB @ llllllll 
  5323.            The linear address of the first TCB in the TCB chain for this 
  5324.            process. 
  5325.  # of threads = hhhh 
  5326.            The number of threads that the PTDA claims to own. 
  5327.  tib count = hhhh 
  5328.            The number of TIBs that have been allocated. 
  5329.  TIB 0 = llllllll 
  5330.            Linear address of the first group of TIBs. 
  5331.  TIB 1 = llllllll 
  5332.            Linear address of the second group of TIBs. 
  5333.  TIB 2 = llllllll 
  5334.            Linear address of the third group of TIBs. 
  5335.  TIB 3 = llllllll 
  5336.            Linear address of the fourth group of TIBs. 
  5337.  debug data @ hhhhhhhh 
  5338.            Unknown 
  5339.  debug flag = hhhhhhhh 
  5340.            Unknown 
  5341.  
  5342.  The following items concern the Virtual Memory Manager: 
  5343.  Next Arena @ llllllll 
  5344.            The linear address of the next arena header. 
  5345.  Previous Arena @ llllllll 
  5346.            The linear address of the previous arena header. 
  5347.  Arena sentinel @ llllllll 
  5348.            The linear address of the sentinel arena record that starts the 
  5349.            process' arena. 
  5350.  Hint of first free @ llllllll 
  5351.            The linear address of the arena record which may be followed by an 
  5352.            area of linear space that is not allocated. 
  5353.  bitmap dir (?) @ llllllll 
  5354.            Unknown 
  5355.  hash table @ llllllll 
  5356.            Unknown 
  5357.  per-type info @ llllllll 
  5358.            Unknown 
  5359.  VM flags = hhhhhhhh 
  5360.            Unknown 
  5361.  min address = hhhhhhhh 
  5362.            The minimum linear address used by this process. 
  5363.  max address = hhhhhhhh 
  5364.            The maximum linear address used by this process. 
  5365.  arena count = hhhhhhhh 
  5366.            Unknown 
  5367.  need bitmap = hhhhhhhh 
  5368.            Unknown 
  5369.  max bitmap = hhhhhhhh 
  5370.            Unknown 
  5371.  max bitmap entry = hhhhhhhh 
  5372.            Unknown 
  5373.  max hash index = hhhhhhhh 
  5374.            Unknown 
  5375.  arena header hob = oooo 
  5376.            The hob of the pseudo-object for this arena header. 
  5377.  
  5378.  The following items concern the Physical Memory Manager: 
  5379.  page tables @ llllllll 
  5380.            The linear address of the start of the Page Tables for this process. 
  5381.  Process Page Directory (1st 512M) @ llllllll 
  5382.            The linear address of the Process Page Directory for this process. 
  5383.  allocated page counts @ llllllll 
  5384.            The linear address of a table having one entry for each potential 
  5385.            Page Table. Each entry states the number of pages that are allocated 
  5386.            within that Page Table. 
  5387.  present page counts @ llllllll 
  5388.            The linear address of a table having one entry for each potential 
  5389.            Page Table. Each entry states the number of pages that are present 
  5390.            within that Page Table. 
  5391.  locked/resident page counts @ llllllll 
  5392.            The linear address of a table having one entry for each potential 
  5393.            Page Table. Each entry states the number of pages that are 
  5394.            locked/resident within that Page Table. 
  5395.  base virtual page number = hhhhhhhh 
  5396.            Unknown 
  5397.  base vdm alias region = hhhhhhhh 
  5398.            Unknown 
  5399.  max potential pdes for this arena = hhhh 
  5400.            The size of the process' Process Page Directory. 
  5401.  count of low  in-use pdes = hhhh 
  5402.            Unknown 
  5403.  count of high in-use pdes = hhhh 
  5404.            Unknown 
  5405.  page table context = hhhh 
  5406.            Unknown 
  5407.  per-process page manager flags = hhhh 
  5408.            Unknown 
  5409.    process was aged in this sweep. 
  5410.  
  5411.  Environment hob = oooo (linear = llllllll, selector = ssss) 
  5412.            The hob, linear address and selector of the environment object. 
  5413.  
  5414.  PerfView data @ llllllll 
  5415.            The linear address of the PerfView data for this process. 
  5416.  
  5417.  Exit List @ llllllll 
  5418.            The linear address of the Exit List for this process. 
  5419.  
  5420.  hob of PTDA = oooo 
  5421.            The hob of the PTDA pseudo-object. 
  5422.  hob of MTE = oooo 
  5423.            The hob of the MTE for the .EXE file for the process. 
  5424.  hob of LDT = oooo 
  5425.            The hob of the process' LDT. 
  5426.  LDT @ llllllll 
  5427.            The linear address of the process' LDT. 
  5428.  MaxFileHandles = iii 
  5429.            The maximum number of files that can be opened at one time by this 
  5430.            process. 
  5431.  Open File table @ ssss:oooo 
  5432.            The virtual address of the Open File table. There is one entry for 
  5433.            each process file handle. 
  5434.  PID = hhhh 
  5435.            The PID of this process. 
  5436.  parent PID = hhhh 
  5437.            The PID of the parent process. 
  5438.  selector = ssss 
  5439.            The GDT selector that points to this PTDA. 
  5440.  signature = TD 
  5441.            Several of the OS/2 kernel control blocks have signature characters 
  5442.            at the beginning (the PTDA was inverted in OS/2 1.2). The signature 
  5443.            of the PTDA is 'TD'. 
  5444.  
  5445.  
  5446. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5447.  
  5448.  o Memory addressing 
  5449.  
  5450.  o Linear addresses 
  5451.  
  5452.  o Memory Management Control Blocks 
  5453.  
  5454.  o General Process Information 
  5455.  
  5456.  
  5457. ΓòÉΓòÉΓòÉ 9.4.6. LDT ΓòÉΓòÉΓòÉ
  5458.  
  5459. Select one: 
  5460.  
  5461.  Selecting 
  5462.  
  5463.  Example Output 
  5464.  
  5465.  Contents of Display 
  5466.  
  5467.  Descriptor Table Entry Description 
  5468.  
  5469.  Related Topics 
  5470.  
  5471.  
  5472. ΓòÉΓòÉΓòÉ <hidden> Selecting the LDT Display ΓòÉΓòÉΓòÉ
  5473.  
  5474. When you select the LDT option of the Process pull-down on the Process 
  5475. Hierarchy window, the contents of the LDT for the selected process is 
  5476. displayed. 
  5477.  
  5478.  
  5479. ΓòÉΓòÉΓòÉ <hidden> Example of the LDT Display ΓòÉΓòÉΓòÉ
  5480.  
  5481. Local Descriptor Table for process 'THESEUS2', PID = 0033:
  5482. LDT(0004) Data    Base=7C705000 Limit=0FFFF DPL=3 ED=0  W=0 A=0 P=1 G=0 B=0
  5483. LDT(000C) Code    Base=00010000 Limit=0FFFF DPL=3 CF=0  R=1 A=0 P=1 G=0 D=0
  5484. LDT(0014) Code    Base=00020000 Limit=0E2B5 DPL=3 CF=0  R=1 A=0 P=1 G=0 D=0
  5485. LDT(001C) Data    Base=00030000 Limit=0EADF DPL=3 ED=0  W=1 A=1 P=1 G=0 B=0
  5486. LDT(0024) Data    Base=00040000 Limit=002A8 DPL=3 ED=0  W=1 A=1 P=1 G=0 B=0
  5487. ┬╖┬╖┬╖
  5488.  
  5489.  
  5490. ΓòÉΓòÉΓòÉ <hidden> Contents of the LDT Display ΓòÉΓòÉΓòÉ
  5491.  
  5492. One line is displayed for each valid entry in the LDT. 
  5493.  
  5494. Please see the Descriptor Table Entry for the format of an entry. 
  5495.  
  5496.  
  5497. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5498.  
  5499.  o Memory addressing 
  5500.  
  5501.  o Virtual addresses 
  5502.  
  5503.  o General Process Information 
  5504.  
  5505.  o PTDA 
  5506.  
  5507.  
  5508. ΓòÉΓòÉΓòÉ 9.4.7. Page Table ΓòÉΓòÉΓòÉ
  5509.  
  5510. Select one: 
  5511.  
  5512.  Selecting 
  5513.  
  5514.  Example Output 
  5515.  
  5516.  Contents of Display 
  5517.  
  5518.  Page Table Entry Description 
  5519.  
  5520.  Related Topics 
  5521.  
  5522.  
  5523. ΓòÉΓòÉΓòÉ <hidden> Selecting the Process Page Table Display ΓòÉΓòÉΓòÉ
  5524.  
  5525. When you select the Page Table option of the Process pull-down on the Process 
  5526. Hierarchy window, the contents of the Process Page Table is displayed. 
  5527.  
  5528. The display generation takes about 3 seconds on an 8MB 20Mhz P70. 
  5529.  
  5530.  
  5531. ΓòÉΓòÉΓòÉ <hidden> Example of the Process Page Table Display ΓòÉΓòÉΓòÉ
  5532.  
  5533. Page Table for 'THESEUS2':
  5534. *Linear=00000000 Physical=002D2000 D=1 A=1 User  R/W P=1 Resident
  5535.  Linear=00010000 FrameId=0083D     D=0 A=0 User  R/O P=0
  5536.  Linear=00011000 Physical=001AE000 D=0 A=1 User  R/O P=1
  5537.  Linear=00012000 Physical=002DA000 D=0 A=1 User  R/O P=1
  5538.  Linear=00013000 FrameId=00840     D=0 A=0 User  R/O P=0
  5539. ┬╖┬╖┬╖
  5540.  
  5541.  
  5542. ΓòÉΓòÉΓòÉ <hidden> Contents of the Process Page Table Display ΓòÉΓòÉΓòÉ
  5543.  
  5544. One line is displayed for each valid entry in the Process Page Table. 
  5545.  
  5546. Please see the Page Table Entry for the format of an entry. 
  5547.  
  5548.  
  5549. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5550.  
  5551.  o Memory addressing 
  5552.  
  5553.  o Linear addresses 
  5554.  
  5555.  o Physical addresses 
  5556.  
  5557.  
  5558. ΓòÉΓòÉΓòÉ 9.4.8. Private Object Summary ΓòÉΓòÉΓòÉ
  5559.  
  5560. Select one: 
  5561.  
  5562.  Selecting 
  5563.  
  5564.  Example Output 
  5565.  
  5566.  Contents of Display 
  5567.  
  5568.  Related Topics 
  5569.  
  5570.  
  5571. ΓòÉΓòÉΓòÉ <hidden> Selecting the Private Object Summary Display ΓòÉΓòÉΓòÉ
  5572.  
  5573. When you select the Private Object Summary option of the Process pull-down on 
  5574. the Process Hierarchy window, a summary of all the memory objects defined in 
  5575. the private arena for the selected process is displayed. 
  5576.  
  5577.  
  5578. ΓòÉΓòÉΓòÉ 9.4.9. Shared Object Summary ΓòÉΓòÉΓòÉ
  5579.  
  5580. Select one: 
  5581.  
  5582.  Selecting 
  5583.  
  5584.  Example Output 
  5585.  
  5586.  Contents of Display 
  5587.  
  5588.  Related Topics 
  5589.  
  5590.  
  5591. ΓòÉΓòÉΓòÉ <hidden> Selecting the Shared Object Summary Display ΓòÉΓòÉΓòÉ
  5592.  
  5593. When you select the Shared Object Summary option of the Process pull-down on 
  5594. the Process Hierarchy window, a summary of all the memory objects defined in 
  5595. the shared arena for the selected process is displayed. 
  5596.  
  5597.  
  5598. ΓòÉΓòÉΓòÉ 9.4.10. Private Arena Table ΓòÉΓòÉΓòÉ
  5599.  
  5600. Select one: 
  5601.  
  5602.  Selecting 
  5603.  
  5604.  Example Output 
  5605.  
  5606.  Contents of Display 
  5607.  
  5608.  Arena Record Description 
  5609.  
  5610.  Related Topics 
  5611.  
  5612.  
  5613. ΓòÉΓòÉΓòÉ <hidden> Selecting the Private Arena Table Display ΓòÉΓòÉΓòÉ
  5614.  
  5615. When you select the Private Arena Table option of the Process pull-down on the 
  5616. Process Hierarchy window, the contents of the process' private arena is 
  5617. displayed. 
  5618.  
  5619.  
  5620. ΓòÉΓòÉΓòÉ <hidden> Example of the Private Arena Table Display ΓòÉΓòÉΓòÉ
  5621.  
  5622. Private Arena Table for 'THESEUS2':
  5623.  har    pages   linear flg next prev link hash hob  hal  ptda / Decoded flags
  5624. 020E 00000000 00010000 003 020A 0229 0005 0000 Sentinel, max pages=00004000
  5625. 020A 00000020 00010000 1D9 020B 020E 0000 0000 0238 0000 0235 / Mapped Reload User Exec Read
  5626. 020B 00000010 00030000 179 0211 020A 0000 0000 0263 0000 0235 / Mapped Reload Write User Read
  5627. ┬╖┬╖┬╖
  5628. 024A 00000010 006E0000 169 020D 0219 0000 0000 0243 0000 0235 / Mapped Write User Read
  5629. 020D 00000010 006F0000 169 0229 024A 0000 0000 023A 0000 0235 / Mapped Write User Read
  5630. 0229 000000D0 00700000 169 020E 020D 0000 0000 0278 0000 0235 / Mapped Write User Read
  5631.  
  5632.  
  5633. ΓòÉΓòÉΓòÉ <hidden> Contents of the Private Arena Table Display ΓòÉΓòÉΓòÉ
  5634.  
  5635. One line is displayed for each entry in the private arena. 
  5636.  
  5637. Please see the arena record for the format of an entry. 
  5638.  
  5639.  
  5640. ΓòÉΓòÉΓòÉ 9.4.11. Shared Arena Table ΓòÉΓòÉΓòÉ
  5641.  
  5642. Select one: 
  5643.  
  5644.  Selecting 
  5645.  
  5646.  Example Output 
  5647.  
  5648.  Contents of Display 
  5649.  
  5650.  Arena Record Description 
  5651.  
  5652.  Related Topics 
  5653.  
  5654.  
  5655. ΓòÉΓòÉΓòÉ <hidden> Selecting the Shared Arena Table Display ΓòÉΓòÉΓòÉ
  5656.  
  5657. When you select the Shared Arena Table option of the Process pull-down on the 
  5658. Process Hierarchy window, the contents of the shared arena is displayed. 
  5659.  
  5660.  
  5661. ΓòÉΓòÉΓòÉ <hidden> Example of the Shared Arena Table Display ΓòÉΓòÉΓòÉ
  5662.  
  5663. Shared Arena Table for 'THESEUS2':
  5664.  har    pages   linear flg next prev link hash hob  hal  hco  / Decoded flags
  5665. 0005 00016F10 04000000 007 023D 0021 0000 0000 Boundary Sentinel
  5666. 023D 00000010 1AF10000 349 0247 0005 0000 0000 0248 0000 03AA / Mapped User Read Hco
  5667. 0247 00000010 1AF20000 369 0236 023D 0000 0000 0251 0000 032C / Mapped Write User Read Hco
  5668. ┬╖┬╖┬╖
  5669. 006D 00000010 1BFE0000 349 006B 0095 0000 0000 006E 0000 030B / Mapped User Read Hco
  5670. 006B 00000010 1BFF0000 349 0021 006D 0000 0000 006C 0000 02BB / Mapped User Read Hco
  5671. 0021 00000010 1C000000 001 0005 006B 0000 0000 0000 0000 0000 /
  5672.  
  5673.  
  5674. ΓòÉΓòÉΓòÉ <hidden> Contents of the Shared Arena Table Display ΓòÉΓòÉΓòÉ
  5675.  
  5676. One line is displayed for each entry in the shared arena. 
  5677.  
  5678. Please see the arena record for the format of an entry. 
  5679.  
  5680.  
  5681. ΓòÉΓòÉΓòÉ 9.5. Registers ΓòÉΓòÉΓòÉ
  5682.  
  5683. The Registers pull-down contains displays of certain of the hardware related 
  5684. registers and tables. 
  5685.  
  5686. Functions available are: 
  5687.  
  5688.  Control Registers 
  5689.            Displays the iAPX 386 control registers. 
  5690.  Current IDT 
  5691.            Displays the current Interrupt Descriptor Table. 
  5692.  Current TSS 
  5693.            Displays the current Task State Segment. 
  5694.  
  5695.  
  5696. ΓòÉΓòÉΓòÉ 9.5.1. Control Registers ΓòÉΓòÉΓòÉ
  5697.  
  5698. Select one: 
  5699.  
  5700.  Selecting 
  5701.  
  5702.  Example Output 
  5703.  
  5704.  Contents of Display 
  5705.  
  5706.  Related Topics 
  5707.  
  5708.  
  5709. ΓòÉΓòÉΓòÉ <hidden> Selecting the Control Registers Display ΓòÉΓòÉΓòÉ
  5710.  
  5711. When you select the Control Registers option of the Registers pull-down on the 
  5712. Process Hierarchy window, information about the current values of the 
  5713. iAPX 386/486 internal control registers is displayed. 
  5714.  
  5715.  
  5716. ΓòÉΓòÉΓòÉ <hidden> Example of the Control Registers Display ΓòÉΓòÉΓòÉ
  5717.  
  5718. Processor Control Registers:
  5719. GDT base = FFEC6000, limit = 1FFF
  5720. IDT base = FFE42966, limit = 03FF
  5721. LDT selector = 0028
  5722. TSS selector = 0010
  5723. CR0 = FFFFFFFD, PG=1, ET=1, TS=1, EM=1, MP=0, PE=1
  5724. CR2 = 004E0000  (Page Fault Linear address)
  5725. CR3 = 0018F000  (Page Directory Physical address)
  5726. DR0 = 00000000  (Breakpoint 0 Linear address)
  5727. DR1 = 00000000  (Breakpoint 1 Linear address)
  5728. DR2 = 00000000  (Breakpoint 2 Linear address)
  5729. DR3 = 00000000  (Breakpoint 3 Linear address)
  5730. DR6 = FFFF4FF0, B0-3=0000, BD=0, BS=1, BT=0
  5731. DR7 = 00000400, LE=0, GE=0, GD=0
  5732.       Len0=0, R/W0=0, L0=0, G0=0
  5733.       Len1=0, R/W1=0, L1=0, G1=0
  5734.       Len2=0, R/W2=0, L2=0, G2=0
  5735.       Len3=0, R/W3=0, L3=0, G3=0
  5736.  
  5737.  
  5738. ΓòÉΓòÉΓòÉ <hidden> Contents of the Control Registers Display ΓòÉΓòÉΓòÉ
  5739.  
  5740. The information presented on the Control Registers display is as follows: 
  5741.  
  5742.  GDT base = llllllll, limit = hhhh 
  5743.            The base and limit values for the GDT, obtained by doing an SGDT 
  5744.            instruction. 
  5745.  IDT base = llllllll, limit = hhhh 
  5746.            The base and limit values for the IDT, obtained by doing an SIDT 
  5747.            instruction. 
  5748.  LDT selector = ssss 
  5749.            The selector for the LDT, obtained by doing an SLDT instruction. 
  5750.  TSS selector = ssss 
  5751.            The selector for the current TSS, obtained by doing an STR 
  5752.            instruction. 
  5753.  CR0 = hhhhhhhh 
  5754.            Control Register 0.  The bits that are used are decoded as follows: 
  5755.  
  5756.     PG   Paging enabled.  0 = no, 1 = yes. 
  5757.     ET   Extension Type.  0 = 16-bit 387 protocol, 1 = 32-bit 387 protocol. 
  5758.     TS   Task Switched.  0 = no, 1 = yes. 
  5759.     EM   Emulation (of 387).  0 = no, 1 = yes. 
  5760.     MP   Math Present.  0 = no 387 is attached, 1 = a 387 is attached. 
  5761.     PE   Protection Enable.  0 = no, 1 = yes. 
  5762.  CR2 = llllllll  (Page Fault Linear address) 
  5763.            The linear address of the last page fault. 
  5764.  CR3 = pppppppp  (Page Directory Physical address) 
  5765.            The physical address of the Page Directory. There is only one Page 
  5766.            Directory for the entire system. 
  5767.  DR0 = llllllll  (Breakpoint 0 Linear address) 
  5768.            Debug Register 0.  This is the linear address of Breakpoint 0. 
  5769.  DR1 = llllllll  (Breakpoint 1 Linear address) 
  5770.            Debug Register 1.  This is the linear address of Breakpoint 1. 
  5771.  DR2 = llllllll  (Breakpoint 2 Linear address) 
  5772.            Debug Register 2.  This is the linear address of Breakpoint 2. 
  5773.  DR3 = llllllll  (Breakpoint 3 Linear address) 
  5774.            Debug Register 3.  This is the linear address of Breakpoint 3. 
  5775.  DR6 = hhhhhhhh 
  5776.            Debug Register 6.  See the Intel 80386 Programmer's Reference Manual 
  5777.            for the definitions of the bits. 
  5778.  DR7 = hhhhhhhh 
  5779.            Debug Register 7.  See the Intel 80386 Programmer's Reference Manual 
  5780.            for the definitions of the bits. 
  5781.  
  5782.  
  5783. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5784.  
  5785.  o Memory addressing 
  5786.  
  5787.  
  5788. ΓòÉΓòÉΓòÉ 9.5.2. IDT ΓòÉΓòÉΓòÉ
  5789.  
  5790. Select one: 
  5791.  
  5792.  Selecting 
  5793.  
  5794.  Example Output 
  5795.  
  5796.  Contents of Display 
  5797.  
  5798.  Descriptor Table Entry Description 
  5799.  
  5800.  Related Topics 
  5801.  
  5802.  
  5803. ΓòÉΓòÉΓòÉ <hidden> Selecting the IDT Display ΓòÉΓòÉΓòÉ
  5804.  
  5805. When you select the IDT option of the Registers pull-down on the Process 
  5806. Hierarchy window, the contents of the IDT is displayed. 
  5807.  
  5808.  
  5809. ΓòÉΓòÉΓòÉ <hidden> Example of the IDT Display ΓòÉΓòÉΓòÉ
  5810.  
  5811. Interrupt Descriptor Table:
  5812. Trap(00) TrapG32 Selector=0160 Offset=FFF6BF58 DPL=0               P=1
  5813. Trap(01) IntG32  Selector=0160 Offset=FFF6C004 DPL=3               P=1
  5814. Trap(02) TaskG   Selector=1D18                 DPL=0               P=1
  5815. Trap(03) IntG32  Selector=0160 Offset=FFF6C1A8 DPL=3               P=1
  5816. Trap(04) TrapG32 Selector=0160 Offset=FFF6C1F0 DPL=3               P=1
  5817. Trap(05) TrapG32 Selector=0160 Offset=FFF6C1FC DPL=0               P=1
  5818. Trap(06) TrapG32 Selector=0160 Offset=FFF6C208 DPL=0               P=1
  5819. Trap(07) TrapG32 Selector=005A Offset=1BF60AD0 DPL=0               P=1
  5820. Trap(08) TaskG   Selector=0088                 DPL=0               P=1
  5821. Trap(09) TrapG32 Selector=0160 Offset=FFF6C2E0 DPL=0               P=1
  5822. ┬╖┬╖┬╖
  5823. Int (00) IntG32  Selector=0160 Offset=FFF37214 DPL=0               P=1
  5824. Int (01) IntG32  Selector=0160 Offset=FFF37228 DPL=0               P=1
  5825. ┬╖┬╖┬╖
  5826. Int (0E) IntG32  Selector=0160 Offset=FFF37354 DPL=0               P=1
  5827. Int (0F) IntG32  Selector=0160 Offset=FFF37368 DPL=0               P=1
  5828. ┬╖┬╖┬╖
  5829.  
  5830.  
  5831. ΓòÉΓòÉΓòÉ <hidden> Contents of the IDT Display ΓòÉΓòÉΓòÉ
  5832.  
  5833. One line is displayed for each valid entry in the IDT. 
  5834.  
  5835. Please see the Descriptor Table Entry for the format of an entry. 
  5836.  
  5837.  
  5838. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5839.  
  5840.  o Memory addressing 
  5841.  
  5842.  o Virtual addresses 
  5843.  
  5844.  
  5845. ΓòÉΓòÉΓòÉ 9.5.3. Current TSS ΓòÉΓòÉΓòÉ
  5846.  
  5847. Select one: 
  5848.  
  5849.  Selecting 
  5850.  
  5851.  Example Output 
  5852.  
  5853.  Contents of Display 
  5854.  
  5855.  Related Topics 
  5856.  
  5857.  
  5858. ΓòÉΓòÉΓòÉ <hidden> Selecting the Current TSS Display ΓòÉΓòÉΓòÉ
  5859.  
  5860. When you select the Current TSS option of the Registers pull-down on the 
  5861. Process Hierarchy window, information about the current Task State Segment is 
  5862. displayed. 
  5863.  
  5864.  
  5865. ΓòÉΓòÉΓòÉ <hidden> Example of the TSS Display ΓòÉΓòÉΓòÉ
  5866.  
  5867. Busy 386 Task State Segment for selector = 0010:
  5868. Back Link Selector to TSS = 0000
  5869. SS:ESP for ring 0 = 0030:00005E14
  5870. SS:ESP for ring 1 = 0000:00000000
  5871. SS:ESP for ring 2 = 0036:00001000
  5872. Current Task State:
  5873. CR3 = 0018F000  EIP = 00000000  Flag = 00000000
  5874. EAX = 00000000  EBX = 00000000  ECX = 00000000  EDX = 00000000
  5875. EDI = 00000000  ESI = 00000000  EBP = 00000000  ESP = 00000000
  5876. CS = 0000  SS = 0000  DS = 0000  ES = 0000  FS = 0000  GS = 0000
  5877. Task LDT Selector = 0028  I/O Map Base = DFFF  Debug Trap bit = 0
  5878.  
  5879.  
  5880. ΓòÉΓòÉΓòÉ <hidden> Contents of the TSS Display ΓòÉΓòÉΓòÉ
  5881.  
  5882. Please refer to the Intel 80386 Programmer's Reference Manual or Intel i486 
  5883. Microprocessor Programmer's Reference Manual for the fields in the TSS. 
  5884.  
  5885.  
  5886. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5887.  
  5888.  o Memory addressing 
  5889.  
  5890.  o Virtual addresses 
  5891.  
  5892.  
  5893. ΓòÉΓòÉΓòÉ 9.6. Misc ΓòÉΓòÉΓòÉ
  5894.  
  5895. The Misc pull-down contains options applicable to the system as a whole. 
  5896.  
  5897. Functions available are: 
  5898.  
  5899.  Refresh Diagram 
  5900.            Refreshes the process hierarchy diagram. 
  5901.  Unselect Process 
  5902.            Unselects the currently selected process. 
  5903.  'Link' Color 
  5904.            Changes the color of the hyperblock links. 
  5905.  Font for this window... 
  5906.            Specifies an alternate font for this window. 
  5907.  Default font for Detail Windows... 
  5908.            Specifies an alternate default font for the Detail windows. 
  5909.  Contents Update 
  5910.            Specifies control, start and stop of periodic updates. 
  5911.  
  5912.  
  5913. ΓòÉΓòÉΓòÉ 9.6.1. Refresh Diagram ΓòÉΓòÉΓòÉ
  5914.  
  5915. When you select the Refresh Diagram option of the Misc pull-down on the Process 
  5916. Hierarchy window, the process hierarchy diagram on the Process Hierarchy window 
  5917. is redetermined and redisplayed. This also happens each time any part of the 
  5918. window is painted. 
  5919.  
  5920.  
  5921. ΓòÉΓòÉΓòÉ 9.6.2. Unselect Process ΓòÉΓòÉΓòÉ
  5922.  
  5923. When you select the Unselect Process option of the Misc pull-down on the 
  5924. Process Hierarchy window, the currently selected process is unselected. No 
  5925. process will be selected. 
  5926.  
  5927.  
  5928. ΓòÉΓòÉΓòÉ 9.6.3. 'Link' Color ΓòÉΓòÉΓòÉ
  5929.  
  5930. When you select the 'Link' Color option of the Misc pull-down on the Process 
  5931. Hierarchy window, you can change the color of the hyperblock links displayed on 
  5932. the Detail window. 
  5933.  
  5934. The Dark Blue and Dark Red offer the best contrast for both normal and reverse 
  5935. video information displayed on both a color and monochrome display. However, 
  5936. the color defaults to Dark Cyan so the hyperblock links will be the same color 
  5937. as the hypertext links in the help panels. 
  5938.  
  5939. The pop-out menu lists all available colors. 
  5940.  
  5941. Window Text is a color chosen by the system to be neutral on both color and 
  5942. monochrome displays. It is normally black. 
  5943.  
  5944. The current setting is checked in the list. 
  5945.  
  5946.  
  5947. ΓòÉΓòÉΓòÉ 9.6.4. Font for this Window... ΓòÉΓòÉΓòÉ
  5948.  
  5949. When you select the Font for this Window... option of the Misc pull-down on the 
  5950. Process Hierarchy window, you can specify a different monospace font  for the 
  5951. Process Hierarchy window. 
  5952.  
  5953.  
  5954. ΓòÉΓòÉΓòÉ 9.6.5. Default font for Detail Windows... ΓòÉΓòÉΓòÉ
  5955.  
  5956. When you select the Default font for Detail Windows... option of the Misc 
  5957. pull-down on the Process Hierarchy window, you can specify a different default 
  5958. monospace font for Detail windows which are created. 
  5959.  
  5960.  
  5961. ΓòÉΓòÉΓòÉ <hidden> List of Selectable Fonts ΓòÉΓòÉΓòÉ
  5962.  
  5963. Select a font from this list. Only monospaced fonts are displayed. 
  5964.  
  5965.  
  5966. ΓòÉΓòÉΓòÉ 9.7. Window ΓòÉΓòÉΓòÉ
  5967.  
  5968. The Window pull-down contains the list of existing THESEUS2 Detail windows. 
  5969. When you select one, it is brought to the foreground. If it has been minimized, 
  5970. it is also restored to the size and position it had before being minimized. 
  5971.  
  5972. The list is updated as Detail windows are created and destroyed. The order of 
  5973. the windows listed reflects the order of creation, with the newest being on the 
  5974. bottom of the list. 
  5975.  
  5976. The last window viewed is indicated by a check mark. 
  5977.  
  5978.  
  5979. ΓòÉΓòÉΓòÉ 9.8. Help ΓòÉΓòÉΓòÉ
  5980.  
  5981. The Help pull-down contains the list of the help functions available for the 
  5982. Process Hierarchy window. 
  5983.  
  5984.  
  5985. ΓòÉΓòÉΓòÉ 9.8.1. Help Index ΓòÉΓòÉΓòÉ
  5986.  
  5987. The Help Index option of the Help pull-down displays the index of the help 
  5988. document. 
  5989.  
  5990.  
  5991. ΓòÉΓòÉΓòÉ 9.8.2. Keys help ΓòÉΓòÉΓòÉ
  5992.  
  5993. The Keys help option of the Help pull-down displays the key definitions for 
  5994. this window. 
  5995.  
  5996.  
  5997. ΓòÉΓòÉΓòÉ 9.8.3. Mouse ΓòÉΓòÉΓòÉ
  5998.  
  5999. The Mouse option of the Help pull-down displays information about using the 
  6000. mouse. 
  6001.  
  6002.  
  6003. ΓòÉΓòÉΓòÉ 9.8.4. General Help ΓòÉΓòÉΓòÉ
  6004.  
  6005. The General Help option of the Help pull-down displays information about the 
  6006. contents of this window. 
  6007.  
  6008.  
  6009. ΓòÉΓòÉΓòÉ 9.8.5. Product Information ΓòÉΓòÉΓòÉ
  6010.  
  6011. The Product Information option of the Help pull-down displays a dialog box 
  6012. which tells the version of the program. 
  6013.  
  6014.  
  6015. ΓòÉΓòÉΓòÉ 10. Detail Window ΓòÉΓòÉΓòÉ
  6016.  
  6017. The Detail window shows information about specific areas in either OS/2 system 
  6018. or application memory. There are a number of different window contents, all 
  6019. displayed in this same generic window class. The initial window size computed 
  6020. by the program is: 
  6021.  
  6022.  o The width of the longest line (not to exceed the screen width) 
  6023.  o The height of the data (not more than 3/4 of the screen height). 
  6024.  
  6025.  THESEUS2 knows how to format many control blocks. These are pointed to by 
  6026.  hyperblock links. The section Selecting a Hyperblock Link tells how to use the 
  6027.  hyperblock links. The section Keys tells how to use the keyboard. 
  6028.  
  6029.  Options available on the Detail window are: 
  6030.  
  6031.  Functions     Viewing memory in various hex formats or control working set 
  6032.                computations. 
  6033.  Secondary     View the working set from different view points. 
  6034.  Output        Sending output to a file or printer. 
  6035.  Mark/Find     Doing the clipboard and general string finding functions. 
  6036.  Misc          Changing window processing controls and font specification. 
  6037.  Help          Lists the help functions. 
  6038.  
  6039.  
  6040. ΓòÉΓòÉΓòÉ 10.1. Selecting a Hyperblock Link ΓòÉΓòÉΓòÉ
  6041.  
  6042. You may select a hyperblock link address in either of two ways: 
  6043.  
  6044.  o Place the mouse pointer over a hyperblock link address and press button 1. 
  6045.  
  6046.  o Use the arrow keys: 
  6047.  
  6048.     Left Arrow       Moves to the previous hyperblock link address. 
  6049.     Right Arrow      Moves to the next hyperblock link address. 
  6050.     Up Arrow         Moves to the hyperblock link address in the previous line. 
  6051.                      This attempts to stay in the same data column. If not 
  6052.                      possible, then the last hyperblock link address on the 
  6053.                      line is selected. 
  6054.     Down Arrow       Moves to the hyperblock link address in the next line. 
  6055.                      This attempts to stay in the same data column. If not 
  6056.                      possible, then the last hyperblock link address on the 
  6057.                      line is selected. 
  6058.  
  6059.  If no hyperblock link address is selected, pressing any arrow key will select 
  6060.  the first one. 
  6061.  
  6062.  
  6063. ΓòÉΓòÉΓòÉ 10.2. Keys ΓòÉΓòÉΓòÉ
  6064.  
  6065. The key assignments in a Detail window are: 
  6066.  
  6067.  Left Arrow       Moves to the previous hyperblock link address. 
  6068.  Right Arrow      Moves to the next hyperblock link address. 
  6069.  Up Arrow         Moves to the hyperblock link address in the previous line. 
  6070.                   This attempts to stay in the same data column. If not 
  6071.                   possible, then the last hyperblock link address on the line 
  6072.                   is selected. 
  6073.  Down Arrow       Moves to the hyperblock link address in the next line. This 
  6074.                   attempts to stay in the same data column. If not possible, 
  6075.                   then the last hyperblock link address on the line is 
  6076.                   selected. 
  6077.  Alt+Left         Scrolls the window information left. 
  6078.  Alt+Right        Scrolls the window information right. 
  6079.  Alt+Up           Scrolls the window information up. 
  6080.  Alt+Down         Scrolls the window information down. 
  6081.  Page Up          Scrolls the window information up 1/2 the screen height. 
  6082.  Page Down        Scrolls the window information down 1/2 the screen height. 
  6083.  Home             Moves the window so that the top left corner is displayed. 
  6084.  End              Moves the window so that the bottom right corner is 
  6085.                   displayed. 
  6086.  Print Screen     Prints the contents of the window. 
  6087.  Ctrl-A           Performs the "Find again" function. 
  6088.  Ctrl-F           Displays the "Find..." dialog. 
  6089.  Ctrl-S           Displays the "Save As..." dialog. 
  6090.  F1               Requests contextual help. 
  6091.  F3               Closes the Detail window. 
  6092.  Shift-F10        Displays a popup menu. 
  6093.  Enter            Formats the data at the selected address. (This is the same 
  6094.                   as double-clicking mouse button 1.) 
  6095.  
  6096.  
  6097. ΓòÉΓòÉΓòÉ 10.3. Functions ΓòÉΓòÉΓòÉ
  6098.  
  6099. The Functions pull-down has options that allow displaying more information 
  6100. about items in the current display. 
  6101.  
  6102. Functions available are: 
  6103.  
  6104.  Show memory at linear address... 
  6105.            Presents a dialog to allow display of memory at a specified linear 
  6106.            address. 
  6107.  Show memory at virtual address... 
  6108.            Presents a dialog to allow display of memory at a specified virtual 
  6109.            address. 
  6110.  Show memory at physical address... 
  6111.            Presents a dialog to allow display of memory at a specified physical 
  6112.            address. 
  6113.  Show selected address formatted 
  6114.            Shows the selected address as a formatted control block. 
  6115.  Show description... 
  6116.            Displays a "description" of the memory object. 
  6117.  Show process contexts 
  6118.            Displays context information for each process which access to the 
  6119.            specified linear address. 
  6120.  Memory Object Leak Detection 
  6121.            Performs memory leak detection on a single memory object. 
  6122.  Hot Spot Detection... 
  6123.            Performs byte change detection on a page of memory. 
  6124.  Working Set Parameters... 
  6125.            Presents a dialog to specify data collection parameters. 
  6126.  Working Set Start 
  6127.            Starts collecting the working set information. 
  6128.  Working Set Stop 
  6129.            Stops collecting the working set information and provide a summary. 
  6130.  Show detail by Page 
  6131.            Shows which pages made up the summary data in the window. 
  6132.  Show detail by Object 
  6133.            Shows which objects made up the summary data in the window. 
  6134.  Show summary by Process 
  6135.            Show a summary of the working set information, summarized by 
  6136.            process. 
  6137.  Leak Detection Control... 
  6138.            Presents a dialog to specify leak detection parameters. 
  6139.  Start Periodic Leak Detection 
  6140.            Starts performing leak detection on a periodic basis. 
  6141.  Stop Periodic Leak Detection 
  6142.            Stops the periodic leak detection. 
  6143.  Capture Leak Reference Data 
  6144.            Manually captures leak detection data. 
  6145.  Compare Present Leak Data 
  6146.            Compares current leak detection data with last captured data. 
  6147.  
  6148.  
  6149. ΓòÉΓòÉΓòÉ 10.3.1. Show memory at linear address... ΓòÉΓòÉΓòÉ
  6150.  
  6151. The Show memory at linear address dialog of the Functions pull-down on the 
  6152. Detail window allows you to display memory at a specified linear address for a 
  6153. specified number of bytes. Various formatting options are available: 
  6154.  
  6155.  o bytes 
  6156.  o words 
  6157.  o doublewords 
  6158.  o disassembled instructions. 
  6159.  
  6160.  
  6161. ΓòÉΓòÉΓòÉ <hidden> Address (in hex) of the area to display. ΓòÉΓòÉΓòÉ
  6162.  
  6163. This option specifies the linear address (in hexadecimal) of the memory to be 
  6164. displayed. 
  6165.  
  6166. The default value is the selected hyperblock link, if one is selected. 
  6167.  
  6168.  
  6169. ΓòÉΓòÉΓòÉ <hidden> Number of bytes (in hex) to display. ΓòÉΓòÉΓòÉ
  6170.  
  6171. This option specifies the number of bytes (in hexadecimal) you wish displayed. 
  6172.  
  6173.  
  6174. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "bytes". ΓòÉΓòÉΓòÉ
  6175.  
  6176. This option displays the memory as bytes. Each byte is formatted in 
  6177. hexadecimal. 
  6178.  
  6179. Additionally, the memory is formatted in ASCII. Unprintable characters are 
  6180. printed as a period (.). 
  6181.  
  6182. The width specification controls the number of bytes presented on each line. 
  6183.  
  6184.  
  6185. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "words". ΓòÉΓòÉΓòÉ
  6186.  
  6187. This option displays the memory as words (2 bytes). Each word is "byte 
  6188. reversed" and then formatted in hexadecimal. 
  6189.  
  6190. Additionally, the memory is formatted in ASCII, without "byte reversal." 
  6191. Unprintable characters are printed as a period (.). 
  6192.  
  6193.  
  6194. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "doublewords". ΓòÉΓòÉΓòÉ
  6195.  
  6196. This option displays the memory as doublewords (4 bytes). Each doubleword is 
  6197. "byte reversed" and then formatted in hexadecimal. 
  6198.  
  6199. Additionally, the memory is formatted in ASCII, without "byte reversal." 
  6200. Unprintable characters are printed as a period (.). 
  6201.  
  6202.  
  6203. ΓòÉΓòÉΓòÉ <hidden> Show the memory as disassembled instructions. ΓòÉΓòÉΓòÉ
  6204.  
  6205. This option displays the memory as disassembled instructions. 
  6206.  
  6207. The memory is presented: 
  6208.  
  6209.   1. in bytes 
  6210.   2. in ASCII 
  6211.   3. as disassembled instructions. 
  6212.  
  6213.  The default instruction type may be specified with the Code is 32-bit option. 
  6214.  
  6215.  
  6216. ΓòÉΓòÉΓòÉ <hidden> Code is 32-bit. ΓòÉΓòÉΓòÉ
  6217.  
  6218. This option specifies that the instructions being disassembled are 32-bit 
  6219. instructions. If this option is not selected, the instructions are assumed to 
  6220. be 16-bit. 
  6221.  
  6222.  
  6223. ΓòÉΓòÉΓòÉ <hidden> Number of bytes (in hex) per line. ΓòÉΓòÉΓòÉ
  6224.  
  6225. If you choose to "format in bytes," you can additionally select the number of 
  6226. bytes to be displayed on each line. This makes it easier to look at arrays, 
  6227. since each entry can be placed on a separate line. 
  6228.  
  6229. The default is 10 (hexadecimal) bytes per line. 
  6230.  
  6231.  
  6232. ΓòÉΓòÉΓòÉ 10.3.2. Show memory at virtual address... ΓòÉΓòÉΓòÉ
  6233.  
  6234. The Show memory at virtual address dialog of the Functions pull-down on the 
  6235. Detail window allows you to display memory at a specified selector:offset for a 
  6236. specified number of bytes. Various formatting options are available: 
  6237.  
  6238.  o bytes 
  6239.  o words 
  6240.  o doublewords 
  6241.  o disassembled instructions 
  6242.  
  6243.  
  6244. ΓòÉΓòÉΓòÉ <hidden> Selector (in hex) of Segment. ΓòÉΓòÉΓòÉ
  6245.  
  6246. This option specifies the selector portion (in hexadecimal) of the virtual 
  6247. address of the memory to be displayed. 
  6248.  
  6249. The default value is the selector portion of the selected hyperblock link, if 
  6250. one is selected. 
  6251.  
  6252.  
  6253. ΓòÉΓòÉΓòÉ <hidden> Offset (in hex) of Segment. ΓòÉΓòÉΓòÉ
  6254.  
  6255. This option specifies the offset portion (in hexadecimal) of the virtual 
  6256. address of the memory to be displayed. 
  6257.  
  6258. The default value is the offset portion of the selected hyperblock link, if one 
  6259. is selected. 
  6260.  
  6261.  
  6262. ΓòÉΓòÉΓòÉ <hidden> Number of bytes (in hex) to display. ΓòÉΓòÉΓòÉ
  6263.  
  6264. This option specifies the number of bytes (in hex) you wish displayed. 
  6265.  
  6266. If a hyperblock link has been selected and the selector is valid, the length 
  6267. will default to the length of the segment. 
  6268.  
  6269. If a hyperblock link has not been selected, the length will default to the 
  6270. "double-click length" for the window. 
  6271.  
  6272.  
  6273. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "bytes". ΓòÉΓòÉΓòÉ
  6274.  
  6275. This option displays the memory as bytes. Each byte is formatted in 
  6276. hexadecimal. 
  6277.  
  6278. Additionally, the memory is formatted in ASCII. Unprintable characters are 
  6279. printed as a period (.). 
  6280.  
  6281.  
  6282. ΓòÉΓòÉΓòÉ <hidden> Show the memory as disassembled instructions. ΓòÉΓòÉΓòÉ
  6283.  
  6284. This option displays the memory as disassembled instructions. 
  6285.  
  6286. The memory is presented: 
  6287.  
  6288.   1. in bytes 
  6289.   2. in ASCII 
  6290.   3. as disassembled instructions. 
  6291.  
  6292.  The default instruction type may be specified with the Code is 32-bit option. 
  6293.  
  6294.  
  6295. ΓòÉΓòÉΓòÉ <hidden> Code is 32-bit. ΓòÉΓòÉΓòÉ
  6296.  
  6297. Select this option if the instructions being disassembled are 32-bit 
  6298. instructions. If this option is not selected, the instructions are assumed to 
  6299. be 16-bit. 
  6300.  
  6301. If a hyperblock link has been selected and the selector is valid, the type will 
  6302. default to the type of the segment. 
  6303.  
  6304.  
  6305. ΓòÉΓòÉΓòÉ 10.3.3. Show memory at physical address... ΓòÉΓòÉΓòÉ
  6306.  
  6307. The Show memory at physical address dialog of the Functions pull-down on the 
  6308. Detail window allows you to display memory at a specified physical address for 
  6309. a specified number of bytes. Various formatting options are available: 
  6310.  
  6311.  o bytes 
  6312.  o words 
  6313.  o doublewords 
  6314.  o disassembled instructions 
  6315.  
  6316.  
  6317. ΓòÉΓòÉΓòÉ <hidden> Address (in hex) of the area to display. ΓòÉΓòÉΓòÉ
  6318.  
  6319. This option specifies the physical address (in hexadecimal) of the memory to be 
  6320. displayed. 
  6321.  
  6322. The default value is the selected hyperblock link, if one is selected. 
  6323.  
  6324.  
  6325. ΓòÉΓòÉΓòÉ 10.3.4. Show selected address formatted ΓòÉΓòÉΓòÉ
  6326.  
  6327. When a hyperblock link address is selected, the memory may be displayed either 
  6328. by double-clicking mouse button 1 or by selecting this option on the menu. The 
  6329. memory is displayed formatted by its control block type, if THESEUS2 knows the 
  6330. format. 
  6331.  
  6332.  
  6333. ΓòÉΓòÉΓòÉ <hidden> Show selected address in hex ΓòÉΓòÉΓòÉ
  6334.  
  6335. When a hyperblock link address is selected, this option displays the memory in 
  6336. hexadecimal. 
  6337.  
  6338.  
  6339. ΓòÉΓòÉΓòÉ <hidden> Describe the selected address ΓòÉΓòÉΓòÉ
  6340.  
  6341. When a hyperblock link address has been selected, this option displays the 
  6342. "description" of the memory represented by the address. 
  6343.  
  6344.  
  6345. ΓòÉΓòÉΓòÉ 10.3.5. Show description... ΓòÉΓòÉΓòÉ
  6346.  
  6347. The Show description of an object option of the Functions pull-down on the 
  6348. Detail window allows you to display the "description" of a memory object. 
  6349.  
  6350. The object address can be specified as being referenced by: 
  6351.  
  6352.  o linear address 
  6353.  o virtual address 
  6354.  o physical address 
  6355.  o hob. 
  6356.  o har 
  6357.  o hal. 
  6358.  
  6359.  
  6360. ΓòÉΓòÉΓòÉ <hidden> Address of object to be described ΓòÉΓòÉΓòÉ
  6361.  
  6362. Specify the address of the object to be "described." It can be: 
  6363.  
  6364.  o linear address 
  6365.  o virtual address 
  6366.  o physical address 
  6367.  o hob. 
  6368.  o har 
  6369.  o hal 
  6370.  
  6371.  
  6372. ΓòÉΓòÉΓòÉ <hidden> Describe a linear object ΓòÉΓòÉΓòÉ
  6373.  
  6374. The address specified is a linear address. 
  6375.  
  6376.  
  6377. ΓòÉΓòÉΓòÉ <hidden> Describe a virtual object ΓòÉΓòÉΓòÉ
  6378.  
  6379. The address specified is a virtual address. Specify the selector of the 
  6380. segment. 
  6381.  
  6382.  
  6383. ΓòÉΓòÉΓòÉ <hidden> Describe a physical object ΓòÉΓòÉΓòÉ
  6384.  
  6385. The address specified is a physical address. 
  6386.  
  6387.  
  6388. ΓòÉΓòÉΓòÉ <hidden> Describe an object, given the HOB ΓòÉΓòÉΓòÉ
  6389.  
  6390. The address specified is a hob. 
  6391.  
  6392.  
  6393. ΓòÉΓòÉΓòÉ <hidden> Describe an object, given the HAR ΓòÉΓòÉΓòÉ
  6394.  
  6395. The address specified is a har. 
  6396.  
  6397.  
  6398. ΓòÉΓòÉΓòÉ <hidden> Describe an object, given the HAL ΓòÉΓòÉΓòÉ
  6399.  
  6400. The address specified is a hal. 
  6401.  
  6402.  
  6403. ΓòÉΓòÉΓòÉ 10.3.6. Show Process Contexts ΓòÉΓòÉΓòÉ
  6404.  
  6405. Select one: 
  6406.  
  6407.  Selecting 
  6408.  
  6409.  Example Output 
  6410.  
  6411.  Contents of Display 
  6412.  
  6413.  Related Topics 
  6414.  
  6415.  
  6416. ΓòÉΓòÉΓòÉ <hidden> Selecting the Show Process Contexts Display ΓòÉΓòÉΓòÉ
  6417.  
  6418. When you select the Show Process Contexts option of the Functions pull-down on 
  6419. a Detail window, information about the state of the memory object in all the 
  6420. processes is shown. 
  6421.  
  6422. This option is available only if you have selected a Hyperblock link linear 
  6423. address. 
  6424.  
  6425.  
  6426. ΓòÉΓòÉΓòÉ <hidden> Example of the Show Process Contexts Display ΓòÉΓòÉΓòÉ
  6427.  
  6428. Process contexts for 0001FCC0:
  6429. This address is in the 'Private Arena'.
  6430.                   VP linear/
  6431.  PID   Process    Physical   State   Description
  6432. 0030   PMX2       00D59000   pur     PMX2     #0001 (shared code)
  6433. 0034   REMMAIN    FF4114FC   vur     REMMAIN  #0001 (shared code)
  6434. 003A   VDM        0148F000   puw     aliased by process VDM
  6435. 0179   THESEUS2   01668000   pur     THESEUS2 #0001 (shared code)
  6436.  
  6437.  
  6438. ΓòÉΓòÉΓòÉ <hidden> Contents of the Show Process Contexts Display ΓòÉΓòÉΓòÉ
  6439.  
  6440. The information presented on the Show Process Contexts display is as follows: 
  6441. (For "System Arena" linear addresses, only the "system" process is shown.) 
  6442.  
  6443.  Column       Meaning 
  6444.  PID          The PID of the process for this line. 
  6445.  Process      The name of the process on this line. 
  6446.  VP linear/Physical Either the Virtual Page Table Entry linear address or the 
  6447.               physical address of the page. Which one is indicated by the 
  6448.               content of the first of the State flags. 
  6449.  State        The state of the page within the context of this process: 
  6450.  
  6451.               Column 1 shows the type of address shown in the previous data: 
  6452.  
  6453.     p  The page is present. The address shown in the physical page address. 
  6454.     v  The page is not present. The address shown in the Virtual Page Table 
  6455.        entry address. 
  6456.     ?  The page is not present and the address is not of a Virtual Page Table 
  6457.        entry. 
  6458.  
  6459.               Column 2 shows the user/system state: 
  6460.  
  6461.     u  The page is a "user" page. 
  6462.     s  The page is a "system" page. 
  6463.  
  6464.               Column 3 shows the read/write state: 
  6465.  
  6466.     r  The page is a "read-only" page. 
  6467.     w  The page is a "read/write" page. 
  6468.  
  6469.        Column 4 shows the detail page state: 
  6470.  
  6471.        uncommitted    The page was uncommitted. 
  6472.        special        The page was a special system page. 
  6473.        allocate on demand The page was an "allocate on demand" page. 
  6474.        claimable      The page was claimable. 
  6475.        idle           The page was idle. 
  6476.        to be loaded   The page was a "to be loaded" page. 
  6477.        present        The page was present. 
  6478.        resident       The page was resident. 
  6479.        swapped        The page was swapped. 
  6480.        UVirt          The page was a UVirt page. 
  6481.  Description  A description in English of the object that the page is a part 
  6482.               of. 
  6483.  
  6484.  
  6485. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  6486.  
  6487.  o Memory addressing 
  6488.  
  6489.  o Memory states 
  6490.  
  6491.  
  6492. ΓòÉΓòÉΓòÉ 10.3.7. Memory Object Leak Detection ΓòÉΓòÉΓòÉ
  6493.  
  6494. Select one: 
  6495.  
  6496.  Selecting 
  6497.  
  6498.  Example Output 
  6499.  
  6500.  Contents of Display 
  6501.  
  6502.  Related Topics 
  6503.  
  6504.  
  6505. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Object Leak Detection Display ΓòÉΓòÉΓòÉ
  6506.  
  6507. When you select the Memory Object Leak Detection option of the Functions 
  6508. pull-down on a Detail window, information about the changes of state of 
  6509. individual pages of the specified memory object are shown. 
  6510.  
  6511. This option is available only if you have selected a Hyperblock link linear 
  6512. address. 
  6513.  
  6514.  
  6515. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Object Leak Detection Display ΓòÉΓòÉΓòÉ
  6516.  
  6517. Leak detection for Process with PID = 067C, name = THESEUS2,
  6518.   memory object linear = 00010000, object has 48 pages:
  6519. < End of THESEUS2 (v 2.0p) output @ 15:57:38 on 5-16-1993 >
  6520. Use the 'Function' pull-down to start and stop the data collection.
  6521. Leak data captured.
  6522. Periodic update started with interval of 10 seconds.
  6523. < End of THESEUS2 (v 2.0p) output @ 15:57:41 on 5-16-1993 >
  6524. address    old state     new state
  6525. 00026000   not-present   present
  6526. < End of THESEUS2 (v 2.0p) output @ 15:57:51 on 5-16-1993 >
  6527.  
  6528. If the Show all page states option is chosen, then the following is produced: 
  6529.  
  6530. old pppppppppppppllllpplpppllllllplllplpplpppppppp
  6531. new pppppppppppppllllpplpppppllllplllplpplpppppppp
  6532. dif .......................AB.....................
  6533. dif address    old state     new state
  6534. A:  00027000   to be loaded  present
  6535. B:  00028000   to be loaded  present
  6536. < End of THESEUS2 (v 2.0p) output @ 15:58:01 on 5-16-1993 >
  6537.  
  6538.  
  6539. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Object Leak Detection Display ΓòÉΓòÉΓòÉ
  6540.  
  6541. The information presented on the Memory Object Leak Detection display is as 
  6542. follows: 
  6543.  
  6544. If the Show all page states option is chosen, then the following information is 
  6545. produced: 
  6546.  
  6547.  old  The states of each page in the memory object in the reference data: 
  6548.  
  6549.     .  The page was uncommitted. 
  6550.     ?  The page was a special system page. 
  6551.     a  The page was an "allocate on demand" page. 
  6552.     c  The page was claimable. 
  6553.     i  The page was idle. 
  6554.     l  The page was a "to be loaded" page. 
  6555.     p  The page was present. 
  6556.     r  The page was resident. 
  6557.     s  The page was swapped. 
  6558.     u  The page was a UVirt page. 
  6559.  new  The states of each page in the memory object in the current data. The 
  6560.       state codes are the same as the old line. 
  6561.  dif  The pages which have different states are marked with a letter: 
  6562.  
  6563.     .  The page state did not change. 
  6564.     A  The page changed state. The letter shown is different for each page 
  6565.        which changed state. The letter is repeated on the appropriate line of 
  6566.        the summary information. 
  6567.  
  6568.  Uncommitted pages at the end of the memory object are not shown, in order to 
  6569.  reduce clutter on the screen. 
  6570.  
  6571.  Summary information is always presented: 
  6572.  
  6573.  Column       Meaning 
  6574.  address      The linear address of the page which has changed state. 
  6575.  old state    The state the page had in the reference data. 
  6576.  
  6577.     uncommitted    The page was uncommitted. 
  6578.     special        The page was a special system page. 
  6579.     allocate on demand The page was an "allocate on demand" page. 
  6580.     claimable      The page was claimable. 
  6581.     idle           The page was idle. 
  6582.     to be loaded   The page was a "to be loaded" page. 
  6583.     present        The page was present. 
  6584.     resident       The page was resident. 
  6585.     swapped        The page was swapped. 
  6586.     UVirt          The page was a UVirt page. 
  6587.  new state    The state the page has in the current data. The states are the 
  6588.               same as the old state column. 
  6589.  
  6590.  
  6591. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  6592.  
  6593.  o Memory addressing 
  6594.  
  6595.  o Memory states 
  6596.  
  6597.  o Leak detection control 
  6598.  
  6599.  o Manual data capture 
  6600.  
  6601.  o Manual data compare 
  6602.  
  6603.  
  6604. ΓòÉΓòÉΓòÉ 10.3.8. Hot Spot Detection... ΓòÉΓòÉΓòÉ
  6605.  
  6606. Select one: 
  6607.  
  6608.  Selecting 
  6609.  
  6610.  Example Output 
  6611.  
  6612.  Contents of Display 
  6613.  
  6614.  Related Topics 
  6615.  
  6616.  
  6617. ΓòÉΓòÉΓòÉ <hidden> Cooling rate ΓòÉΓòÉΓòÉ
  6618.  
  6619. This option specifies the number of data collection intervals between color 
  6620. changes on the display. 
  6621.  
  6622. The default value 2.  The maximum is 9. 
  6623.  
  6624.  
  6625. ΓòÉΓòÉΓòÉ <hidden> Selecting the Hot Spot Detection display ΓòÉΓòÉΓòÉ
  6626.  
  6627. When you select the Hot Spot Detection option of the Functions pull-down on a 
  6628. Detail window, information about which bytes of data within a page are changing 
  6629. is displayed. The parameters on the display are: 
  6630.  
  6631.  Linear address 
  6632.  Cooling rate 
  6633.  
  6634.  The update rate can be changed by using the Options... dialog on the Contents 
  6635.  Update sub-menu of the Misc pull-down. 
  6636.  
  6637.  
  6638. ΓòÉΓòÉΓòÉ <hidden> Example of the Hot Spot Detection display ΓòÉΓòÉΓòÉ
  6639.  
  6640.      ||                 |||
  6641. 000                                    FFF
  6642. Hot Spot detection, linear = 7C7E5000, for process 'system':
  6643. 7C7E5000 (000) 00 00 00 00 00 00 00 00  00 00 00 00 00 00 10 00 *................*
  6644. 7C7E5010 (010) 67 00 00 CC E2 8B 00 FF  FF 03 40 71 E2 93 10 FF *g.........@q....*
  6645. 7C7E5020 (020) FF 03 00 30 E7 93 10 FF  FF FF 00 70 EA 82 00 77 *...0.......p...w*
  6646. ┬╖┬╖┬╖
  6647. 7C7E5FE0 (FE0) FF 0F 00 30 77 92 11 79  FF 0F 00 30 75 92 11 79 *...0w..y...0u..y*
  6648. 7C7E5FF0 (FF0) FF 0F 00 30 73 92 11 79  FF 0F 00 30 71 92 11 79 *...0s..y...0q..y*
  6649.  
  6650.  
  6651. ΓòÉΓòÉΓòÉ <hidden> Contents of the Hot Spot Detection Display ΓòÉΓòÉΓòÉ
  6652.  
  6653. The information presented on the Hot Spot Detection display is as follows: 
  6654.  
  6655.  line 1         The first line contains a graphic representation of which lines 
  6656.                 of data are changing. Each 16 byte line of data is represented 
  6657.                 by a vertical bar which is two pixels wide. The color is 
  6658.                 determined by how long it has been since the value of the byte 
  6659.                 of data changed. The colors are (from "hotest" to "coolest") 
  6660.                 red, orange, yellow, green, and blue. 
  6661.  line2          This line just gives an indication of where bytes 000 and FFF 
  6662.                 are on the graphic line. 
  6663.  remainder      The remainder of the display is just like the Show memory at a 
  6664.                 linear address... display. The bytes which have changed are 
  6665.                 colored in both the hex and character portions of the display. 
  6666.  
  6667.  When you place the mouse pointer on a vertical bar on line 1 and press mouse 
  6668.  button 1, the line of hex for that bar is scrolled to the top of the hex 
  6669.  portion of the display. 
  6670.  
  6671.  
  6672. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  6673.  
  6674.  o Memory addressing 
  6675.  
  6676.  
  6677. ΓòÉΓòÉΓòÉ 10.3.9. Working Set Parameters... ΓòÉΓòÉΓòÉ
  6678.  
  6679. The Working Set Parameters dialog of the Functions pull-down on the Working Set 
  6680. Detail window allows you to specify the data-collection parameters used during 
  6681. working set calculations. The parameters that can be specified are: 
  6682.  
  6683.  o Data collection interval 
  6684.  o Number of intervals in Working Set 
  6685.  o Include 'System' pages 
  6686.  o Show data at each interval 
  6687.  o Save as defaults 
  6688.  o Results presented in. 
  6689.  
  6690.  
  6691. ΓòÉΓòÉΓòÉ <hidden> Number of seconds per sample interval ΓòÉΓòÉΓòÉ
  6692.  
  6693. This option specifies the number of seconds for each working set data 
  6694. collection interval. 
  6695.  
  6696. The default is 5 seconds. The maximum value is 99 seconds. 
  6697.  
  6698. This value is specified in decimal. 
  6699.  
  6700.  
  6701. ΓòÉΓòÉΓòÉ <hidden> Specify the number of intervals for Working Set ΓòÉΓòÉΓòÉ
  6702.  
  6703. This option specifies the number of intervals (n) that constitute the working 
  6704. set. If a page has been accessed within the last n intervals, then it is 
  6705. considered to be within the working set. 
  6706.  
  6707. The default is 12 intervals (times the default interval of 5 seconds = 60 
  6708. seconds). 
  6709.  
  6710. This value is specified in decimal. 
  6711.  
  6712. This value can be changed while the data collection is running. 
  6713.  
  6714.  
  6715. ΓòÉΓòÉΓòÉ <hidden> Include 'System' pages ΓòÉΓòÉΓòÉ
  6716.  
  6717. If this option is selected, the system arena is included in the calculations. 
  6718.  
  6719. CAUTION:
  6720. This option is not recommended. Many system pages are referenced by THESEUS2 
  6721. while it is doing the data collection and reduction, and it is impossible to 
  6722. differentiate between them and the ones referenced by the application of 
  6723. interest, so this tends to confuse the actual answers. 
  6724.  
  6725.  
  6726. ΓòÉΓòÉΓòÉ <hidden> Show data at each interval ΓòÉΓòÉΓòÉ
  6727.  
  6728. This option displays the results each interval. 
  6729.  
  6730. The changes in the working set during the running of a scenario are usually 
  6731. more interesting than the summary results. 
  6732.  
  6733. This option can be changed while the data collection is occurring. 
  6734.  
  6735.  
  6736. ΓòÉΓòÉΓòÉ <hidden> Save as defaults ΓòÉΓòÉΓòÉ
  6737.  
  6738. When this option is selected, the input values become the defaults for the 
  6739. working set parameters on subsequent creations of the working set window. 
  6740.  
  6741.  
  6742. ΓòÉΓòÉΓòÉ <hidden> Results presented in: ΓòÉΓòÉΓòÉ
  6743.  
  6744. The results can be presented in either: 
  6745.  
  6746.  o Pages 
  6747.  o Kilobytes 
  6748.  o Megabytes 
  6749.  
  6750.  
  6751. ΓòÉΓòÉΓòÉ <hidden> Pages ΓòÉΓòÉΓòÉ
  6752.  
  6753. This option presents the results as the number of pages of memory used. 
  6754.  
  6755.  
  6756. ΓòÉΓòÉΓòÉ <hidden> Kilobytes ΓòÉΓòÉΓòÉ
  6757.  
  6758. This option presents the results as the number of kilobytes of memory used. 
  6759.  
  6760.  
  6761. ΓòÉΓòÉΓòÉ <hidden> Megabytes ΓòÉΓòÉΓòÉ
  6762.  
  6763. This option presents the results as the number of megabytes of memory used. 
  6764.  
  6765.  
  6766. ΓòÉΓòÉΓòÉ 10.3.10. Working Set Start ΓòÉΓòÉΓòÉ
  6767.  
  6768. This option starts collecting the information required to determine memory 
  6769. working set. 
  6770.  
  6771.  
  6772. ΓòÉΓòÉΓòÉ 10.3.11. Working Set Stop ΓòÉΓòÉΓòÉ
  6773.  
  6774. This option stops collecting the information required to determine memory 
  6775. working set. A final data-collection cycle occurs before the results are 
  6776. analyzed and displayed. 
  6777.  
  6778.  
  6779. ΓòÉΓòÉΓòÉ <hidden> Detail of Working Set (by Page) ΓòÉΓòÉΓòÉ
  6780.  
  6781. Select one: 
  6782.  
  6783.  Selecting 
  6784.  
  6785.  Example Output 
  6786.  
  6787.  Contents of Display 
  6788.  
  6789.  Related Topics 
  6790.  
  6791.  
  6792. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail of Working Set (by Page) display ΓòÉΓòÉΓòÉ
  6793.  
  6794. When you select the Show detail by Page option of the Functions pull-down on 
  6795. the Working Set Detail window, detail information about the working set is 
  6796. shown. Specifically, the pages referenced since the working set sampling began 
  6797. are shown. 
  6798.  
  6799.  
  6800. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail of Working Set (by Page) Display ΓòÉΓòÉΓòÉ
  6801.  
  6802. Working Set detail for the Process with PID = 000E, name = 'THESEUS2':
  6803. Physical   hob  Time  State   Type     Description
  6804. 00060000  0382     1  A       DLL      SYSMONO  #0004 (shared)
  6805. 00068000  0383     1  A       Private  THESEUS2 allocated it
  6806. 0006C000  0362     1  A       Private  THESEUS2 #0001 (shared)
  6807. ┬╖┬╖┬╖
  6808. 00DCA000  00B3     1  A       DLL      DOSCALL1 #0005 (shared)
  6809. 00DE4000  031E     1  A       DLL      PMGRE    allocated it
  6810.  
  6811.   142 pages were marked 'A' (Accessed).
  6812.    17 pages were marked 'L' (Locked).
  6813.     0 pages were marked 'R' (Resident).
  6814. There were a total of 145 pages reported.
  6815.  
  6816.  
  6817. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail of Working Set (by Page) display ΓòÉΓòÉΓòÉ
  6818.  
  6819. One line is displayed for each page in the working set: 
  6820.  
  6821.  Column        Meaning 
  6822.  Physical      The physical address of the page. 
  6823.  hob           The hob of the memory object that this page is a part of. 
  6824.  Time          Number of time intervals (in decimal) since the page was 
  6825.                referenced. A value of 1 indicates that the page was touched in 
  6826.                the last interval before data capturing was stopped. A value of 
  6827.                2 indicates that the page was touched in the next-to-last 
  6828.                interval before data capturing was stopped. 
  6829.  State         The state of this page: 
  6830.  
  6831.     A  The page has been accessed during the run. 
  6832.     L  The page is locked. 
  6833.     R  The page is resident. 
  6834.     F  The page is now free. 
  6835.     I  The page is idle 
  6836.     B  The page has a "bad hob" The hob value is too large to be able to access 
  6837.        the Object Record in the Object Table. 
  6838.  Type          (This is only on the display if it was generated from a Working 
  6839.                Set for a Process display.) The type of object that this page is 
  6840.                a part of. The values are: 
  6841.  
  6842.     System         The page is from the system arena. 
  6843.     Private        The page is from the private arena, is an instance object 
  6844.                    from a system DLL, or is an object from a DLL which is not a 
  6845.                    system DLL. 
  6846.     DLL            The page is from the shared arena and is for a system DLL. 
  6847.                    The system DLLs are those that are part of the system and 
  6848.                    are not considered to be part of the application. 
  6849.     Ignore         The page is not accessible from the specified process and is 
  6850.                    ignored. (This is a DLL page which is mapped from the system 
  6851.                    wide section of the Page Directory.) 
  6852.     Error          An error has occurred while processing the page. The hob may 
  6853.                    be out of range. The page was assigned to the system. 
  6854.  Description   A description in English of the object that the page is a part 
  6855.                of. 
  6856.  
  6857.  A summary of the number of pages in each page State is given. Then the total 
  6858.  number of pages reported is given. (Since a page may be in multiple states, 
  6859.  the total of the pages in each state is probably not the same as the total 
  6860.  reported.) 
  6861.  
  6862.  
  6863. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  6864.  
  6865.  o Memory analysis 
  6866.  
  6867.  o Memory addressing 
  6868.  
  6869.  o System Working Set 
  6870.  
  6871.  
  6872. ΓòÉΓòÉΓòÉ <hidden> Detail of Working Set (by Object) ΓòÉΓòÉΓòÉ
  6873.  
  6874. Select one: 
  6875.  
  6876.  Selecting 
  6877.  
  6878.  Example Output 
  6879.  
  6880.  Contents of Display 
  6881.  
  6882.  Related Topics 
  6883.  
  6884.  
  6885. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail of Working Set (by Object) display ΓòÉΓòÉΓòÉ
  6886.  
  6887. When you select the Show detail by Object option of the Functions pull-down on 
  6888. the Working Set Detail window, detail information about the working set is 
  6889. shown. Specifically, all the memory objects from the private arena are shown, 
  6890. along with ones from the shared and system arenas that have had pages 
  6891. referenced since the run began. 
  6892.  
  6893.  
  6894. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail of Working Set (by Object) Display ΓòÉΓòÉΓòÉ
  6895.  
  6896. Working Set detail for the Process with PID = 0060, name = 'THESEUS2':
  6897. Objects from the 'private' arena:
  6898.                  ---accessed---     pages in   avg.
  6899.   linear   hob      no      yes  working set   time  Description
  6900. 00010000  04CF      32       18           18    1.1  THESEUS2 #0001 (shared code)
  6901. 00050000  047C      21        8            8    1    THESEUS2 #0002 (private)
  6902. 00070000  0475       1        0            0          User Environment (hmte)
  6903. ┬╖┬╖┬╖
  6904. 01C80000  048F       1        0            0          THESEUS2 allocated it
  6905.                     92       44           44    1.0  Total
  6906.  
  6907. Objects from the 'shared' arena:
  6908.                  ---accessed---     pages in   avg.
  6909.   linear   hob      no      yes  working set   time  Description
  6910. 16350000  04DF       0        1            1    1    THESEUS2 allocated it
  6911. 163E0000  04BB       1        1            1    1    SYSMONO  #0004 (shared data)
  6912. 16420000  04AE       0        1            1    1    PMGRE    allocated it
  6913. ┬╖┬╖┬╖
  6914. 1BFF0000  0074       0        1            1    1    infoseg (local or global) (owner)
  6915.                   1052      254          254    1.0  Total
  6916.  
  6917. Objects from the 'system' arena:
  6918.                  ---accessed---     pages in   avg.
  6919.   linear   hob      no      yes  working set   time  Description
  6920. 7DC00000  002A       5       13           13    1    PG Compat. region page table (owner)
  6921.                      5       13           13    1.0  Total
  6922.  
  6923.  
  6924. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail of Working Set (by Object) Display ΓòÉΓòÉΓòÉ
  6925.  
  6926. One line is displayed for each object: 
  6927.  
  6928.  Column            Meaning 
  6929.  linear            The linear address of the memory object. 
  6930.  hob               The hob of the memory object. 
  6931.  accessed - no     The number of pages that are committed in the object that 
  6932.                    were not accessed since the start of the run. 
  6933.  accessed - yes    The number of pages that are committed in the object that 
  6934.                    were accessed since the start of the run. 
  6935.  pages in working set The number of pages that were in the working set. 
  6936.  avg. time         The average number of intervals since the pages were 
  6937.                    accessed. If all the pages were accessed at the same time, 
  6938.                    the time is output without a decimal point. 
  6939.  Description       A description in English of the object. 
  6940.  
  6941.  The totals for each arena is shown at the end of the arena's output. 
  6942.  
  6943.  
  6944. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  6945.  
  6946.  o Memory analysis 
  6947.  
  6948.  o Memory addressing 
  6949.  
  6950.  o System Working Set 
  6951.  
  6952.  o Summary by Process 
  6953.  
  6954.  
  6955. ΓòÉΓòÉΓòÉ 10.3.12. Show detail by Page ΓòÉΓòÉΓòÉ
  6956.  
  6957. Which display is presented depends on the Detail window from which this option 
  6958. is selected: 
  6959.  
  6960.  Working Set window 
  6961.  Swapper window 
  6962.  
  6963.  
  6964. ΓòÉΓòÉΓòÉ 10.3.13. Show detail by Object ΓòÉΓòÉΓòÉ
  6965.  
  6966. Which display is presented depends on the Detail window from which this option 
  6967. is selected: 
  6968.  
  6969.  Working Set window 
  6970.  
  6971.  
  6972. ΓòÉΓòÉΓòÉ 10.3.14. Summary by Process ΓòÉΓòÉΓòÉ
  6973.  
  6974. Select one: 
  6975.  
  6976.  Selecting 
  6977.  
  6978.  Example Output 
  6979.  
  6980.  Contents of Display 
  6981.  
  6982.  Related Topics 
  6983.  
  6984.  
  6985. ΓòÉΓòÉΓòÉ <hidden> Selecting the Summary by Process display ΓòÉΓòÉΓòÉ
  6986.  
  6987. When you select the Show summary by process option of the Functions pull-down 
  6988. on the System Working Set Detail window, summary information about the working 
  6989. set is shown. Specifically, the amount of memory, both private and shared, used 
  6990. by each process is shown, along with the amount used from the system and shared 
  6991. arenas. 
  6992.  
  6993.  
  6994. ΓòÉΓòÉΓòÉ <hidden> Example of the Summary by Process Display ΓòÉΓòÉΓòÉ
  6995.  
  6996. Working Set summary for the System (by Process):
  6997. -------- Private --------- ---------- Shared ---------
  6998. - Accessed - Working  Avg. - Accessed - Working  Avg.
  6999.     No    Yes    set  time     No    Yes    set  time  PID Process name
  7000.      0      2      2   1.0      0      0      0       0002 LOGDAEM
  7001.     21      8      8   1.3      0      4      4   1.5 0004 PMSHL32
  7002.      4      2      2   2.0      0      0      0       0006 SPMSNAPL
  7003.     41     37     37   1.5      0      0      0       0009 VDM
  7004.     50     10     10   1.0      0      0      0       000A SPM
  7005.     32     43     43   1.9      1      6      6   2.0 000C SPMMON
  7006.    103     19     19   1.6      0      0      0       000D SPMILOG
  7007.     81     20     20   2.0      0      0      0       000E SPMDCF
  7008.      9     23     23   1.2      0      3      3   2.0 001F IPFCPREP
  7009.     57     41     41   1.3      0      3      3   1.0 0020 THESEUS2
  7010.    268   1370   1370   1.0   1071    292    292   1.7      System
  7011. ------ ------ ------       ------ ------ ------
  7012.    666   1575   1575         1072    308    308            Totals
  7013.             2      2   Free RAM
  7014. ------ ------ ------
  7015.   1738   1885   1885   Pvt + Shr + Free
  7016.  
  7017.  
  7018. ΓòÉΓòÉΓòÉ <hidden> Contents of the Summary by Process Display ΓòÉΓòÉΓòÉ
  7019.  
  7020. One line is displayed for each process: 
  7021.  
  7022.  Column            Meaning 
  7023.  Private           Memory from the private arena. For the System line, this is 
  7024.                    memory from the system arena. 
  7025.  Shared            Instance data from the shared arena. For the System line, 
  7026.                    this is shared memory from the shared arena. 
  7027.  Accessed - No     The number of pages that are committed in the objects for 
  7028.                    this process that were not accessed since the start of the 
  7029.                    run. 
  7030.  Accessed - Yes    The number of pages that are committed in the objects for 
  7031.                    this process that were accessed since the start of the run. 
  7032.  Working set       The number of pages that were in the working set. 
  7033.  Avg. time         The average number of intervals since the pages were 
  7034.                    accessed. 
  7035.  PID               The PID of the process for this line. 
  7036.  Process name      The name of the process on this line. 
  7037.  
  7038.  Totals for each column are generated and shown. 
  7039.  
  7040.  The line labeled Free RAM is memory that has been accessed during the run, but 
  7041.  is currently marked Free. 
  7042.  
  7043.  The line labeled Pvt + Shr + Free is a total of all the data. 
  7044.  
  7045.  
  7046. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7047.  
  7048.  o Memory analysis 
  7049.  
  7050.  o Memory addressing 
  7051.  
  7052.  o System Working Set 
  7053.  
  7054.  o Detail by Object 
  7055.  
  7056.  
  7057. ΓòÉΓòÉΓòÉ <hidden> Detail of SWAPPER.DAT (by Page) ΓòÉΓòÉΓòÉ
  7058.  
  7059. Select one: 
  7060.  
  7061.  Selecting 
  7062.  
  7063.  Example Output 
  7064.  
  7065.  Contents of Display 
  7066.  
  7067.  Related Topics 
  7068.  
  7069.  
  7070. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail of SWAPPER.DAT (by Page) display ΓòÉΓòÉΓòÉ
  7071.  
  7072. When you select the Show detail by Page option of the Functions pull-down on 
  7073. the SWAPPER.DAT Analysis Detail window, detail information about the make up of 
  7074. the SWAPPER.DAT file will be shown. Specifically, the pages that have been 
  7075. paged out are shown. 
  7076.  
  7077.  
  7078. ΓòÉΓòÉΓòÉ <hidden> Example of the SWAPPER.DAT contents (by page) Display ΓòÉΓòÉΓòÉ
  7079.  
  7080. SWAPPER.DAT contents by page:
  7081. frame        vp   hob    linear  Process  Description
  7082.  0000  FF4132EE  01C1  00030000     01BB  HARDERR  #0003 (private)
  7083.  0001  FF417966  039F  000C1000     0379  PMD      #000C (private)
  7084. ┬╖┬╖┬╖
  7085.  0020  FF41916C  03DE  00047000     03D4  THESEUS2 #0002 (private)
  7086.  0021 free
  7087.  0022  FF419194  03DE  0004B000     03D4  THESEUS2 #0002 (private)
  7088. ┬╖┬╖┬╖
  7089.  003B  FF419720  0421  18523000   shared  THESEUSR #0003 (shared)
  7090.  003C to 003F (4 frames) are free
  7091.  0040  FF40E7EE  0016  FFFB0000   system  os2krnl load image (owner)
  7092. ┬╖┬╖┬╖
  7093.  0229  FF412146  017C  19F40000 inst0114  OS2CHAR  #0000 (private)
  7094.  
  7095.  
  7096. ΓòÉΓòÉΓòÉ <hidden> Contents of the SWAPPER.DAT contents (by page) display ΓòÉΓòÉΓòÉ
  7097.  
  7098. One line is displayed for each frame in the SWAPPER.DAT file: 
  7099.  
  7100.  Column         Meaning 
  7101.  frame          Disk frame number.  Each frame is 4KB. 
  7102.  vp             The linear address of the Virtual Page Table entry for this 
  7103.                 page. 
  7104.  hob            The hob of the page. 
  7105.  linear         The linear address of the page. 
  7106.  Process        The content of this column is dependent on the type of page: 
  7107.  
  7108.     hob            This is a page from a private arena. The value is the hob of 
  7109.                    the PTDA of the process that owns the page. 
  7110.     shared         This is a shared page from the shared arena. 
  7111.     insthob        This is an instance data page from the shared arena. The hob 
  7112.                    is for the PTDA of the process. 
  7113.     system         This is a page from the system arena. 
  7114.  Description    A description in English of the object. 
  7115.  
  7116.  Frames that are not in use have "free" after the frame number. If there are 
  7117.  multiple free frames together, only one line is shown with the starting and 
  7118.  ending frame numbers. The number of frames is also shown. 
  7119.  
  7120.  
  7121. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7122.  
  7123.  o Memory analysis 
  7124.  
  7125.  o Memory addressing 
  7126.  
  7127.  
  7128. ΓòÉΓòÉΓòÉ 10.3.15. Leak Detection Control... ΓòÉΓòÉΓòÉ
  7129.  
  7130. The Leak Detection Control dialog of the Functions pull-down on the Memory Leak 
  7131. Detection Detail window allows you to control the characteristics of the leak 
  7132. detection that is taking place. The parameters that can be specified are: 
  7133.  
  7134.  o Use previous sample as base. 
  7135.  o Show data from next collection cycle. 
  7136.  o Show all pages states. 
  7137.  
  7138.  
  7139. ΓòÉΓòÉΓòÉ <hidden> Use previous sample as base ΓòÉΓòÉΓòÉ
  7140.  
  7141. When this option is selected, each periodic update will use the data collected 
  7142. on the previous cycle as the base data against which the comparison is done. 
  7143.  
  7144. When this option is not selected, the reference data comes from: 
  7145.  
  7146.  o The data collected when Start Periodic Leak Detection was selected. 
  7147.  o The data collected when Capture Leak Reference Data was selected. 
  7148.  
  7149.  
  7150. ΓòÉΓòÉΓòÉ <hidden> Show data from next collection cycle ΓòÉΓòÉΓòÉ
  7151.  
  7152. When this option is selected, all the data collected is displayed, as well as 
  7153. any differences. 
  7154.  
  7155. When this option is not selected, only the differences are shown. 
  7156.  
  7157.  
  7158. ΓòÉΓòÉΓòÉ <hidden> Show all pages states ΓòÉΓòÉΓòÉ
  7159.  
  7160. When this option is selected, the state of every page in the object is shown. 
  7161. The previous state, the new state and differences are shown on three separate 
  7162. lines.  There 128 page states shown on each group of three lines. 
  7163.  
  7164. When this option is not selected, only the page differences are shown. 
  7165.  
  7166.  
  7167. ΓòÉΓòÉΓòÉ 10.3.16. Start Periodic Leak Detection ΓòÉΓòÉΓòÉ
  7168.  
  7169. This option starts a periodic update of the Memory Leak Detection window. The 
  7170. Options dialog of the Contents Update sub-menu of the Misc pull-down can be 
  7171. used to select the update interval and window update characteristics. 
  7172.  
  7173.  
  7174. ΓòÉΓòÉΓòÉ 10.3.17. Stop Periodic Leak Detection ΓòÉΓòÉΓòÉ
  7175.  
  7176. This option stops the periodic update of the Memory Leak Detection window. 
  7177.  
  7178.  
  7179. ΓòÉΓòÉΓòÉ 10.3.18. Capture Leak Reference Data ΓòÉΓòÉΓòÉ
  7180.  
  7181. This option causes memory leak detection data to be captured. It can be used 
  7182. for a later Compare Present Leak Data to generate memory leak detection data. 
  7183.  
  7184. This option can be used at any time, even when periodic updates are being done. 
  7185. This data then becomes the reference data for the next update cycle. 
  7186.  
  7187.  
  7188. ΓòÉΓòÉΓòÉ 10.3.19. Compare Present Leak Data ΓòÉΓòÉΓòÉ
  7189.  
  7190. This option causes memory leak detection data to be generated. 
  7191.  
  7192. This option can be used at any time, even when periodic updates are being done. 
  7193.  
  7194.  
  7195. ΓòÉΓòÉΓòÉ 10.4. Secondary ΓòÉΓòÉΓòÉ
  7196.  
  7197. The Secondary pull-down includes options that show the working set of the 
  7198. linear pages, as opposed to the physical pages. 
  7199.  
  7200. Functions available are: 
  7201.  
  7202.  Usage Type Display 
  7203.            Shows the working set of the linear pages, broken down by "usage 
  7204.            type". 
  7205.  Last Referenced Graphic 
  7206.            Shows the working set of the linear pages as a "color strip" 
  7207.            display, graphically showing the time since last refernce of a page. 
  7208.  
  7209.  
  7210. ΓòÉΓòÉΓòÉ 10.4.1. Usage Type Display ΓòÉΓòÉΓòÉ
  7211.  
  7212. Select one: 
  7213.  
  7214.  Selecting 
  7215.  
  7216.  Example Output 
  7217.  
  7218.  Contents of Display 
  7219.  
  7220.  Related Topics 
  7221.  
  7222.  
  7223. ΓòÉΓòÉΓòÉ <hidden> Selecting the Usage Type Display ΓòÉΓòÉΓòÉ
  7224.  
  7225. When you select the Usage Type Display from the Secondary column of the Process 
  7226. Working Set display, information about the working set is shown, broken down by 
  7227. "usage type". 
  7228.  
  7229. The different "usage types" are: code, data, stack and allocated. 
  7230.  
  7231. The results are presented in the same units as the parent display. 
  7232.  
  7233.  
  7234. ΓòÉΓòÉΓòÉ <hidden> Example of the Usage Type Display ΓòÉΓòÉΓòÉ
  7235.  
  7236. Working Set by Usage Type for the Process with PID = 00AA, name = 'THESEUS2':
  7237.     time  -- code --  -- data --  - stack --   allocated  - total --
  7238. hh:mm:ss   now    ws   now    ws   now    ws   now    ws   now    ws
  7239. 10:37:47   105   105    47    47     1     1    97    97   250   250
  7240. 10:37:52    98   117    47    49     1     1   132   142   278   309
  7241. 10:37:57    99   117    47    49     1     1   136   142   283   309
  7242. 10:38:02    89   117    43    49     1     1   129   142   262   309
  7243.  
  7244.  
  7245. ΓòÉΓòÉΓòÉ <hidden> Contents of the Usage Type Display ΓòÉΓòÉΓòÉ
  7246.  
  7247. The information presented on the Usage Type display is as follows: 
  7248.  One line is displayed for each time interval: 
  7249.  
  7250.  Column          Meaning 
  7251.  time            Time of the sample in hours:minutes:seconds. 
  7252.  code            Memory objects which are the executable portions of modules. 
  7253.  data            Memory objects which are the data portions of modules. 
  7254.  stack           Memory objects which are marked as "stack" in their memory 
  7255.                  control blocks. 
  7256.  allocated       Memory objects which are marked as "api allocated" in their 
  7257.                  memory control blocks. 
  7258.  total           Total for the previous columns 
  7259.  now             The amount of memory referenced in the previous time interval 
  7260.                  for the applicable memory type. 
  7261.  ws              The amount of memory in the working set for the applicable 
  7262.                  memory type. 
  7263.  
  7264.  Note:  The total from this display will be different that the total of the 
  7265.  parent display because the Page Table pages are not included on this display 
  7266.  and they are on the parent. 
  7267.  
  7268.  
  7269. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7270.  
  7271.  o Memory addressing 
  7272.  
  7273.  o Process Working Set 
  7274.  
  7275.  o Last Referenced Graphic 
  7276.  
  7277.  
  7278. ΓòÉΓòÉΓòÉ 10.4.2. Last Referenced Graphic ΓòÉΓòÉΓòÉ
  7279.  
  7280. Select one: 
  7281.  
  7282.  Selecting 
  7283.  
  7284.  Using the Display 
  7285.  
  7286.  Example Output 
  7287.  
  7288.  Contents of Display 
  7289.  
  7290.  Related Topics 
  7291.  
  7292.  
  7293. ΓòÉΓòÉΓòÉ <hidden> Selecting the Last Referenced Graphic Display ΓòÉΓòÉΓòÉ
  7294.  
  7295. When you select the Last Referenced Graphic from the Secondary column of the 
  7296. Process Working Set display, information about the working set of the process 
  7297. is displayed in a graphic representation. The linear address space is shown as 
  7298. two strips of color bars. The time since last reference is shown as a color (or 
  7299. bar height on monochrome display). 
  7300.  
  7301.  
  7302. ΓòÉΓòÉΓòÉ <hidden> Using the Last Referenced Graphic Display ΓòÉΓòÉΓòÉ
  7303.  
  7304. The pointer assumes different shapes as it is moved through the different zones 
  7305. of the display: 
  7306.  
  7307.  o When in one of the color strips, it will be an x, with the "hot spot" being 
  7308.    at the center of the x. (The x has a vertical line through it which will 
  7309.    "disappear" when you have aligned the "hot spot" exactly with a bar.) 
  7310.  o When in the zoom control area, it will be a +. When you press mouse 
  7311.    button 1, small arrows will be added to the + to indicate which end of which 
  7312.    zoom control line is being moved. 
  7313.  
  7314.  If you press mouse button 1 while the pointer is over one of the color strips, 
  7315.  the address associated with that bar (horizontal position in the strip) will 
  7316.  be show. If you are in the summary strip (line C in the example), the address 
  7317.  will be shown above the strip (line B of the example). If you are in the 
  7318.  zoomed strip (line E in the example), the address will be shown below the 
  7319.  strip (line F of the example) and an English description of the memory object 
  7320.  will be shown on line G. 
  7321.  
  7322.  If you double click mouse button 1, a list of memory objects around the bar 
  7323.  selected will be shown. 
  7324.  
  7325.  If you double click mouse button 2, a description of the memory object will be 
  7326.  shown. 
  7327.  
  7328.  
  7329. ΓòÉΓòÉΓòÉ <hidden> Example of the Last Referenced Graphic Display ΓòÉΓòÉΓòÉ
  7330.  
  7331.  
  7332. ΓòÉΓòÉΓòÉ <hidden> Contents of the Last Referenced Graphic Display ΓòÉΓòÉΓòÉ
  7333.  
  7334. The information presented on the Last Referenced Graphic display is as follows: 
  7335.  
  7336.  Line  Meaning 
  7337.  A     The high and low values of the linear address space available to user 
  7338.        processes is shown. 
  7339.  
  7340.        For color displays, a set of boxes showing the "color temeratures" is 
  7341.        also shown. The "hottest" color (red) is on the left and the "coolest" 
  7342.        color (blue) is on the right. 
  7343.  
  7344.        If a bar from line C has been selected by mouse button one, its address 
  7345.        will be shown in the center of this line. 
  7346.  B     A set of "tick marks" showing the 64M points of the address space. For 
  7347.        OS/2 Warp and later, the part of the address space that has common page 
  7348.        tables (the area between 320M and 512M) has a line through the ticks, to 
  7349.        remind you that there is something different about it. (Remember that it 
  7350.        cannot be determined which process referenced a page in this area.) 
  7351.  C     A summary of the working set across the entire 512M address space. Each 
  7352.        bar represents the "average temperature" of the active pages within each 
  7353.        1M region. 
  7354.  D     The zoom control lines. You can control the zoomed area (line E) by 
  7355.        grabbing an end of either of the zoom control lines and moving it to the 
  7356.        desired place and then dropping it. 
  7357.  E     The zoomed area. This is a variable sized and positioned area which 
  7358.        shows more detail about the portion of the address space which is 
  7359.        selected. If a bar has been selected by mouse button 1, the extent of 
  7360.        the memory object is shown by a gray rectangle. 
  7361.  F     The low and high address (in hexadecimal) of the portion of the address 
  7362.        space shown on line E. If a bar from line E has been selected by mouse 
  7363.        button one, its address will be shown in the center of this line. 
  7364.  G     A description in English of the object selected from line E. 
  7365.  
  7366.  The "temperature" of a page is computed by how long it has been since the page 
  7367.  was last referenced. The page is lowered by one temperature color for each two 
  7368.  intervals since it was referenced. 
  7369.  
  7370.  On systems with monochrome displays, the bars are different lengths instead of 
  7371.  different colors. They will start off long and as the page "cools", they get 
  7372.  shorter. 
  7373.  
  7374.  
  7375. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7376.  
  7377.  o Memory addressing 
  7378.  
  7379.  o Process Working Set 
  7380.  
  7381.  o Usage Type Display 
  7382.  
  7383.  
  7384. ΓòÉΓòÉΓòÉ 10.5. Output ΓòÉΓòÉΓòÉ
  7385.  
  7386. The Output pull-down includes options that allow saving or printing the current 
  7387. display. 
  7388.  
  7389. Functions available are: 
  7390.  
  7391.  Save as... 
  7392.            Allows saving the display to a file. 
  7393.  Print all 
  7394.            Allows printing the display. 
  7395.  
  7396.  
  7397. ΓòÉΓòÉΓòÉ 10.5.1. Save as... ΓòÉΓòÉΓòÉ
  7398.  
  7399. The Save as dialog of the Output pull-down on the Detail window allows you to 
  7400. save the contents of the window to a file. 
  7401.  
  7402. To make your selections, either: 
  7403.  
  7404.  o Use the mouse to point to the disk, directory, or file name 
  7405.  o Use the tab key to move between the lists and the up/down arrow keys to move 
  7406.    within the list. 
  7407.  
  7408.  
  7409. ΓòÉΓòÉΓòÉ <hidden> Filename: ΓòÉΓòÉΓòÉ
  7410.  
  7411. Use this option to specify a file name. If you do not specify a fully qualified 
  7412. file name, it is qualified with the "Current Directory" displayed above it. 
  7413.  
  7414. Note:  The name is converted to upper case before using. 
  7415.  
  7416.  
  7417. ΓòÉΓòÉΓòÉ <hidden> Directories ΓòÉΓòÉΓòÉ
  7418.  
  7419. This field displays the list of disks and directories available for selection. 
  7420. Select one by either: 
  7421.  
  7422.  o Double-clicking mouse button 1 
  7423.  o Moving the cursor (using the up/down arrow keys) and then pressing the Enter 
  7424.    key. 
  7425.  The file or directory names are retrieved and displayed. 
  7426.  
  7427.  
  7428. ΓòÉΓòÉΓòÉ <hidden> Files ΓòÉΓòÉΓòÉ
  7429.  
  7430. This field displays the list of files in the selected directory. Select one by 
  7431. single-clicking mouse button 1. 
  7432.  
  7433. Double-clicking mouse button 1 is equivalent to selecting the file name and 
  7434. pressing the "Save" key. 
  7435.  
  7436.  
  7437. ΓòÉΓòÉΓòÉ <hidden> Save ΓòÉΓòÉΓòÉ
  7438.  
  7439. When you press the Save button, the window is saved to the specified file. 
  7440.  
  7441.  
  7442. ΓòÉΓòÉΓòÉ 10.5.2. Print all ΓòÉΓòÉΓòÉ
  7443.  
  7444. The Print all option of the Output pull-down on the Detail window allows you to 
  7445. print the contents of the window. 
  7446.  
  7447. The output goes to the printer identified as PRN. 
  7448.  
  7449. If the longest line is more than 80 characters, then a "go to condensed mode" 
  7450. command (hex 15) is the first character output to the printer. Likewise, a "go 
  7451. to normal mode" command (hex 18) is the last character output to the printer. 
  7452.  
  7453.  
  7454. ΓòÉΓòÉΓòÉ 10.6. Mark/Find ΓòÉΓòÉΓòÉ
  7455.  
  7456. The Mark/Find pull-down includes options that allow text scans of the display 
  7457. window and clipboard operations. 
  7458.  
  7459. Functions available are: 
  7460.  
  7461.  Find... 
  7462.            Allows finding a specified ASCII string on the display. 
  7463.  Find again 
  7464.            Repeats the previous find operation, starting with the current 
  7465.            cursor location. 
  7466.  Mark an area 
  7467.            Marks an area for storing into the clipboard or printing. 
  7468.  Copy selection to clipboard 
  7469.            Copies the current marked area into the clipboard. 
  7470.  Print selection 
  7471.            Prints only the current marked area. 
  7472.  
  7473.  
  7474. ΓòÉΓòÉΓòÉ 10.6.1. Find... ΓòÉΓòÉΓòÉ
  7475.  
  7476. The Find dialog of the Mark/Find pull-down on the Detail window allows you to 
  7477. find a specified ASCII text string in the information displayed in the window. 
  7478.  
  7479. There is one entry field on the dialog: 
  7480.  
  7481.  Specify the text to be found: 
  7482.            Specify the text you wish to search for. 
  7483.  
  7484.  There are two options on the dialog: 
  7485.  
  7486.  Case sensitive? 
  7487.            Specify case sensitivity of the search. 
  7488.  Move pointer onto found text? 
  7489.            Specify if the pointer is to be moved. 
  7490.  
  7491.  
  7492. ΓòÉΓòÉΓòÉ <hidden> Specify the text to be found: ΓòÉΓòÉΓòÉ
  7493.  
  7494. Specify the text which you wish to search for. The text must all be on one line 
  7495. in the window. There are no "wild card" nor "don't care" characters. 
  7496.  
  7497.  
  7498. ΓòÉΓòÉΓòÉ <hidden> Case sensitive? ΓòÉΓòÉΓòÉ
  7499.  
  7500. If this check box is selected, the text is searched using the supplied case. 
  7501.  
  7502. If this check box is not selected, the text is searched without regard to the 
  7503. case in both the supplied text and the window text. 
  7504.  
  7505.  
  7506. ΓòÉΓòÉΓòÉ <hidden> Move pointer onto found text? ΓòÉΓòÉΓòÉ
  7507.  
  7508. If this check box is selected, the pointer is moved to the center of the text 
  7509. which is found. 
  7510.  
  7511. If this check box is not selected, the pointer is not moved. 
  7512.  
  7513.  
  7514. ΓòÉΓòÉΓòÉ 10.6.2. Find again ΓòÉΓòÉΓòÉ
  7515.  
  7516. The Find again option of the Mark/Find pull-down on the Detail window allows 
  7517. you to continue the ASCII text scan previously started. 
  7518.  
  7519. The text scan continues from the current cursor location. 
  7520.  
  7521.  
  7522. ΓòÉΓòÉΓòÉ 10.6.3. Mark an area ΓòÉΓòÉΓòÉ
  7523.  
  7524. The Mark an area option of the Mark/Find pull-down on the Detail window allows 
  7525. you to mark a rectangle, which can then be copied into the clipboard or 
  7526. printed. 
  7527.  
  7528. The current status of this mode is denoted by a check mark on the pull-down. 
  7529. Selecting this option reverses the setting. 
  7530.  
  7531. When you select this option, the operation of the buttons on the mouse change. 
  7532. Position the pointer to one of the corners of the area to be marked. When you 
  7533. press the button, it marks one corner of the rectangle. As you drag the 
  7534. pointer, the rectangle is marked out, using the current pointer position as the 
  7535. "opposite" corner. When you release the button, the rectangle is frozen and the 
  7536. operation of the buttons reverts back to the default mode. 
  7537.  
  7538.  
  7539. ΓòÉΓòÉΓòÉ 10.6.4. Copy selection to clipboard ΓòÉΓòÉΓòÉ
  7540.  
  7541. The Copy selection to clipboard option of the Mark/Find pull-down on the Detail 
  7542. window allows you to copy the marked rectangle into the clipboard. The area can 
  7543. be either the one marked with the Mark an area option or a hyperblock link that 
  7544. has been selected. 
  7545.  
  7546. The "text" portion of the clipboard is the only one updated. 
  7547.  
  7548.  
  7549. ΓòÉΓòÉΓòÉ 10.6.5. Print selection ΓòÉΓòÉΓòÉ
  7550.  
  7551. The Print selection option of the Mark/Find pull-down on the Detail window 
  7552. allows you to send the marked rectangle to the printer. The area can be either 
  7553. the one marked with the Mark an area option or a hyperblock link that has been 
  7554. selected. 
  7555.  
  7556. The output goes to the printer identified as PRN. 
  7557.  
  7558. If the rectangle is more than 80 characters wide, then a "go to condensed mode" 
  7559. command (hex 15) is the first character output to the printer. Likewise, a "go 
  7560. to normal mode" command (hex 18) is the last character output to the printer. 
  7561.  
  7562.  
  7563. ΓòÉΓòÉΓòÉ 10.7. Misc ΓòÉΓòÉΓòÉ
  7564.  
  7565. The Misc pull-down includes options that allow control of double-click 
  7566. operations and font specification. 
  7567.  
  7568. Functions available are: 
  7569.  
  7570.  Unselect 'link' 
  7571.            Unselects the currently selected hyperblock link. 
  7572.  Send output to the same window 
  7573.            Controls where the output from the mouse button "double-click" is 
  7574.            sent. 
  7575.  Double-click options... 
  7576.            Allows control of the action taken when mouse button 1 or 2 is 
  7577.            double-clicked. 
  7578.  Font for this window... 
  7579.            Specifies an alternate font for this window. 
  7580.  Contents Update 
  7581.            Specifies control, start and stop of periodic updates. 
  7582.  
  7583.  
  7584. ΓòÉΓòÉΓòÉ 10.7.1. Unselect 'link' ΓòÉΓòÉΓòÉ
  7585.  
  7586. The Unselect 'link' option of the Misc pull-down on the Detail window allows 
  7587. you to unselect the currently selected hyperblock link. This also causes the 
  7588. pop-up menu to revert back to the mode it had before the link was selected. 
  7589.  
  7590.  
  7591. ΓòÉΓòÉΓòÉ 10.7.2. Send output to the same window ΓòÉΓòÉΓòÉ
  7592.  
  7593. The Send output to the same window option of the Misc pull-down on the Detail 
  7594. window allows you to control where the output from mouse button "double-click" 
  7595. will go. 
  7596.  
  7597. When this option is chosen, "double-click" output is added to the current 
  7598. window. A check mark on the pull-down indicates this mode is active. 
  7599.  
  7600. If this option is not chosen, then "double-click" output is sent to a new 
  7601. window. No check mark appears on the pull-down when this mode is active. 
  7602.  
  7603. Initially, the option is not set. 
  7604.  
  7605.  
  7606. ΓòÉΓòÉΓòÉ 10.7.3. Double-click options... ΓòÉΓòÉΓòÉ
  7607.  
  7608. The Double-click options dialog of the Misc pull-down on the Detail window 
  7609. allows you to specify the action taken when you double-click mouse button 1 
  7610. while the pointer is over the address of a control block that THESEUS2 cannot 
  7611. format. 
  7612.  
  7613. The display generated is referred to in the helps as a "General memory 
  7614. display." 
  7615.  
  7616. The default "description" action for mouse button 2 can also be selected. 
  7617.  
  7618.  
  7619. ΓòÉΓòÉΓòÉ <hidden> Show description ΓòÉΓòÉΓòÉ
  7620.  
  7621. When this option is selected, double clicking button 2 on the mouse will 
  7622. display a "description" of the memory object which has been selected. 
  7623.  
  7624.  
  7625. ΓòÉΓòÉΓòÉ <hidden> Show process contexts ΓòÉΓòÉΓòÉ
  7626.  
  7627. When this option is selected, double clicking button 2 on the mouse will 
  7628. display the process contexts of the memory object which has been selected. 
  7629.  
  7630.  
  7631. ΓòÉΓòÉΓòÉ <hidden> Save as defaults ΓòÉΓòÉΓòÉ
  7632.  
  7633. When this option is selected, the input values become the defaults for the 
  7634. mouse button double click parameters on subsequent creations of detail windows. 
  7635. If the dialog was selected from a detail window, its defaults are also changed. 
  7636.  
  7637.  
  7638. ΓòÉΓòÉΓòÉ 10.7.4. Font for this Window... ΓòÉΓòÉΓòÉ
  7639.  
  7640. When you select the Font for this Window option of the Misc pull-down on the 
  7641. Detail window, you can specify a different monospace font for the Detail window 
  7642. being displayed. 
  7643.  
  7644. THESEUS2 will automatically resize the window if you have not manually changed 
  7645. the size. 
  7646.  
  7647.  
  7648. ΓòÉΓòÉΓòÉ 10.7.5. Contents Update ΓòÉΓòÉΓòÉ
  7649.  
  7650. When you select the Contents Update option of the Misc pull-down on the Detail 
  7651. or Process Hierarchy window, you are presented with a sub-menu for 
  7652. specification of control, start and stop of periodic updates to this window. 
  7653.  
  7654. Note:  Not all detail windows allow periodic update. Only those that do have 
  7655. this option enabled. 
  7656.  
  7657. Functions available are: 
  7658.  
  7659.  Options... 
  7660.            Presents a dialog to allow control of the update rate and window 
  7661.            update characteristics. 
  7662.  Start 
  7663.            Starts the periodic update of the window contents. 
  7664.  Stop 
  7665.            Stops the periodic update of the window contents. 
  7666.  Refresh now 
  7667.            Causes an immediate update of the window contents. 
  7668.  
  7669.  
  7670. ΓòÉΓòÉΓòÉ 10.7.5.1. Options... ΓòÉΓòÉΓòÉ
  7671.  
  7672. The Options dialog of the Periodic Update option of the Misc pull-down on the 
  7673. Detail window allows you to control the update rate and window update 
  7674. characteristics. The options are: 
  7675.  
  7676.  o Time between updates. 
  7677.  o Replace window contents each time. 
  7678.  o Change cursor shape while updating. 
  7679.  o Scroll the screen when it is updated. 
  7680.  o End of Output control: 
  7681.  
  7682.     - Never output it. 
  7683.     - Output it if data was generated. 
  7684.     - Always output it. 
  7685.  
  7686.  
  7687. ΓòÉΓòÉΓòÉ 10.7.5.1.1. Time between updates ΓòÉΓòÉΓòÉ
  7688.  
  7689. This option specifies the number of minutes and seconds for the detail window 
  7690. update interval. 
  7691.  
  7692. The default is 30 seconds. The maximum value is 999 minutes. 
  7693.  
  7694. The seconds value cannot be typed, only the spin buttons work. The granularity 
  7695. of the seconds value is determined by the minutes value as follows: 
  7696.  
  7697.  Minutes     Seconds granularity 
  7698.  0           Any second, except 0. 
  7699.  1-4         5. 
  7700.  5-9         10. 
  7701.  10-999      Minutes only. 
  7702.  
  7703.  
  7704. ΓòÉΓòÉΓòÉ 10.7.5.1.2. Replace window contents each time ΓòÉΓòÉΓòÉ
  7705.  
  7706. If this option is selected, the window contents are replace at each interval. 
  7707. If this option is not selected, the update information is added to the end of 
  7708. the existing window contents. 
  7709.  
  7710.  
  7711. ΓòÉΓòÉΓòÉ 10.7.5.1.3. Change cursor shape while updating ΓòÉΓòÉΓòÉ
  7712.  
  7713. If this option is selected, the cursor is changed from the "pointer" to the 
  7714. "clock" whenever the window contents are being recomputed. 
  7715.  
  7716.  
  7717. ΓòÉΓòÉΓòÉ 10.7.5.1.4. Scroll the screen when it is updated ΓòÉΓòÉΓòÉ
  7718.  
  7719. If this option is selected, the window is scrolled so that the last line of 
  7720. data generated is displayed. 
  7721.  
  7722.  
  7723. ΓòÉΓòÉΓòÉ 10.7.5.1.5. Never output the End of Output ΓòÉΓòÉΓòÉ
  7724.  
  7725. If this option is selected, the End of Output message is never output at the 
  7726. end of the newly generated information in the window. 
  7727.  
  7728.  
  7729. ΓòÉΓòÉΓòÉ 10.7.5.1.6. Output the End of Output if data was generated ΓòÉΓòÉΓòÉ
  7730.  
  7731. If this option is selected, the End of Output message is output if there were 
  7732. other information generated in the window. 
  7733.  
  7734.  
  7735. ΓòÉΓòÉΓòÉ 10.7.5.1.7. Always output the End of Output ΓòÉΓòÉΓòÉ
  7736.  
  7737. If this option is selected, the End of Output message is always output, even if 
  7738. there were no other information generated in the window. 
  7739.  
  7740.  
  7741. ΓòÉΓòÉΓòÉ 10.7.5.2. Start ΓòÉΓòÉΓòÉ
  7742.  
  7743. This option starts a periodic update of the contents of the window. The Options 
  7744. dialog of the Periodic Update sub-menu of the Misc pull-down can be used to 
  7745. select the update interval and window update characteristics. 
  7746.  
  7747.  
  7748. ΓòÉΓòÉΓòÉ 10.7.5.3. Stop ΓòÉΓòÉΓòÉ
  7749.  
  7750. This option stops the periodic update of the contents of the window. 
  7751.  
  7752.  
  7753. ΓòÉΓòÉΓòÉ 10.7.5.4. Refresh now ΓòÉΓòÉΓòÉ
  7754.  
  7755. This option causes the window contents to be updated now. The behavior is the 
  7756. same as if a periodic update had occurred. 
  7757.  
  7758.  
  7759. ΓòÉΓòÉΓòÉ 10.8. Help ΓòÉΓòÉΓòÉ
  7760.  
  7761. The Help pull-down contains the list of the help functions available for the 
  7762. Detail window. 
  7763.  
  7764.  
  7765. ΓòÉΓòÉΓòÉ 10.8.1. Explanation of the contents of this window ΓòÉΓòÉΓòÉ
  7766.  
  7767. The Explanation of the contents of this window option of the Help pull-down 
  7768. displays information about the contents of this window. 
  7769.  
  7770.  
  7771. ΓòÉΓòÉΓòÉ 11. Detail Window Contents ΓòÉΓòÉΓòÉ
  7772.  
  7773. The following panels show the content of the various displays presented in the 
  7774. Detail window. 
  7775.  
  7776. The following displays are selectable from several sources: 
  7777.  
  7778.  System                  Lists the displays available from the System 
  7779.                          pull-down. 
  7780.  Process                 Lists the displays available from the Process 
  7781.                          pull-down. 
  7782.  Registers               Lists the displays available from the Registers 
  7783.                          pull-down. 
  7784.  Functions               Lists the displays available from the Functions 
  7785.                          pull-down. 
  7786.  Secondary               Lists the displays available from the Secondary 
  7787.                          pull-down. 
  7788.  Links                   Lists the displays available only from hyperblock 
  7789.                          links. 
  7790.  Common Elements         Lists the displays which occur in a variety of places. 
  7791.  
  7792.  
  7793. ΓòÉΓòÉΓòÉ 11.1. From the System Pull-Down ΓòÉΓòÉΓòÉ
  7794.  
  7795. The following panels show the content of the various displays selectable from 
  7796. the System pull-down on the Process Hierarchy window. 
  7797.  
  7798. These displays are: 
  7799.  
  7800.  Working Set 
  7801.            Displays the working set of memory for the entire system. 
  7802.  Memory Leak Detection 
  7803.            Displays the number of pages of memory that each process is 
  7804.            accumulating. 
  7805.  Nonswappable Memory Analysis 
  7806.            Displays information about the contents of nonswappable memory. 
  7807.  Linear Usage by Process 
  7808.            Displays a map of the linear address usage for all processes. This 
  7809.            includes the private and shared arenas. 
  7810.  Page Contents 
  7811.            Displays the contents of each page of physical memory. 
  7812.  RAM Usage by Process 
  7813.            Determines and displays the amount of RAM consumed my each process. 
  7814.  Free, Idle, and Locked Memory 
  7815.            Generates the summary information about free, idle and locked pages. 
  7816.  Swapper 
  7817.            Displays information about the contents of the SWAPPER.DAT file. 
  7818.  General System 
  7819.            A set of displays containing general system information. 
  7820.  Kernel Information 
  7821.            A set of displays containing kernel information. 
  7822.  
  7823.  
  7824. ΓòÉΓòÉΓòÉ 11.1.1. Working Set ΓòÉΓòÉΓòÉ
  7825.  
  7826. Select one: 
  7827.  
  7828.  Contents of Display 
  7829.  
  7830.  Selecting 
  7831.  
  7832.  Example Output 
  7833.  
  7834.  Algorithm 
  7835.  
  7836.  Illustration 
  7837.  
  7838.  Related Topics 
  7839.  
  7840.  
  7841. ΓòÉΓòÉΓòÉ 11.1.2. Memory Leak Detection ΓòÉΓòÉΓòÉ
  7842.  
  7843. Select one: 
  7844.  
  7845.  Contents of Display 
  7846.  
  7847.  Selecting 
  7848.  
  7849.  Example Output 
  7850.  
  7851.  Related Topics 
  7852.  
  7853.  
  7854. ΓòÉΓòÉΓòÉ 11.1.3. Nonswappable Memory Analysis ΓòÉΓòÉΓòÉ
  7855.  
  7856. Select one: 
  7857.  
  7858.  Contents of Display 
  7859.  
  7860.  Selecting 
  7861.  
  7862.  Example Output 
  7863.  
  7864.  Related Topics 
  7865.  
  7866.  
  7867. ΓòÉΓòÉΓòÉ 11.1.4. Linear Usage by Process ΓòÉΓòÉΓòÉ
  7868.  
  7869. Select one: 
  7870.  
  7871.  Contents of Display 
  7872.  
  7873.  Selecting 
  7874.  
  7875.  Example Output 
  7876.  
  7877.  Related Topics 
  7878.  
  7879.  
  7880. ΓòÉΓòÉΓòÉ 11.1.5. Page Contents ΓòÉΓòÉΓòÉ
  7881.  
  7882. Select one: 
  7883.  
  7884.  Contents of Display 
  7885.  
  7886.  Selecting 
  7887.  
  7888.  Example Output 
  7889.  
  7890.  Related Topics 
  7891.  
  7892.  
  7893. ΓòÉΓòÉΓòÉ 11.1.6. RAM Usage by Process ΓòÉΓòÉΓòÉ
  7894.  
  7895. Select one: 
  7896.  
  7897.  Contents of Display 
  7898.  
  7899.  Selecting 
  7900.  
  7901.  Example Output 
  7902.  
  7903.  Algorithm 
  7904.  
  7905.  Related Topics 
  7906.  
  7907.  
  7908. ΓòÉΓòÉΓòÉ 11.1.7. Free, Idle, and Locked Memory ΓòÉΓòÉΓòÉ
  7909.  
  7910. Select one: 
  7911.  
  7912.  Contents of Display 
  7913.  
  7914.  Selecting 
  7915.  
  7916.  Example Output 
  7917.  
  7918.  Related Topics 
  7919.  
  7920.  
  7921. ΓòÉΓòÉΓòÉ 11.1.8. Swapper ΓòÉΓòÉΓòÉ
  7922.  
  7923. Select one: 
  7924.  
  7925.  Contents of Display 
  7926.  
  7927.  Selecting 
  7928.  
  7929.  Example Output 
  7930.  
  7931.  Related Topics 
  7932.  
  7933.  
  7934. ΓòÉΓòÉΓòÉ 11.1.9. General System ΓòÉΓòÉΓòÉ
  7935.  
  7936. The General System option contains: 
  7937.  
  7938.  General System Information 
  7939.            Displays selected general system information. 
  7940.  Device Drivers 
  7941.            Contains information about all Device Drivers currently loaded. 
  7942.  GDT 
  7943.            Displays the Global Descriptor Table. 
  7944.  Modules 
  7945.            Contains information about all modules currently loaded. 
  7946.  System Anchor Segment 
  7947.            Displays the System Anchor Segment. 
  7948.  Global Info Seg 
  7949.            Displays the Global Information Segment. 
  7950.  Open Files 
  7951.            Displays information about the files that are open. 
  7952.  Process List 
  7953.            Displays a list of all processes that are running. 
  7954.  
  7955.  
  7956. ΓòÉΓòÉΓòÉ 11.1.9.1. General System Information ΓòÉΓòÉΓòÉ
  7957.  
  7958. Select one: 
  7959.  
  7960.  Contents of Display 
  7961.  
  7962.  Selecting 
  7963.  
  7964.  Example Output 
  7965.  
  7966.  Related Topics 
  7967.  
  7968.  
  7969. ΓòÉΓòÉΓòÉ 11.1.9.2. Device Drivers ΓòÉΓòÉΓòÉ
  7970.  
  7971. Select one: 
  7972.  
  7973.  Contents of Display 
  7974.  
  7975.  Selecting 
  7976.  
  7977.  Example output 
  7978.  
  7979.  Related Topics 
  7980.  
  7981.  
  7982. ΓòÉΓòÉΓòÉ 11.1.9.3. GDT ΓòÉΓòÉΓòÉ
  7983.  
  7984. Select one: 
  7985.  
  7986.  Contents of Display 
  7987.  
  7988.  Descriptor Table Entry Description 
  7989.  
  7990.  Selecting 
  7991.  
  7992.  Example Output 
  7993.  
  7994.  Related Topics 
  7995.  
  7996.  
  7997. ΓòÉΓòÉΓòÉ 11.1.9.4. Modules ΓòÉΓòÉΓòÉ
  7998.  
  7999. Select one: 
  8000.  
  8001.  Contents of Display 
  8002.  
  8003.  Selecting 
  8004.  
  8005.  Example Output 
  8006.  
  8007.  Related Topics 
  8008.  
  8009.  
  8010. ΓòÉΓòÉΓòÉ 11.1.9.5. System Anchor Segment ΓòÉΓòÉΓòÉ
  8011.  
  8012. Select one: 
  8013.  
  8014.  Contents of Display 
  8015.  
  8016.  Selecting 
  8017.  
  8018.  Example Output 
  8019.  
  8020.  Related Topics 
  8021.  
  8022.  
  8023. ΓòÉΓòÉΓòÉ 11.1.9.6. Global Info Seg ΓòÉΓòÉΓòÉ
  8024.  
  8025. Select one: 
  8026.  
  8027.  Contents of Display 
  8028.  
  8029.  Selecting 
  8030.  
  8031.  Example Output 
  8032.  
  8033.  Related Topics 
  8034.  
  8035.  
  8036. ΓòÉΓòÉΓòÉ 11.1.9.7. Open Files ΓòÉΓòÉΓòÉ
  8037.  
  8038. Select one: 
  8039.  
  8040.  Contents of Display 
  8041.  
  8042.  Selecting 
  8043.  
  8044.  Example Output 
  8045.  
  8046.  Related Topics 
  8047.  
  8048.  
  8049. ΓòÉΓòÉΓòÉ 11.1.9.8. Process List ΓòÉΓòÉΓòÉ
  8050.  
  8051. Select one: 
  8052.  
  8053.  Contents of Display 
  8054.  
  8055.  Selecting 
  8056.  
  8057.  Example Output 
  8058.  
  8059.  Related Topics 
  8060.  
  8061.  
  8062. ΓòÉΓòÉΓòÉ 11.1.10. Kernel Information ΓòÉΓòÉΓòÉ
  8063.  
  8064. The Kernel Information option contains: 
  8065.  
  8066.  Kernel Memory Usage 
  8067.            Determines and displays the amount of memory consumed by the 
  8068.            Operating System. 
  8069.  System Object Summary 
  8070.            Displays the System Object Summary. 
  8071.  System Arena Table 
  8072.            Displays the System Arena Table. 
  8073.  System Page Table 
  8074.            Displays the System Page Table. 
  8075.  Page Frame Table 
  8076.            Displays the Page Frame Table. 
  8077.  
  8078.  
  8079. ΓòÉΓòÉΓòÉ 11.1.10.1. Kernel Memory Usage ΓòÉΓòÉΓòÉ
  8080.  
  8081. Select one: 
  8082.  
  8083.  Contents of Display 
  8084.  
  8085.  Selecting 
  8086.  
  8087.  Example Output 
  8088.  
  8089.  Algorithm 
  8090.  
  8091.  Related Topics 
  8092.  
  8093.  
  8094. ΓòÉΓòÉΓòÉ 11.1.10.2. Object Summary ΓòÉΓòÉΓòÉ
  8095.  
  8096. Select one: 
  8097.  
  8098.  Contents of Display 
  8099.  
  8100.  Selecting 
  8101.  
  8102.  Example Output 
  8103.  
  8104.  Related Topics 
  8105.  
  8106.  
  8107. ΓòÉΓòÉΓòÉ 11.1.10.3. System Arena Table ΓòÉΓòÉΓòÉ
  8108.  
  8109. Select one: 
  8110.  
  8111.  Contents of Display 
  8112.  
  8113.  Arena Record Description 
  8114.  
  8115.  Selecting 
  8116.  
  8117.  Example Output 
  8118.  
  8119.  Related Topics 
  8120.  
  8121.  
  8122. ΓòÉΓòÉΓòÉ 11.1.10.4. System Page Table ΓòÉΓòÉΓòÉ
  8123.  
  8124. Select one: 
  8125.  
  8126.  Contents of Display 
  8127.  
  8128.  Page Table Entry Description 
  8129.  
  8130.  Selecting 
  8131.  
  8132.  Example Output 
  8133.  
  8134.  Related Topics 
  8135.  
  8136.  
  8137. ΓòÉΓòÉΓòÉ 11.1.10.5. Page Frame Table ΓòÉΓòÉΓòÉ
  8138.  
  8139. Select one: 
  8140.  
  8141.  Contents of Display 
  8142.  
  8143.  Selecting 
  8144.  
  8145.  Example Output 
  8146.  
  8147.  Related Topics 
  8148.  
  8149.  
  8150. ΓòÉΓòÉΓòÉ 11.2. From the Process Pull-Down ΓòÉΓòÉΓòÉ
  8151.  
  8152. The following panels show the content of the various displays selectable from 
  8153. the Process pull-down on the Process Hierarchy window. 
  8154.  
  8155. These displays are: 
  8156.  
  8157.  Working Set 
  8158.            Displays the working set of memory for the process. 
  8159.  Memory Utilization 
  8160.            Displays details of memory usage for the process. 
  8161.  Memory Leak Detection 
  8162.            Displays the number of pages of memory that each object is 
  8163.            accumulating. 
  8164.  General Process Information 
  8165.            Displays general information about the process. 
  8166.  Per Task Data Area (PTDA) 
  8167.            Displays the PTDA. 
  8168.  LDT 
  8169.            Displays the LDT. 
  8170.  Page Table 
  8171.            Displays the process unique Page Table. 
  8172.  Private Object Summary 
  8173.            Displays a summary of the private arena memory objects. 
  8174.  Shared Object Summary 
  8175.            Displays a summary of the shared arena memory objects. 
  8176.  Private Arena Table 
  8177.            Displays the process unique arena table. 
  8178.  Shared Arena Table 
  8179.            Displays the shared arena, in the process' context. 
  8180.  
  8181.  
  8182. ΓòÉΓòÉΓòÉ 11.2.1. Working Set ΓòÉΓòÉΓòÉ
  8183.  
  8184. Select one: 
  8185.  
  8186.  Contents of Display 
  8187.  
  8188.  Selecting 
  8189.  
  8190.  Example Output 
  8191.  
  8192.  Algorithm 
  8193.  
  8194.  Illustration 
  8195.  
  8196.  Related Topics 
  8197.  
  8198.  
  8199. ΓòÉΓòÉΓòÉ 11.2.2. Memory Utilization ΓòÉΓòÉΓòÉ
  8200.  
  8201. Select one: 
  8202.  
  8203.  Contents of Display 
  8204.  
  8205.  Selecting 
  8206.  
  8207.  Example Output 
  8208.  
  8209.  Algorithm 
  8210.  
  8211.  Related Topics 
  8212.  
  8213.  
  8214. ΓòÉΓòÉΓòÉ 11.2.3. Memory Leak Detection ΓòÉΓòÉΓòÉ
  8215.  
  8216. Select one: 
  8217.  
  8218.  Contents of Display 
  8219.  
  8220.  Selecting 
  8221.  
  8222.  Example Output 
  8223.  
  8224.  Related Topics 
  8225.  
  8226.  
  8227. ΓòÉΓòÉΓòÉ 11.2.4. General Process Information ΓòÉΓòÉΓòÉ
  8228.  
  8229. Select one: 
  8230.  
  8231.  Contents of Display 
  8232.  
  8233.  Selecting 
  8234.  
  8235.  Example Output 
  8236.  
  8237.  Related Topics 
  8238.  
  8239.  
  8240. ΓòÉΓòÉΓòÉ 11.2.5. Per Task Data Area (PTDA) ΓòÉΓòÉΓòÉ
  8241.  
  8242. Select one: 
  8243.  
  8244.  Contents of Display 
  8245.  
  8246.  Selecting 
  8247.  
  8248.  Example Output 
  8249.  
  8250.  Related Topics 
  8251.  
  8252.  
  8253. ΓòÉΓòÉΓòÉ 11.2.6. LDT ΓòÉΓòÉΓòÉ
  8254.  
  8255. Select one: 
  8256.  
  8257.  Contents of Display 
  8258.  
  8259.  Descriptor Table Entry Description 
  8260.  
  8261.  Selecting 
  8262.  
  8263.  Example Output 
  8264.  
  8265.  Related Topics 
  8266.  
  8267.  
  8268. ΓòÉΓòÉΓòÉ 11.2.7. Page Table ΓòÉΓòÉΓòÉ
  8269.  
  8270. Select one: 
  8271.  
  8272.  Contents of Display 
  8273.  
  8274.  Page Table Entry Description 
  8275.  
  8276.  Selecting 
  8277.  
  8278.  Example Output 
  8279.  
  8280.  Related Topics 
  8281.  
  8282.  
  8283. ΓòÉΓòÉΓòÉ 11.2.8. Private Object Summary ΓòÉΓòÉΓòÉ
  8284.  
  8285. Select one: 
  8286.  
  8287.  Contents of Display 
  8288.  
  8289.  Selecting 
  8290.  
  8291.  Example Output 
  8292.  
  8293.  Related Topics 
  8294.  
  8295.  
  8296. ΓòÉΓòÉΓòÉ 11.2.9. Shared Object Summary ΓòÉΓòÉΓòÉ
  8297.  
  8298. Select one: 
  8299.  
  8300.  Contents of Display 
  8301.  
  8302.  Selecting 
  8303.  
  8304.  Example Output 
  8305.  
  8306.  Related Topics 
  8307.  
  8308.  
  8309. ΓòÉΓòÉΓòÉ 11.2.10. Private Arena Table ΓòÉΓòÉΓòÉ
  8310.  
  8311. Select one: 
  8312.  
  8313.  Contents of Display 
  8314.  
  8315.  Arena Record Description 
  8316.  
  8317.  Selecting 
  8318.  
  8319.  Example Output 
  8320.  
  8321.  Related Topics 
  8322.  
  8323.  
  8324. ΓòÉΓòÉΓòÉ 11.2.11. Shared Arena Table ΓòÉΓòÉΓòÉ
  8325.  
  8326. Select one: 
  8327.  
  8328.  Contents of Display 
  8329.  
  8330.  Arena Record Description 
  8331.  
  8332.  Selecting 
  8333.  
  8334.  Example Output 
  8335.  
  8336.  Related Topics 
  8337.  
  8338.  
  8339. ΓòÉΓòÉΓòÉ 11.3. From the Registers Pull-Down ΓòÉΓòÉΓòÉ
  8340.  
  8341. The following panels show the content of the various displays selectable from 
  8342. the Registers pull-down on the Process Hierarchy window. 
  8343.  
  8344. These displays are: 
  8345.  
  8346.  Control Registers 
  8347.            Displays the iAPX 386 control registers. 
  8348.  Current IDT 
  8349.            Displays the current Interrupt Descriptor Table. 
  8350.  Current TSS 
  8351.            Displays the current Task State Segment. 
  8352.  
  8353.  
  8354. ΓòÉΓòÉΓòÉ 11.3.1. Control Registers ΓòÉΓòÉΓòÉ
  8355.  
  8356. Select one: 
  8357.  
  8358.  Contents of Display 
  8359.  
  8360.  Selecting 
  8361.  
  8362.  Example Output 
  8363.  
  8364.  Related Topics 
  8365.  
  8366.  
  8367. ΓòÉΓòÉΓòÉ 11.3.2. IDT ΓòÉΓòÉΓòÉ
  8368.  
  8369. Select one: 
  8370.  
  8371.  Contents of Display 
  8372.  
  8373.  Descriptor Table Entry Description 
  8374.  
  8375.  Selecting 
  8376.  
  8377.  Example Output 
  8378.  
  8379.  Related Topics 
  8380.  
  8381.  
  8382. ΓòÉΓòÉΓòÉ 11.3.3. Task State Segment ΓòÉΓòÉΓòÉ
  8383.  
  8384. Select one: 
  8385.  
  8386.  Contents of Display 
  8387.  
  8388.  Selecting 
  8389.  
  8390.  Example Output 
  8391.  
  8392.  Related Topics 
  8393.  
  8394.  
  8395. ΓòÉΓòÉΓòÉ <hidden> Task State Segment ΓòÉΓòÉΓòÉ
  8396.  
  8397. Select one: 
  8398.  
  8399.  Contents of Display 
  8400.  
  8401.  Selecting 
  8402.  
  8403.  Example Output 
  8404.  
  8405.  Related Topics 
  8406.  
  8407.  
  8408. ΓòÉΓòÉΓòÉ <hidden> Selecting the TSS Display ΓòÉΓòÉΓòÉ
  8409.  
  8410. You may either select the Current TSS option of the System pull-down on the 
  8411. Process Hierarchy window to see the current TSS or select a hyperblock link 
  8412. from another window to see a specific TSS. 
  8413.  
  8414.  
  8415. ΓòÉΓòÉΓòÉ 11.4. From Functions Pull-Down ΓòÉΓòÉΓòÉ
  8416.  
  8417. The following panels show the content of the various displays selectable from 
  8418. the Functions pull-down on the Detail window. 
  8419.  
  8420. Displays are: 
  8421.  
  8422.  General Linear Memory 
  8423.            Displays memory at a specified linear address. 
  8424.  General Virtual Memory 
  8425.            Displays memory at a specified virtual address. 
  8426.  General Physical Memory 
  8427.            Displays memory at a specified physical address. 
  8428.  Show Working Set detail (by Page) 
  8429.            Shows which pages made up the working set. 
  8430.  Show Working Set detail (by Object) 
  8431.            Shows which objects made up the working set. 
  8432.  Show summary by Process 
  8433.            Show a summary of the working set information, summarized by 
  8434.            process. 
  8435.  Show SWAPPER.DAT detail (by Page) 
  8436.            Shows which pages make up the SWAPPER.DAT file. 
  8437.  Show process contexts 
  8438.            Displays context information for each process which access to the 
  8439.            specified linear address. 
  8440.  Memory Object Leak Detection 
  8441.            Performs memory leak detection on a single memory object. 
  8442.  Hot Spot Detection... 
  8443.            Performs byte change detection on a page of memory. 
  8444.  
  8445.  
  8446. ΓòÉΓòÉΓòÉ 11.4.1. General Linear Memory Display ΓòÉΓòÉΓòÉ
  8447.  
  8448. Select one: 
  8449.  
  8450.  Contents of Display 
  8451.  
  8452.  Selecting 
  8453.  
  8454.  Example Output 
  8455.  
  8456.  Related Topics 
  8457.  
  8458.  
  8459. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Linear Memory Display ΓòÉΓòÉΓòÉ
  8460.  
  8461. You may either select the Show memory at linear address option on the Functions 
  8462. pull-down on the Detail window to get a dialog so that you may enter a specific 
  8463. linear address or select a linear address hyperblock link from another window 
  8464. that THESEUS2 cannot explicitly format. 
  8465.  
  8466.  
  8467. ΓòÉΓòÉΓòÉ <hidden> Example of the General Linear memory display ΓòÉΓòÉΓòÉ
  8468.  
  8469. Memory from Linear address FEB5F498 for 40 bytes for process 'system':
  8470. FEB5F498 (0000)  00 00 50 07 80 80 00 00  00 00 54 48 45 53 45 55 *..P.......THESEU*
  8471. FEB5F4A8 (0010)  32 24 98 07 78 07 00 00  00 00 54 00 C8 0F 92 03 *2$..x.....T.....*
  8472. FEB5F4B8 (0020)  B8 04 82 00 EA 9D 1F 00  00 00 17 04 00 14 A0 07 *................*
  8473. FEB5F4C8 (0030)  A8 07 B0 07 B8 07 C0 07  40 00 FF 1F 00 60 EC FF *........@....`..*
  8474.  
  8475. The above is the same memory as the Device Driver Header example. 
  8476.  
  8477. Memory from Linear address FE984D84 for E bytes for process 'system':
  8478. FE984D84 (0000) 89 1E 1E 00       *....*   mov      [1E],bx
  8479. FE984D88 (0004) 8C 06 20 00       *.. .*   mov      [20],es
  8480. FE984D8C (0008) 26 8A 47 02       *&.G.*   mov      al,es:[bx+2]
  8481. FE984D90 (000C) 3C 00             *<.*     cmp      al,0
  8482.  
  8483.  
  8484. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Linear memory display ΓòÉΓòÉΓòÉ
  8485.  
  8486. For hex mode, the memory is presented as follows: 
  8487.  
  8488.  address    The linear address of the byte that begins the line. 
  8489.  hex        There are three formats for this data: 
  8490.  
  8491.     byte           Each byte is formatted individually. 
  8492.     word           Each word (2 bytes) is formatted individually. "Byte 
  8493.                    reversal" is done. 
  8494.     doubleword     Each doubleword (4 bytes) is formatted individually. "Byte 
  8495.                    reversal" is done. 
  8496.  ASCII      The character representation of the memory area. "Byte reversal" is 
  8497.             not done. 
  8498.  
  8499.  For disassemble mode, the memory is presented as follows: 
  8500.  
  8501.  address      The linear address of the byte that begins the line. 
  8502.  hex          Each byte is formatted individually. 
  8503.  ASCII        The character representation of the memory area. 
  8504.  instruction  The disassembled instruction, using MASM mnemonics. 
  8505.  
  8506.  
  8507. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8508.  
  8509.  o Memory addressing 
  8510.  
  8511.  o Linear addresses 
  8512.  
  8513.  o Description of Linear Object 
  8514.  
  8515.  
  8516. ΓòÉΓòÉΓòÉ 11.4.2. General Virtual Memory Display ΓòÉΓòÉΓòÉ
  8517.  
  8518. Select one: 
  8519.  
  8520.  Contents of Display 
  8521.  
  8522.  Selecting 
  8523.  
  8524.  Example Output 
  8525.  
  8526.  Related Topics 
  8527.  
  8528.  
  8529. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Virtual Memory Display ΓòÉΓòÉΓòÉ
  8530.  
  8531. You may either select the Show memory at virtual address option on the 
  8532. Functions pull-down on the Detail window to get a dialog so that you may enter 
  8533. a specific virtual address or select a virtual address hyperblock link from 
  8534. another window that THESEUS2 cannot explicitly format. 
  8535.  
  8536.  
  8537. ΓòÉΓòÉΓòÉ <hidden> Example of the General Virtual Memory Display ΓòÉΓòÉΓòÉ
  8538.  
  8539. Memory from Virtual address 0778:00000000 for 1A bytes for process 'system':
  8540. 0778:0000  00 00 50 07 80 80 00 00  00 00 54 48 45 53 45 55 *..P.......THESEU*
  8541. 0778:0010  32 24 98 07 78 07 00 00  00 00                   *2$..x.....*
  8542.  
  8543. The above is the same memory as the Device Driver Header example. 
  8544.  
  8545. Memory from Virtual address 0798:00000000 for 22B bytes for process 'system':
  8546. 0798:0000 89 1E 1E 00       *....*   mov      [1E],bx
  8547. 0798:0004 8C 06 20 00       *.. .*   mov      [20],es
  8548. 0798:0008 26 8A 47 02       *&.G.*   mov      al,es:[bx+2]
  8549. 0798:000C 3C 00             *<.*     cmp      al,0
  8550.  
  8551.  
  8552. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Virtual Memory Display ΓòÉΓòÉΓòÉ
  8553.  
  8554. For hex mode, the memory is presented as follows: 
  8555.  
  8556.  address    The virtual address of the byte that begins the line. 
  8557.  hex        There are three formats for this data: 
  8558.  
  8559.     byte           Each byte is formatted individually. 
  8560.     word           Each word (2 bytes) is formatted individually. "Byte 
  8561.                    reversal" is done. 
  8562.     doubleword     Each doubleword (4 bytes) is formatted individually. "Byte 
  8563.                    reversal" is done. 
  8564.  ASCII      The character representation of the memory area. "Byte reversal" is 
  8565.             not done. 
  8566.  
  8567.  For disassemble mode, the memory is presented as follows: 
  8568.  
  8569.  address      The virtual address of the byte that begins the line. 
  8570.  hex          Each byte is formatted individually. 
  8571.  ASCII        The character representation of the memory area. 
  8572.  instruction  The disassembled instruction, using MASM mnemonics. 
  8573.  
  8574.  
  8575. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8576.  
  8577.  o Memory addressing 
  8578.  
  8579.  o Virtual addresses 
  8580.  
  8581.  
  8582. ΓòÉΓòÉΓòÉ 11.4.3. General Physical Memory Display ΓòÉΓòÉΓòÉ
  8583.  
  8584. Select one: 
  8585.  
  8586.  Contents of Display 
  8587.  
  8588.  Selecting 
  8589.  
  8590.  Example Output 
  8591.  
  8592.  Related Topics 
  8593.  
  8594.  
  8595. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Physical Memory Display ΓòÉΓòÉΓòÉ
  8596.  
  8597. You may either select the Show memory at physical address option on the 
  8598. Functions pull-down on the Detail window to get a dialog so that you may enter 
  8599. a specific physical address or select a physical address hyperblock link from 
  8600. another window that THESEUS2 cannot explicitly format. 
  8601.  
  8602.  
  8603. ΓòÉΓòÉΓòÉ <hidden> Example of the General Physical Memory Display ΓòÉΓòÉΓòÉ
  8604.  
  8605. Memory from Physical address 006A7498 for 40 bytes for process 'system':
  8606. 006A7498 (0000)  00 00 50 07 80 80 00 00  00 00 54 48 45 53 45 55 *..P.......THESEU*
  8607. 006A74A8 (0010)  32 24 98 07 78 07 00 00  00 00 54 00 C8 0F 72 03 *2$..x.....T...r.*
  8608. 006A74B8 (0020)  B8 04 82 00 36 A1 1F 00  00 00 0F 04 00 14 A0 07 *....6...........*
  8609. 006A74C8 (0030)  A8 07 B0 07 B8 07 C0 07  40 00 FF 1F 00 60 EC FF *........@....`..*
  8610.  
  8611. The above is the same memory as the Device Driver Header example. 
  8612.  
  8613. Memory from Physical address 0068FD84 for E bytes for process 'system':
  8614. 0068FD84 (0000) 89 1E 1E 00       *....*   mov      [1E],bx
  8615. 0068FD88 (0004) 8C 06 20 00       *.. .*   mov      [20],es
  8616. 0068FD8C (0008) 26 8A 47 02       *&.G.*   mov      al,es:[bx+2]
  8617. 0068FD90 (000C) 3C 00             *<.*     cmp      al,0
  8618.  
  8619.  
  8620. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Physical Memory Display ΓòÉΓòÉΓòÉ
  8621.  
  8622. For hex mode, the memory is presented as follows: 
  8623.  
  8624.  address    The physical address of the byte that begins the line. 
  8625.  hex        There are three formats for this data: 
  8626.  
  8627.     byte           Each byte is formatted individually. 
  8628.     word           Each word (2 bytes) is formatted individually. "Byte 
  8629.                    reversal" is done. 
  8630.     doubleword     Each doubleword (4 bytes) is formatted individually. "Byte 
  8631.                    reversal" is done. 
  8632.  ASCII      The character representation of the memory area. "Byte reversal" is 
  8633.             not done. 
  8634.  
  8635.  For disassemble mode, the memory is presented as follows: 
  8636.  
  8637.  address      The physical address of the byte that begins the line. 
  8638.  hex          Each byte is formatted individually. 
  8639.  ASCII        The character representation of the memory area. 
  8640.  instruction  The disassembled instruction, using MASM mnemonics. 
  8641.  
  8642.  
  8643. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8644.  
  8645.  o Memory addressing 
  8646.  
  8647.  o Physical addresses 
  8648.  
  8649.  
  8650. ΓòÉΓòÉΓòÉ 11.4.4. Detail of Working Set (by Page) Display ΓòÉΓòÉΓòÉ
  8651.  
  8652. Select one: 
  8653.  
  8654.  Contents of Display 
  8655.  
  8656.  Selecting 
  8657.  
  8658.  Example Output 
  8659.  
  8660.  Related Topics 
  8661.  
  8662.  
  8663. ΓòÉΓòÉΓòÉ 11.4.5. Detail of Working Set (by Object) Display ΓòÉΓòÉΓòÉ
  8664.  
  8665. Select one: 
  8666.  
  8667.  Contents of Display 
  8668.  
  8669.  Selecting 
  8670.  
  8671.  Example Output 
  8672.  
  8673.  Related Topics 
  8674.  
  8675.  
  8676. ΓòÉΓòÉΓòÉ 11.4.6. Detail of Summary by Process Display ΓòÉΓòÉΓòÉ
  8677.  
  8678. Select one: 
  8679.  
  8680.  Contents of Display 
  8681.  
  8682.  Selecting 
  8683.  
  8684.  Example Output 
  8685.  
  8686.  Related Topics 
  8687.  
  8688.  
  8689. ΓòÉΓòÉΓòÉ 11.4.7. SWAPPER.DAT Contents (by Page) Display ΓòÉΓòÉΓòÉ
  8690.  
  8691. Select one: 
  8692.  
  8693.  Contents of Display 
  8694.  
  8695.  Selecting 
  8696.  
  8697.  Example Output 
  8698.  
  8699.  Related Topics 
  8700.  
  8701.  
  8702. ΓòÉΓòÉΓòÉ 11.4.8. Show Process Contexts ΓòÉΓòÉΓòÉ
  8703.  
  8704. Select one: 
  8705.  
  8706.  Contents of Display 
  8707.  
  8708.  Selecting 
  8709.  
  8710.  Example Output 
  8711.  
  8712.  Related Topics 
  8713.  
  8714.  
  8715. ΓòÉΓòÉΓòÉ 11.4.9. Memory Object Leak Detection ΓòÉΓòÉΓòÉ
  8716.  
  8717. Select one: 
  8718.  
  8719.  Contents of Display 
  8720.  
  8721.  Selecting 
  8722.  
  8723.  Example Output 
  8724.  
  8725.  Related Topics 
  8726.  
  8727.  
  8728. ΓòÉΓòÉΓòÉ 11.4.10. Hot Spot Detection... ΓòÉΓòÉΓòÉ
  8729.  
  8730. Select one: 
  8731.  
  8732.  Contents of Display 
  8733.  
  8734.  Selecting 
  8735.  
  8736.  Example Output 
  8737.  
  8738.  Related Topics 
  8739.  
  8740.  
  8741. ΓòÉΓòÉΓòÉ 11.5. From Secondary Pull-Down ΓòÉΓòÉΓòÉ
  8742.  
  8743. The following panels show the content of the various displays selectable from 
  8744. the Secondary pull-down on the Detail window. 
  8745.  
  8746. Displays are: 
  8747.  
  8748.  Usage Type Display 
  8749.            Shows the working set of the linear pages, broken down by "usage 
  8750.            type". 
  8751.  Last Referenced Graphic 
  8752.            Shows the working set of the linear pages as a "color strip" 
  8753.            display, graphically showing the time since last refernce of a page. 
  8754.  
  8755.  
  8756. ΓòÉΓòÉΓòÉ 11.5.1. Usage Type Display ΓòÉΓòÉΓòÉ
  8757.  
  8758. Select one: 
  8759.  
  8760.  Contents of Display 
  8761.  
  8762.  Selecting 
  8763.  
  8764.  Example Output 
  8765.  
  8766.  Related Topics 
  8767.  
  8768.  
  8769. ΓòÉΓòÉΓòÉ 11.5.2. Last Referenced Graphic ΓòÉΓòÉΓòÉ
  8770.  
  8771. Select one: 
  8772.  
  8773.  Contents of Display 
  8774.  
  8775.  Using the Display 
  8776.  
  8777.  Selecting 
  8778.  
  8779.  Example Output 
  8780.  
  8781.  Related Topics 
  8782.  
  8783.  
  8784. ΓòÉΓòÉΓòÉ 11.6. From Links ΓòÉΓòÉΓòÉ
  8785.  
  8786. The following panels show the content of displays that are displayed only from 
  8787. hyperblock links: 
  8788.  
  8789.  Device Driver Header 
  8790.            Displays the contents of a single Device Driver's header. 
  8791.  Virtual Address Memory 
  8792.            Displays the contents of a segment in memory. 
  8793.  Show description of an object 
  8794.            Displays the "description" of a memory object. 
  8795.  Show description of a segment 
  8796.            Displays the "description" of a segment. 
  8797.  Physical description 
  8798.            Displays the "description" of a physical page of memory. 
  8799.  Detail for System Owner 
  8800.            Displays the list of memory objects that make up a particular system 
  8801.            owner. 
  8802.  Alias Record 
  8803.            Displays a single Alias Record. 
  8804.  Arena Record 
  8805.            Displays a single Arena Record. 
  8806.  Object Record 
  8807.            Displays a single Object Record. 
  8808.  Context Record 
  8809.            Displays a single Context Record. 
  8810.  Virtual Page Table entry 
  8811.            Shows a single Virtual Page Table entry. 
  8812.  MTE display 
  8813.            Displays a single MTE. 
  8814.  TCB display 
  8815.            Displays a single TCB. 
  8816.  Detail Working Set information for an Object 
  8817.            Displays the pages that make up the object and their relation in the 
  8818.            working set. 
  8819.  SFT display 
  8820.            Displays a single System File Table entry. 
  8821.  Detailed Memory Assignment Information 
  8822.            Displays detail of several memory analysis displays. 
  8823.  Detail of Nonswappable Memory 
  8824.            Displays detail of a selected nonswappable memory group. 
  8825.  
  8826.  The following panels show the content of displays that are displayed only from 
  8827.  the Last Referenced Graphic display: 
  8828.  
  8829.  Strip List 
  8830.            Displays the list of memory objects surrounding the requested color 
  8831.            bar. 
  8832.  
  8833.  
  8834. ΓòÉΓòÉΓòÉ 11.6.1. Device Driver Header Display ΓòÉΓòÉΓòÉ
  8835.  
  8836. Select one: 
  8837.  
  8838.  Contents of Display 
  8839.  
  8840.  Selecting 
  8841.  
  8842.  Example Output 
  8843.  
  8844.  Related Topics 
  8845.  
  8846.  
  8847. ΓòÉΓòÉΓòÉ <hidden> Selecting the Device Drivers Header Display ΓòÉΓòÉΓòÉ
  8848.  
  8849. This is selected by the hyperblock link of the Header addr field on the Device 
  8850. Drivers display. 
  8851.  
  8852.  
  8853. ΓòÉΓòÉΓòÉ <hidden> Example of the Device Driver Header Display ΓòÉΓòÉΓòÉ
  8854.  
  8855. Device Driver header located at 0778:0000:
  8856. Next DD header @ 0750:0000
  8857. Device attribute = 8080 => CHR LVL=OS/2
  8858. Offset to Strategy Routine = 0000
  8859. Offset to IDC Routine      = 0000
  8860. Device name = 'THESEU2$'
  8861. Code Selector = 0798
  8862. Data Selector = 0778
  8863. Reserved_3 = 0000
  8864. Reserved_4 = 0000
  8865.  
  8866.  
  8867. ΓòÉΓòÉΓòÉ <hidden> Contents of the Device Driver Header Display ΓòÉΓòÉΓòÉ
  8868.  
  8869. The fields of the device driver header are displayed as follows: 
  8870.  
  8871.  Device Driver header located at ssss:oooo: 
  8872.            The address of this device driver header. 
  8873.  Next DD header @ ssss:oooo 
  8874.            The device drivers are linked together. This is the address of the 
  8875.            next one. 
  8876.  Device attribute = hhhh => decoded attributes 
  8877.            The attributes are printed in hex and then presented in English as 
  8878.            follows: 
  8879.  
  8880.     CHR   Bit 15 - The device is a character device. Otherwise, it is a block 
  8881.           device. 
  8882.     IDC   Bit 14 - The device supports "Inter-device Driver Communication". If 
  8883.           this is set, then the IDC Entry Point value must be valid. 
  8884.     IBM   Bit 13 - The device is non-IBM block format. 
  8885.     SHR   Bit 12 - The device supports "shared device access checking". 
  8886.     OPN   Bit 11 - The device supports removable media (block devices) or 
  8887.           device open/close (character devices). 
  8888.     LVL   Bits 9-7 - Function level of support: 
  8889.  
  8890.        PC/DOS    000 - PC/DOS device driver.  (This should never be seen in 
  8891.                  OS/2 2.0.) 
  8892.        OS/2      001 - OS/2 device driver, which does not support DosDevIOCTL2 
  8893.                  packets. 
  8894.        IOCTL2    010 - OS/2 device driver, which supports DosDevIOCTL2 and 
  8895.                  SHUTDOWN request packets. 
  8896.        BitStrip  011 - OS/2 device driver, with a Capabilities Bit Strip in the 
  8897.                  header. 
  8898.        ??        Level was not one of the above. The level value is printed. 
  8899.     CLK   Bit 3 - The device is the CLOCK device. 
  8900.     NUL   Bit 2 - The device is the NULL device. 
  8901.     SCR   Bit 1 - The device is the SCREEN (STDOUT). 
  8902.     KBD   Bit 0 - The device is the KEYBOARD (STDIN). 
  8903.  Offset to Strategy Routine = hhhh 
  8904.            The offset into the device driver's code segment where the Strategy 
  8905.            Routine starts. 
  8906.  Offset to IDC Routine = hhhh 
  8907.            The offset into the device driver's code segment where the IDC 
  8908.            Routine starts. 
  8909.  Device name = 'name' 
  8910.            The name of the (character) device. 
  8911.  Number of units supported = i (integer) 
  8912.            The number of units supported by the (block) device. 
  8913.  Code Selector = ssss 
  8914.            The selector of the code segment. 
  8915.  Data Selector = ssss 
  8916.            The selector of the data segment. 
  8917.  Reserved_3 = hhhh 
  8918.            The third "reserved word" in the device driver header. 
  8919.  Reserved_4 = hhhh 
  8920.            The fourth "reserved word" in the device driver header. 
  8921.  Bit Strip = hhhhhhhh 
  8922.            The hex value of the Bit Strip and then presented in English: 
  8923.  
  8924.     parallel        The physical device driver supports parallel ports. 
  8925.     32-bit          For character device drivers, this bit is set to 1 if 
  8926.                     memory addressing above 16MB is supported; that is, support 
  8927.                     for full 32-bit memory addressability instead of 24-bit 
  8928.                     memory addressability. For block device drivers, this bit 
  8929.                     is reserved and must be set to 0. 
  8930.     DosDevIOCtl2    The DosDevIOCtl2 and SHUTDOWN request packets are 
  8931.                     supported. 
  8932.  
  8933.  
  8934. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8935.  
  8936.  o Memory addressing 
  8937.  
  8938.  o Device Drivers 
  8939.  
  8940.  
  8941. ΓòÉΓòÉΓòÉ 11.6.2. Description of Linear Object Display ΓòÉΓòÉΓòÉ
  8942.  
  8943. Select one: 
  8944.  
  8945.  Contents of Display 
  8946.  
  8947.  Selecting 
  8948.  
  8949.  Example Output 
  8950.  
  8951.  Related Topics 
  8952.  
  8953.  
  8954. ΓòÉΓòÉΓòÉ <hidden> Selecting the Description of Linear Object Display ΓòÉΓòÉΓòÉ
  8955.  
  8956. The Description of Linear Object display is selected by double-clicking mouse 
  8957. button 2, with the pointer over any linear address for which a hyperblock link 
  8958. is defined. 
  8959.  
  8960. If the linear address is not a system arena address, then a process context 
  8961. should be set (by selecting a particular process). 
  8962.  
  8963. If a context is not specified, or the context is sysinit, then the Page Tables 
  8964. for all processes are shown. 
  8965.  
  8966.  
  8967. ΓòÉΓòÉΓòÉ <hidden> Example of the Description of Linear Object Display ΓòÉΓòÉΓòÉ
  8968.  
  8969. Description of Linear Object 1B4A0000, process = 'THESEUS2':
  8970. It is object # 0002 from module PMDRAG.
  8971.  
  8972. Arena Record:
  8973.  har    pages   linear flg next prev link hash hob  hal  hco  / Decoded flags
  8974. 016F 00000010 1B4A0000 3D9 016E 0170 0000 0000 019D 0000 03D9 / Mapped Reload User Exec Read Hco
  8975.  
  8976. Object Record:
  8977.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  8978. 019D  016F 0000  0838 019B 019B  0000 00  00 00 00 00 / m-PMDRAG / shared exec read user
  8979.  
  8980. Context Record(s):
  8981.  hco  next ptda flgs / process / decoded_flags
  8982. 03D9  01FB 0290  1C  / THESEUS2 / read exec user
  8983. 01FB  0113 01D4  1C  / PMEXEC / read exec user
  8984. 0113  0000 00EF  1D  / PMSHELL / read exec user originator
  8985.  
  8986. Page Table, from 1B4A0000 to 1B4AFFFF:
  8987. *Linear=1B400000 Physical=0019C000 D=1 A=1 User  R/W P=1 Resident
  8988.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0001 fast
  8989.   hob=0067 refCount=0001 relPage=02ED block#=0019C flag=0010 / pf
  8990.  Linear=1B4A0000 FrameId=005CB     D=0 A=0 User  R/O P=0
  8991.   hob=019D refCount=0003 relPage=0000 block#=00008 flag=0800 / discardable
  8992.  Linear=1B4A1000 FrameId=005CC     D=0 A=0 User  R/O P=0
  8993.   hob=019D refCount=0003 relPage=0001 block#=00009 flag=0800 / discardable
  8994.  Linear=1B4A2000 Invalid page      D=0 A=0 Super R/O P=0
  8995.    Linear addresses 1B4A2000 to 1B4AF000 (14 pages) as last PTE above.
  8996.  
  8997.  
  8998. ΓòÉΓòÉΓòÉ <hidden> Contents of the Description of Linear Object Display ΓòÉΓòÉΓòÉ
  8999.  
  9000. The information presented on the Description of Linear Object display follows: 
  9001.  
  9002.   1. The linear address and context (denoting a particular process) of the 
  9003.      memory object. 
  9004.   2. A high-level statement describing the memory object: 
  9005.  
  9006.     It is object # hhhh from module aaaaaaaa. 
  9007.               The name of the module (either .EXE or .DLL) and the relative 
  9008.               object number within the module. This object number will match 
  9009.               the one produced and printed by the linker. 
  9010.     It was allocated by aaaaaaaa. 
  9011.               This memory was allocated by the indicated module. 
  9012.     It is 'aaaaaaaa' (decoded hmte from object record). 
  9013.               `aaaaaaaa' is the name of a system resource, obtained by decoding 
  9014.               the hmte. 
  9015.     It is 'aaaaaaaa' (decoded owner from object record). 
  9016.               `aaaaaaaa' is the name of a system resource, obtained by decoding 
  9017.               the owner. 
  9018.  
  9019.   3. The decoded arena record. 
  9020.   4. The decoded alias record. 
  9021.   5. The decoded object record. 
  9022.   6. The decoded context record(s) (if this is a shared arena address). 
  9023.   7. The decoded Page Table over the linear address range of the object. For 
  9024.      each page in the object (PDEs are shown when displaying from a new Page 
  9025.      Table), the following items are shown: 
  9026.  
  9027.     o The PTE. 
  9028.     o The Page Frame Table entry for the PTE (if the page is present). 
  9029.     o The Virtual Page Table entry for the PTE. 
  9030.  
  9031.      If a context has not been specified, or the context is sysinit, then the 
  9032.      Page Tables for all processes are shown. 
  9033.  
  9034.  
  9035. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9036.  
  9037.  o Memory addressing 
  9038.  
  9039.  o Linear addresses 
  9040.  
  9041.  o Handles 
  9042.  
  9043.  o Memory Management Control Blocks 
  9044.  
  9045.  
  9046. ΓòÉΓòÉΓòÉ <hidden> Page Frame Table entry ΓòÉΓòÉΓòÉ
  9047.  
  9048. The fields of the Page Frame Table entry are decoded: 
  9049.  
  9050.  Term                Meaning 
  9051.  pteCnt=hhhh         The number of PTEs that refer to this page as being 
  9052.                      present. 
  9053.  long_lock=hhhh      The number of long-term locks outstanding for this page. 
  9054.  short_lock=hhhh     The number of short-term locks outstanding for this page. 
  9055.  block=hhhhh         Pager disk frame or loader block number 
  9056.  flags=hhhh          Flags indicating the status of the page. They are shown as 
  9057.                      hex and then decoded into ASCII: 
  9058.  
  9059.     fast        Page is in fast memory. 
  9060.     busy        Page is busy. 
  9061.     free        Page is on the free chain. 
  9062.     reserved?   Reserved bit. 
  9063.  
  9064.  
  9065. ΓòÉΓòÉΓòÉ 11.6.3. Description of Segment Display ΓòÉΓòÉΓòÉ
  9066.  
  9067. Select one: 
  9068.  
  9069.  Contents of Display 
  9070.  
  9071.  Selecting 
  9072.  
  9073.  Example Output 
  9074.  
  9075.  Related Topics 
  9076.  
  9077.  
  9078. ΓòÉΓòÉΓòÉ <hidden> Selecting the Description of Segment Display ΓòÉΓòÉΓòÉ
  9079.  
  9080. The Description of Segment display is selected by double-clicking mouse 
  9081. button 2, with the pointer over any virtual address or selector for which a 
  9082. hyperblock link is defined. 
  9083.  
  9084. If the virtual address is not a system arena address, then a process context 
  9085. must be set (by selecting a particular process). 
  9086.  
  9087.  
  9088. ΓòÉΓòÉΓòÉ <hidden> Example of the Description of Segment Display ΓòÉΓòÉΓòÉ
  9089.  
  9090. Description of Segment w/ selector = 0010, process = 'system'
  9091.  
  9092. Descriptor Table Entry:
  9093. GDT(0010) BTSS32  Base=FFE42DC8 Limit=00067 DPL=0               P=1 G=0
  9094.  
  9095. Description of Linear Object FFE42DC8, process = 'system':
  9096. It is object # 0001 from module DOSCALLS.
  9097.  
  9098. Arena Record:
  9099.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  9100. 0007 0000000B FFE3D000 009 0008 0014 0000 0000 0008 0000 0400 / Mapped
  9101.  
  9102. Object Record:
  9103.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  9104. 0008  0007 0000  0000 FFAA 0006  0000 00  00 00 00 00 / os2krnl load image /
  9105.  
  9106. Page Table, from FFE42DC8 to FFE42E2F:
  9107. *Linear=FFC00000 Physical=00190000 D=0 A=1 User  R/W P=1 Resident
  9108.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  9109.   hob=0019 refCount=0001 relPage=027F block#=00190 flag=0410 / pf resident
  9110.  Linear=FFE42000 Physical=00009000 D=1 A=1 User  R/W P=1 Resident
  9111.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  9112.   hob=0008 refCount=0001 relPage=0005 block#=00009 flag=0410 / pf resident
  9113.  
  9114.  
  9115. ΓòÉΓòÉΓòÉ <hidden> Contents of the Description of Segment Display ΓòÉΓòÉΓòÉ
  9116.  
  9117. The information presented on the Description of Segment display follows: 
  9118.  
  9119.   1. The selector and context (denoting a particular process) of the segment. 
  9120.   2. The Descriptor Table Entry for the selector. 
  9121.   3. The linear address and context (denoting a particular process) of the 
  9122.      memory object. 
  9123.   4. A high-level statement describing the memory object: 
  9124.  
  9125.     It is object # hhhh from module aaaaaaaa. 
  9126.               The name of the module (either .EXE or .DLL) and the relative 
  9127.               object number within the module. This object number will match 
  9128.               the one produced and printed by the linker. 
  9129.     It was allocated by aaaaaaaa. 
  9130.               This memory was allocated by the indicated module. 
  9131.     It is 'aaaaaaaa' (decoded hmte from object record). 
  9132.               `aaaaaaaa' is the name of a system resource, obtained by decoding 
  9133.               the hmte. 
  9134.     It is 'aaaaaaaa' (decoded owner from object record). 
  9135.               `aaaaaaaa' is the name of a system resource, obtained by decoding 
  9136.               the owner. 
  9137.  
  9138.   5. The decoded arena record. 
  9139.   6. The decoded alias record. 
  9140.   7. The decoded object record. 
  9141.   8. The decoded context record(s) (if this is a shared arena address). 
  9142.   9. The decoded Page Table over the linear address range of the object. For 
  9143.      each page in the object (PDEs are shown when displaying from a new Page 
  9144.      Table), the following items are shown: 
  9145.  
  9146.     o The PTE. 
  9147.     o The Page Frame Table entry for the PTE (if the page is present). 
  9148.     o The Virtual Page Table entry for the PTE. 
  9149.  
  9150.      If a context has not been specified, or the context is sysinit, then the 
  9151.      Page Tables for all processes are shown. 
  9152.  
  9153.  
  9154. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9155.  
  9156.  o Memory addressing 
  9157.  
  9158.  o Virtual addresses 
  9159.  
  9160.  o Linear addresses 
  9161.  
  9162.  o Handles 
  9163.  
  9164.  o Memory Management Control Blocks 
  9165.  
  9166.  
  9167. ΓòÉΓòÉΓòÉ 11.6.4. Description of Physical Object Display ΓòÉΓòÉΓòÉ
  9168.  
  9169. Select one: 
  9170.  
  9171.  Contents of Display 
  9172.  
  9173.  Selecting 
  9174.  
  9175.  Example Output 
  9176.  
  9177.  Related Topics 
  9178.  
  9179.  
  9180. ΓòÉΓòÉΓòÉ <hidden> Selecting the Description of Physical Object Display ΓòÉΓòÉΓòÉ
  9181.  
  9182. The Description of Physical Object display is selected by double-clicking mouse 
  9183. button 2, with the pointer over any physical address for which a hyperblock 
  9184. link is defined. 
  9185.  
  9186.  
  9187. ΓòÉΓòÉΓòÉ <hidden> Example of the Description of Physical Object Display ΓòÉΓòÉΓòÉ
  9188.  
  9189. Description of Physical Object 0018F000:
  9190.  
  9191. Start from the bottom (Page Frame Table) and go up:
  9192.  
  9193. Page Frame Table entry:
  9194.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  9195.  
  9196. Virtual Page Table entry (FrameId=00A9):
  9197.   hob=0014 refCount=0001 relPage=0000 block#=0018F flag=0410 / pf resident
  9198.  
  9199. Object Record:
  9200.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  9201. 0014  0013 0000  0000 FFB1 0000  0000 00  00 00 00 00 / PG Page directory /
  9202.  
  9203. Arena Record:
  9204.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  9205. 0013 00000001 FF420000 001 0017 0018 0000 0000 0014 0000 0000 /
  9206.  
  9207. =============================================================================
  9208. Now, go from the top (Arena's) down:
  9209.  
  9210. See if it is a page in the 'system' arena.
  9211. -----------------------------------------------------------------------------
  9212. Description of Linear Object FF420000, process = 'system':
  9213.  
  9214. Arena Record:
  9215.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  9216. 0013 00000001 FF420000 001 0017 0018 0000 0000 0014 0000 0000 /
  9217.  
  9218. Object Record:
  9219.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  9220. 0014  0013 0000  0000 FFB1 0000  0000 00  00 00 00 00 / PG Page directory /
  9221.  
  9222. Page Table, from FF420000 to FF420FFF:
  9223. *Linear=FF400000 Physical=00191000 D=0 A=1 User  R/W P=1 Resident
  9224.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  9225.   hob=0019 refCount=0001 relPage=027D block#=00191 flag=0410 / pf resident
  9226.  Linear=FF420000 Physical=0018F000 D=1 A=1 User  R/W P=1 Resident
  9227.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  9228.   hob=0014 refCount=0001 relPage=0000 block#=0018F flag=0410 / pf resident
  9229. =============================================================================
  9230. The page in each Process context in which it exists.
  9231.  
  9232.  
  9233. ΓòÉΓòÉΓòÉ <hidden> Contents of the Description of Physical Object Display ΓòÉΓòÉΓòÉ
  9234.  
  9235. The page address specified is described in three ways: 
  9236.  
  9237.  o From the Page Frame Table, looking up through the Virtual Page Table to an 
  9238.    object record to an arena record. 
  9239.  o From the system arena, looking down through the arena record to the object 
  9240.    record and Page Table. 
  9241.  o From the shared and private arenas of each process, looking down through the 
  9242.    arena record to the object record and Page Table. 
  9243.  
  9244.  The information presented on the Description of Physical Object display 
  9245.  follows: 
  9246.  
  9247.   1. The physical address of the page being "described." 
  9248.   2. The Page Frame Table entry for the page. 
  9249.   3. The Virtual Page Table entry for the page. 
  9250.   4. The decoded object record. 
  9251.   5. The decoded arena record. 
  9252.   6. The linear address and context (denoting a particular process) of the 
  9253.      memory object. 
  9254.   7. A high-level statement describing the memory object: 
  9255.  
  9256.     It is object # hhhh from module aaaaaaaa. 
  9257.               The name of the module (either .EXE or .DLL) and the relative 
  9258.               object number within the module. This object number will match 
  9259.               the one produced and printed by the linker. 
  9260.     It was allocated by aaaaaaaa. 
  9261.               This memory was allocated by the indicated module. 
  9262.     It is 'aaaaaaaa' (decoded hmte from object record). 
  9263.               `aaaaaaaa' is the name of a system resource, obtained by decoding 
  9264.               the hmte. 
  9265.     It is 'aaaaaaaa' (decoded owner from object record). 
  9266.               `aaaaaaaa' is the name of a system resource, obtained by decoding 
  9267.               the owner. 
  9268.  
  9269.   8. The decoded arena record. 
  9270.   9. The decoded alias record. 
  9271.  10. The decoded object record. 
  9272.  11. The decoded context record(s) (if this is a shared arena address). 
  9273.  12. The decoded Page Table over the linear address range of the object. For 
  9274.      each page in the object (PDEs are shown when displaying from a new Page 
  9275.      Table), the following items are shown: 
  9276.  
  9277.     o The PTE. 
  9278.     o The Page Frame Table entry for the PTE (if the page is present). 
  9279.     o The Virtual Page Table entry for the PTE. 
  9280.  
  9281.  Items 6-11 are repeated for every process that has the specified page in its 
  9282.  Page Tables. 
  9283.  
  9284.  
  9285. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9286.  
  9287.  o Memory addressing 
  9288.  
  9289.  o Linear addresses 
  9290.  
  9291.  o Physical addresses 
  9292.  
  9293.  o Handles 
  9294.  
  9295.  o Memory Management Control Blocks 
  9296.  
  9297.  
  9298. ΓòÉΓòÉΓòÉ 11.6.5. Detail for System Owner Display ΓòÉΓòÉΓòÉ
  9299.  
  9300. Select one: 
  9301.  
  9302.  Contents of Display 
  9303.  
  9304.  Selecting 
  9305.  
  9306.  Example Output 
  9307.  
  9308.  Related Topics 
  9309.  
  9310.  
  9311. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail for System Owner Display ΓòÉΓòÉΓòÉ
  9312.  
  9313. This is selected by a hyperblock link from the owner column of the Kernel 
  9314. Memory Usage display. 
  9315.  
  9316.  
  9317. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail for System Owner Display ΓòÉΓòÉΓòÉ
  9318.  
  9319. Detail Kernel Memory assignment information, owner = FF6B:
  9320. This owner is 'allocated via devhlp AllocPhys'.
  9321. There are 2 objects which make up this System Owner.
  9322.   1. Object at linear address 7C673000, pages present = 640.
  9323.   2. Object at linear address 7D0BD000, pages present = 16.
  9324.  
  9325.  
  9326. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail for System Owner Display ΓòÉΓòÉΓòÉ
  9327.  
  9328. One line is displayed for each memory object that makes up the specified system 
  9329. owner: 
  9330.  
  9331.  i. Object at linear address llllllll, pages present = nnn. 
  9332.            The base linear address of the memory object. The letter i indicates 
  9333.            the line number in the list. The nnn is the number of pages that are 
  9334.            present in RAM for this object. 
  9335.  
  9336.  
  9337. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9338.  
  9339.  o Memory addressing 
  9340.  
  9341.  o Linear addresses 
  9342.  
  9343.  o Memory Management Control Blocks 
  9344.  
  9345.  o System Memory Usage 
  9346.  
  9347.  
  9348. ΓòÉΓòÉΓòÉ 11.6.6. Alias Record Display ΓòÉΓòÉΓòÉ
  9349.  
  9350. Select one: 
  9351.  
  9352.  Contents of Display 
  9353.  
  9354.  Selecting 
  9355.  
  9356.  Example Output 
  9357.  
  9358.  Related Topics 
  9359.  
  9360.  
  9361. ΓòÉΓòÉΓòÉ <hidden> Alias Record Display ΓòÉΓòÉΓòÉ
  9362.  
  9363. Select one: 
  9364.  
  9365.  Contents of Display 
  9366.  
  9367.  Selecting 
  9368.  
  9369.  Example Output 
  9370.  
  9371.  Related Topics 
  9372.  
  9373.  
  9374. ΓòÉΓòÉΓòÉ <hidden> Selecting the Alias Record Display ΓòÉΓòÉΓòÉ
  9375.  
  9376. Alias records are displayed by selecting a hyperblock link from a hal field of 
  9377. some display. 
  9378.  
  9379.  
  9380. ΓòÉΓòÉΓòÉ <hidden> Example of the Alias Record Display ΓòÉΓòÉΓòÉ
  9381.  
  9382. A "CS_alias" alias record looks like: 
  9383.  
  9384.  hal   har    CS  flags  count    DS / Decoded flags
  9385. 003E  0ACB  006E     13    001  D446 / CS_alias DS_is_valid
  9386.  
  9387. A "MemMapAlias" alias record looks like: 
  9388.  
  9389.  hal   har  ptda  flags  count    DS / Decoded flags
  9390. 003E  0ACB  006E     15    001  D446 / MemMapAlias DS_is_valid
  9391.  
  9392. A "VM" alias record looks like: 
  9393.  
  9394.  hal   har  ptda  flags  offset / Decoded flags
  9395. 0006  0638  008D    021    0000 / DevHlp
  9396.  
  9397.  
  9398. ΓòÉΓòÉΓòÉ <hidden> Contents of the Alias Record Display ΓòÉΓòÉΓòÉ
  9399.  
  9400. The alias record displayed contains the following entries: 
  9401.  
  9402.  Column           Meaning 
  9403.  hal              The hal of the displayed alias record. 
  9404.  har              The har of the arena record for the memory object that this 
  9405.                   alias is for. 
  9406.  CS               Code Selector 
  9407.  ptda             Context this alias is created from. 
  9408.  flags            Flags for the record.  They are decoded at the end of the 
  9409.                   line. 
  9410.  count            Reference count 
  9411.  DS               Data Selector 
  9412.  offset           Page offset of the alias from the start of the object. 
  9413.  Decoded flags    The flags are decoded into readable form: 
  9414.  
  9415.     CS_alias    The alias is for a Code Selector (CS) alias. 
  9416.     MemMapAlias The alias is for a PTDA alias. 
  9417.     (Neither of the above two) The alias is a Virtual Memory (VM) alias. 
  9418.     Debug       The alias is for a debugger. 
  9419.     DS_is_valid The data field is valid. 
  9420.     DevHlp      The alias is for a DevHlp allocated memory. 
  9421.     Privatized  ??? 
  9422.     VDM         The alias is for a Virtual Dos Machine (VDM). 
  9423.     UVIRT_mapping_in_VDMs ??? 
  9424.  
  9425.  
  9426. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9427.  
  9428.  o Memory Management Control Blocks 
  9429.  
  9430.  o Handles 
  9431.  
  9432.  
  9433. ΓòÉΓòÉΓòÉ 11.6.7. Arena Record Display ΓòÉΓòÉΓòÉ
  9434.  
  9435. Select one: 
  9436.  
  9437.  Contents of Display 
  9438.  
  9439.  Selecting 
  9440.  
  9441.  Example Output 
  9442.  
  9443.  Related Topics 
  9444.  
  9445.  
  9446. ΓòÉΓòÉΓòÉ <hidden> Arena Record Display ΓòÉΓòÉΓòÉ
  9447.  
  9448. Select one: 
  9449.  
  9450.  Contents of Display 
  9451.  
  9452.  Selecting 
  9453.  
  9454.  Example Output 
  9455.  
  9456.  Related Topics 
  9457.  
  9458.  
  9459. ΓòÉΓòÉΓòÉ <hidden> Selecting the Arena Record Display ΓòÉΓòÉΓòÉ
  9460.  
  9461. Arena records are displayed by selecting a hyperblock link from a har field of 
  9462. some display. 
  9463.  
  9464.  
  9465. ΓòÉΓòÉΓòÉ <hidden> Example of the Arena Record Display ΓòÉΓòÉΓòÉ
  9466.  
  9467. A private arena record looks like: 
  9468.  
  9469.  har    pages   linear flg next prev link hash hob  hal  ptda / Decoded flags
  9470. 0252 00000020 00010000 1D9 0243 024D 0000 0000 025F 0000 0301 / Mapped Reload User Exec Read
  9471.  
  9472. A shared arena record looks like: 
  9473.  
  9474.  har    pages   linear flg next prev link hash hob  hal  hco  / Decoded flags
  9475. 02C5 00000010 1AB60000 369 02AE 0005 0000 0000 030F 0000 04E2 / Mapped Write User Read Hco
  9476.  
  9477. A system arena record looks like: 
  9478.  
  9479.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  9480. 0210 00000400 7C000000 001 0272 0004 0000 007A 0270 0000 0000 /
  9481.  
  9482.  
  9483. ΓòÉΓòÉΓòÉ <hidden> Contents of the Arena Record Display ΓòÉΓòÉΓòÉ
  9484.  
  9485. The arena record displayed contains the following entries: 
  9486.  
  9487.  Column           Meaning 
  9488.  har              The har of the displayed arena record. 
  9489.  pages            The number of pages allocated in the memory object. The 
  9490.                   number of committed pages may be less than this. 
  9491.  linear           The linear address of the start of the memory object. 
  9492.  flg              Flags to indicate the status of the memory Object. They are 
  9493.                   decoded into English at the end of the line. 
  9494.  next             The next arena record in the doubly linked chain. The arena 
  9495.                   records are linked in ascending order of the linear address 
  9496.                   of the memory object. 
  9497.  prev             The previous arena record in the doubly linked chain. 
  9498.  link             The har of an arena record that is an alias for the memory 
  9499.                   object. 
  9500.  hash             Link to hash table. 
  9501.  hob              The hob of the object record associated with this memory 
  9502.                   object. 
  9503.  hal              Alias record handle. 
  9504.  ptda             (private arena) The hob of the PTDA of the process that owns 
  9505.                   the memory object. 
  9506.  hco              (shared arena) The first hco in a chain of context records 
  9507.                   for the memory object. 
  9508.  sel              (system arena) The GDT selector that points to the memory 
  9509.                   object. 
  9510.  Decoded flags    The flags are decoded into readable form: 
  9511.  
  9512.     Mapped    A selector maps this memory object. 
  9513.     Reload    Loader flag. 
  9514.     Write     The object is writable. 
  9515.     User      The object has user pages 
  9516.     Exec      The object has executable pages. 
  9517.     Read      The object has readable pages 
  9518.     Hco       For a shared arena record, this indicates that there is an entry 
  9519.               in the hco field. 
  9520.     Guard     The object has guard pages. 
  9521.     SGS       The object is registered under Screen Group Switch control. 
  9522.  
  9523.  
  9524. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9525.  
  9526.  o Memory Management Control Blocks 
  9527.  
  9528.  o Handles 
  9529.  
  9530.  
  9531. ΓòÉΓòÉΓòÉ 11.6.8. Object Record Display ΓòÉΓòÉΓòÉ
  9532.  
  9533. Select one: 
  9534.  
  9535.  Contents of Display 
  9536.  
  9537.  Selecting 
  9538.  
  9539.  Example Output 
  9540.  
  9541.  Related Topics 
  9542.  
  9543.  
  9544. ΓòÉΓòÉΓòÉ <hidden> Object Record Display ΓòÉΓòÉΓòÉ
  9545.  
  9546. Select one: 
  9547.  
  9548.  Contents of Display 
  9549.  
  9550.  Selecting 
  9551.  
  9552.  Example Output 
  9553.  
  9554.  Related Topics 
  9555.  
  9556.  
  9557. ΓòÉΓòÉΓòÉ <hidden> Selecting the Object Record Display ΓòÉΓòÉΓòÉ
  9558.  
  9559. Object records are displayed by selecting a link from a hob field of some 
  9560. display. 
  9561.  
  9562.  
  9563. ΓòÉΓòÉΓòÉ <hidden> Example of the Object Record Display ΓòÉΓòÉΓòÉ
  9564.  
  9565. A real memory object looks like: 
  9566.  
  9567.  hob   har next  flgs ownr hmte  sown,cnt lt st / owner / decoded_flags
  9568. 0252  0259 0000  0838 025F 025F  0000 00  00 00 / m-THESEUS2 / shared exec read user
  9569.  
  9570. A pseudo-object looks like: 
  9571.  
  9572.  hob   linear    flgs ownr hmte  sown,cnt lt st / owner / decoded_flags
  9573. 0294  7D3211D0   8000 FFE1 025F  0000 00  00 00 / VM arena header / Pseudo-object
  9574.  
  9575.  
  9576. ΓòÉΓòÉΓòÉ <hidden> Contents of the Object Record Display ΓòÉΓòÉΓòÉ
  9577.  
  9578. The object record displayed contains the following entries: 
  9579.  
  9580.  Column           Meaning 
  9581.  hob              The hob of the displayed object record. 
  9582.  har              The har of the arena record associated with this object 
  9583.                   record. 
  9584.  next             The next object record in the chain for this memory object. 
  9585.  linear           The linear address of the pseudo-object. 
  9586.  flgs             Flags to indicate the status of the memory object. They are 
  9587.                   decoded into English at the end of the line. 
  9588.  ownr             Objects have owners. This is the hob of the owner. 
  9589.  hmte             The hmte that allocated the memory object. 
  9590.  sown             ID of thread owning the semaphore. 
  9591.  cnt              Counter and waiting flag associated with sown. 
  9592.  lt               Number of long-term locks that are outstanding. 
  9593.  st               Number of short-term locks that are outstanding. 
  9594.  owner            The name of the owner in ASCII. 
  9595.  decoded_flags    The flags are decoded into readable form: 
  9596.  
  9597.     Pseudo-object The object is a pseudo-object. The linear address of the 
  9598.                object is contained in the object record. 
  9599.     API_allocated_object Object was allocated by an application. 
  9600.     lock       Some thread to wake in VMUnlock. 
  9601.     aliases    The object has aliases. 
  9602.     shared     The object's contents are shared. 
  9603.     UVirt      UVirt object. 
  9604.     zero-init  Object is zero-initialized. 
  9605.     resident   The object is to remain resident. It is not allowed to be paged 
  9606.                out. 
  9607.     low memory The object's memory is to be allocated from low memory. 
  9608.     guard      The object has guard pages. 
  9609.     exec       The object has executable pages 
  9610.     read       The object has readable pages 
  9611.     user       The object has user pages. 
  9612.     write      The object has writable pages. 
  9613.  
  9614.  
  9615. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9616.  
  9617.  o Memory Management Control Blocks 
  9618.  
  9619.  o Handles 
  9620.  
  9621.  
  9622. ΓòÉΓòÉΓòÉ 11.6.9. Context Record Display ΓòÉΓòÉΓòÉ
  9623.  
  9624. Select one: 
  9625.  
  9626.  Contents of Display 
  9627.  
  9628.  Selecting 
  9629.  
  9630.  Example Output 
  9631.  
  9632.  Related Topics 
  9633.  
  9634.  
  9635. ΓòÉΓòÉΓòÉ <hidden> Context Record Display ΓòÉΓòÉΓòÉ
  9636.  
  9637. Select one: 
  9638.  
  9639.  Contents of Display 
  9640.  
  9641.  Selecting 
  9642.  
  9643.  Example Output 
  9644.  
  9645.  Related Topics 
  9646.  
  9647.  
  9648. ΓòÉΓòÉΓòÉ <hidden> Selecting the Context Record Display ΓòÉΓòÉΓòÉ
  9649.  
  9650. Context records are displayed by selecting a hyperblock link from an hco field 
  9651. of some display. 
  9652.  
  9653.  
  9654. ΓòÉΓòÉΓòÉ <hidden> Example of the Context Record Display ΓòÉΓòÉΓòÉ
  9655.  
  9656.  hco  next ptda flgs / process / decoded_flags
  9657. 0472  02C6 0283  16  / THESEUS2 / read user write
  9658.  
  9659.  
  9660. ΓòÉΓòÉΓòÉ <hidden> Contents of the Context Record Display ΓòÉΓòÉΓòÉ
  9661.  
  9662. The context record displayed contains the following entries: 
  9663.  
  9664.  Column            Meaning 
  9665.  hco               The hco of the displayed context record. 
  9666.  next              The hco of the next context record in the chain. The last 
  9667.                    context record has a next field of 0000. 
  9668.  ptda              The hob of the PTDA which has access to the shared memory 
  9669.                    object. 
  9670.  flgs              The flag byte is presented in hex. It is decoded into 
  9671.                    English at the end of the line. 
  9672.  process           The name of the process referred to by the PTDA handle. 
  9673.  decoded_flags     The flags are decoded into readable form: 
  9674.  
  9675.     privatized  The context is privatized. 
  9676.     guard       The object has guard pages. 
  9677.     read        Object is readable from this process. 
  9678.     exec        Object is executable from this process. 
  9679.     user        The object has user pages. 
  9680.     write       Object is writable from this process. 
  9681.     originator  This process that originally allocated the object. 
  9682.  
  9683.  
  9684. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9685.  
  9686.  o Memory Management Control Blocks 
  9687.  
  9688.  o Handles 
  9689.  
  9690.  
  9691. ΓòÉΓòÉΓòÉ 11.6.10. Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  9692.  
  9693. Select one: 
  9694.  
  9695.  Contents of Display 
  9696.  
  9697.  Selecting 
  9698.  
  9699.  Example Output 
  9700.  
  9701.  Related Topics 
  9702.  
  9703.  
  9704. ΓòÉΓòÉΓòÉ <hidden> Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  9705.  
  9706. Select one: 
  9707.  
  9708.  Contents of Display 
  9709.  
  9710.  Selecting 
  9711.  
  9712.  Example Output 
  9713.  
  9714.  Related Topics 
  9715.  
  9716.  
  9717. ΓòÉΓòÉΓòÉ <hidden> Selecting the Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  9718.  
  9719. Virtual Page Table entries are displayed by selecting a hyperblock link from a 
  9720. vp field of the Page Frame display. 
  9721.  
  9722. They also appear a number of other displays. 
  9723.  
  9724.  
  9725. ΓòÉΓòÉΓòÉ <hidden> Example of the Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  9726.  
  9727. Virtual Page Table entry at FF40F064:
  9728.   hob=0007 refCount=0001 relPage=0001 block#=00002 flag=0410 / pf resident
  9729.  
  9730.  
  9731. ΓòÉΓòÉΓòÉ <hidden> Contents of the Virtual Page Table entry display ΓòÉΓòÉΓòÉ
  9732.  
  9733. The fields of the Virtual Page Table entry are decoded: 
  9734.  
  9735.  Term             Meaning 
  9736.  hob=oooo         The hob of the memory object that this page is a part of. 
  9737.  refCount=hhhh    The number of objects that refer to this page. 
  9738.  relPage=hhhh     The relative page number within the object. 
  9739.  block#=hhhhh     Pager disk frame or loader block number for pages which are 
  9740.                   not in RAM. The physical page number of pages which are in 
  9741.                   RAM. 
  9742.  flag=hhhh        Flags indicating the status of the virtual page. They are 
  9743.                   shown as hex and then decoded into ASCII: 
  9744.  
  9745.     busy          Page semaphore is taken. 
  9746.     wanted        Page semaphore has been requested. 
  9747.     cache         Search page cache for the page. 
  9748.     pfidle        Cross linked to an idle page frame. 
  9749.     pf            Cross linked to a page frame. 
  9750.     swapped       Has a swap file disk frame. 
  9751.     dirty         Page contents have been written to. 
  9752.     shdirty       Shadow dirty bit (for VDMs). 
  9753.     sow           Change to swappable on write. 
  9754.     resident      Cannot be moved or paged. 
  9755.     discardable   Page is discardable. 
  9756.  
  9757.  
  9758. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9759.  
  9760.  o Memory addressing 
  9761.  
  9762.  o Handles 
  9763.  
  9764.  
  9765. ΓòÉΓòÉΓòÉ 11.6.11. MTE Display ΓòÉΓòÉΓòÉ
  9766.  
  9767. Select one: 
  9768.  
  9769.  Contents of Display 
  9770.  
  9771.  Selecting 
  9772.  
  9773.  Example Output 
  9774.  
  9775.  Related Topics 
  9776.  
  9777.  
  9778. ΓòÉΓòÉΓòÉ <hidden> Selecting the MTE Display ΓòÉΓòÉΓòÉ
  9779.  
  9780. This is selected by a hyperblock link from the MTE @ column of the Modules 
  9781. display. 
  9782.  
  9783.  
  9784. ΓòÉΓòÉΓòÉ <hidden> Example of the MTE Display ΓòÉΓòÉΓòÉ
  9785.  
  9786. Resident portion of MTE (@ FEB717E8):
  9787. Use count = 1
  9788. Number of entries in Imp Mod Name Tbl = 5
  9789. Module name @ FEB71820 -> THESEUS2
  9790. Module pointers table @ FEB71808
  9791. Handle of the mte = 0345
  9792. File system number for open file = 0077
  9793. Link to next mte = FEB71B18
  9794. Link to swappable mte = FE5BA250
  9795. Signature = LX
  9796. Flags = 04903142
  9797.   Class = Program
  9798.   File Media permits discarding
  9799.   Program module
  9800.  
  9801. Swappable portion of MTE (@ FE5BA250):
  9802. Module # pages = 0000003C
  9803. Initial instruction pointer = 0001:00026634
  9804. Initial stack       pointer = 0002:0001B100
  9805. Fixup section size = 00009440
  9806. Object table offset = FE5BA305
  9807. Number of objects in module = 00000002
  9808. Object page map offset = FE5BA335
  9809. Object iterated data map offset = 00000000
  9810. Offset of Resource Table = 00000000
  9811. Number of resource entries = 00000000
  9812. Offset of resident name table = FE5BA515
  9813. Offset of Entry Table = FE5BA521
  9814. Offset of Fixup Page Table = FE5BA522
  9815. Offset of Fixup Record Table = FE5BA616
  9816. Offset of Import Module Name Table = FE5C393D
  9817. Offset of Imp Procedure Name Table = FE5C3962
  9818. Offset of Enumerated Data Pages = 00009800
  9819. Number of preload pages = 00000000
  9820. Offset of Non-resident Names Table = 00044400
  9821. Size of Non-resident Name Table = 00000042
  9822. Object # for automatic data object = 00000002
  9823. Offset of the debugging info = 00000000
  9824. The length of the debug info in bytes = 00000000
  9825. Number of instance pages in preload section = 00000000
  9826. Use for converted 16-bit modules = 00000000 (heapsize)
  9827. Full pathname = FE5BA2EC -> E:\THESEUS2\THESEUS2.EXE
  9828. Length of pathname = 0018
  9829. Used by dynamic trace = 0000
  9830. Count of threads waiting on MTE semaphore = 0
  9831. Slot number of the owner of the MTE semaphore = 0000
  9832. Pointer to preload pages = 00000000
  9833. Start of object with preload pages = FDD09000
  9834. Size  of object with preload pages = 00000000
  9835. Pointer to file cache for Dos32CacheModule= 00000000
  9836. Use for converted 16-bit modules = 0000 (alignshift)
  9837. Use for converted 16-bit modules = 0000 (stacksize)
  9838. Original flags from NE header = 0000
  9839. expver from NE header = 0000
  9840. exetype from NE header = 0000
  9841. Original other flags from NE header = 0000
  9842. Number of preload pages used = 00
  9843.  
  9844. Object Table:
  9845. Obj#   address      size   hob   sel  page map  map size     flags / flags...
  9846. 0001  00010000  0002A579  035D  000F  00000001  0000002B  80002025 / readable executable shared 32-bit
  9847. 0002  00040000  0001B100  0000  0027  0000002C  00000011  80002003 / readable writeable 32-bit
  9848.  
  9849.  
  9850. ΓòÉΓòÉΓòÉ <hidden> Contents of the MTE Display ΓòÉΓòÉΓòÉ
  9851.  
  9852. The MTE is in two sections: resident and swappable. They are displayed as 
  9853. follows: 
  9854.  
  9855. The resident portion of the MTE is as follows: 
  9856.  
  9857.  Resident portion of MTE (@ llllllll): 
  9858.            The linear address of the resident portion of the MTE. 
  9859.  Use count = i 
  9860.            Number of times a DosLoadModule function has been done for this 
  9861.            module. 
  9862.  Number of entries in Imp Mod Name Tbl = i 
  9863.            Number of entries in Import Module Name Table. 
  9864.  Module name @ llllllll -> 'name' 
  9865.            The linear address of the module name, followed by the name in 
  9866.            ASCII. (Only the linear address is in the MTE; THESEUS2 retrieves 
  9867.            the contents of the ASCII string that is pointed to.) 
  9868.  Module pointers table @ llllllll 
  9869.            Pointer to the Module Pointers Table. 
  9870.  Handle of the mte = oooo 
  9871.            The hob of this MTE. 
  9872.  File system number for open file = hhhh 
  9873.            System file number for the open .EXE or .DLL program file. 
  9874.  Link to next mte = llllllll 
  9875.            Linear address of the next MTE in the chain. 
  9876.  Link to swappable mte = llllllll 
  9877.            Linear address of the swappable portion of this MTE. 
  9878.  Signature = aa 
  9879.            The signature indicates the type of the module. 
  9880.            NE = 16-bit segmented module.  (Built by the old linker.) 
  9881.            LX = 16 or 32-bit module.  (Build by the new linker.) 
  9882.  Flags = hhhhhhhh 
  9883.            Module flags.  The relevant flags are decoded on the following 
  9884.            lines. 
  9885.  
  9886.  The swappable portion of the MTE is as follows: 
  9887.  
  9888.  Swappable portion of MTE (@ llllllll): 
  9889.            The linear address of the swappable portion of the MTE. 
  9890.  Module # pages 
  9891.            The number of pages in the module. 
  9892.  Initial instruction pointer = ssss:oooooooo 
  9893.            ssss is the module-relative segment/object number where the initial 
  9894.            entry point is located. oooooooo is the offset within the 
  9895.            segment/object of the entry point. (The module type determines 
  9896.            whether the ssss is segment or object.) This address will match the 
  9897.            address on the .MAP file produced by the linker. 
  9898.  Initial stack    pointer = ssss:oooooooo 
  9899.            ssss is the module-relative segment/object number where the initial 
  9900.            stack is located. oooooooo is the offset within the segment/object 
  9901.            of the stack. (The module type determines whether the ssss is 
  9902.            segment or object.) This address will match the address on the .MAP 
  9903.            file produced by the linker. 
  9904.  Fixup section size = hhhhhhhh 
  9905.            Number of bytes in the "fixup" section of the module. 
  9906.  Object table offset = llllllll 
  9907.            Linear address of the Object Table. 
  9908.  Number of objects in module = hhhhhhhh 
  9909.            Number of segments/objects in the module. 
  9910.  Object page map offset = llllllll 
  9911.            Linear address of the Object Page Map. 
  9912.  Object iterated data map offset = hhhhhhhh 
  9913.            ??? 
  9914.  Offset of Resource Table = llllllll 
  9915.            Linear address of the modules Resource Table. 
  9916.  Number of resource entries = hhhhhhhh 
  9917.            Number of entries in the Resource Table. 
  9918.  Offset of resident name table = llllllll 
  9919.            Linear address of the Resident Name Table. 
  9920.  Offset of Entry Table = llllllll 
  9921.            Linear address of the Entry Table. 
  9922.  Offset of Fixup Page Table = llllllll 
  9923.            Linear address of the Fixup Page Table. 
  9924.  Offset of Fixup Record Table = llllllll 
  9925.            Linear address of the Fixup Record Table. 
  9926.  Offset of Import Module Name Table = llllllll 
  9927.            Linear address of the Import Module Name Table. 
  9928.  Offset of Imp Procedure Name Table = llllllll 
  9929.            Linear address of the Import Procedure Name Table. 
  9930.  Offset of Enumerated Data Pages = hhhhhhhh 
  9931.            ??? 
  9932.  Number of preload pages = hhhhhhhh 
  9933.            Number of pages which have been marked "preload" by the linker. 
  9934.  Offset of Non-resident Names Table = hhhhhhh 
  9935.            ??? 
  9936.  Size of Non-resident Name Table = hhhhhhhh 
  9937.            ??? 
  9938.  Object # for automatic data object = ssssssss 
  9939.            Segment/object number that contains the automatic data object. 
  9940.  Offset of the debugging info = hhhhhhhh 
  9941.            ??? 
  9942.  The length of the debug info in bytes = hhhhhhhh 
  9943.            The size of the debug information in bytes. 
  9944.  Number of instance pages in preload section = hhhhhhhh 
  9945.            Number of instance pages that are to be preloaded. 
  9946.  Use for converted 16-bit modules = hhhhhhhh (heapsize) 
  9947.            Size of the heap. 
  9948.  Full pathname = llllllll -> 'file name' 
  9949.            Linear address of the fully qualified file name, followed by the 
  9950.            fully qualified file name. (Only the linear address is in the MTE; 
  9951.            THESEUS2 retrieves the contents of the ASCIIZ string that is pointed 
  9952.            to.) 
  9953.  Length of pathname = hhhh 
  9954.            Length (in bytes) of the path name. 
  9955.  Used by dynamic trace = hhhh 
  9956.            ??? 
  9957.  Count of threads waiting on MTE semaphore = i 
  9958.            ??? 
  9959.  Slot number of the owner of the MTE semaphore = hhhh 
  9960.            ??? 
  9961.  Pointer to preload pages = hhhhhhhh 
  9962.            ??? 
  9963.  Start of object with preload pages = hhhhhhhh 
  9964.            ??? 
  9965.  Size  of object with preload pages = hhhhhhhh 
  9966.            ??? 
  9967.  Pointer to file cache for Dos32CacheModule= hhhhhhhh 
  9968.            ??? 
  9969.  Use for converted 16-bit modules = hhhh (alignshift) 
  9970.            ??? 
  9971.  Use for converted 16-bit modules = hhhh (stacksize) 
  9972.            ??? 
  9973.  Original flags from NE header = hhhh 
  9974.            ??? 
  9975.  expver from NE header = hhhh 
  9976.            ??? 
  9977.  exetype from NE header = hhhh 
  9978.            ??? 
  9979.  Original other flags from NE header = hhhh 
  9980.            ??? 
  9981.  Number of preload pages used = hh 
  9982.            ??? 
  9983.  
  9984.  Following this is either a Segment Table or Object Table, depending on the 
  9985.  module type. 
  9986.  
  9987.  Each line of an Object Table contains the following: 
  9988.  
  9989.  Obj#        Module relative number of the object. This will match the linker's 
  9990.              output. 
  9991.  address     Linear address of the object in memory. 
  9992.  size        Size of the object in bytes. 
  9993.  hob         The hob assigned to the object. 
  9994.  sel         Selector in the LDT assigned to this object. (This is only for 
  9995.              16-bit compatibility.) 
  9996.  page map    ??? 
  9997.  map size    ??? 
  9998.  flags       Flags for this object.  They are decoded to the right. 
  9999.  
  10000.  Each line of a Segment Table contains the following: 
  10001.  
  10002.  Seg#        Module relative number of the segment. This will match the 
  10003.              linker's output. 
  10004.  file offset Location of the segment in the file on disk. The interpretation of 
  10005.              this depends on the "file granularity" specified to the linker. 
  10006.  file size   The size, in bytes, of the segment within the file. 
  10007.  flag        Flags for this segment.  They are decoded to the right. 
  10008.  ram size    The size, in bytes, of the segment after being loaded into RAM. 
  10009.  hob         The hob assigned to the segment. 
  10010.  sel         Selector in the LDT assigned to this object. 
  10011.  fixups      ??? 
  10012.  
  10013.  
  10014. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10015.  
  10016.  o Memory Management Control Blocks 
  10017.  
  10018.  o Memory addressing 
  10019.  
  10020.  
  10021. ΓòÉΓòÉΓòÉ 11.6.12. TCB Display ΓòÉΓòÉΓòÉ
  10022.  
  10023. Select one: 
  10024.  
  10025.  Contents of Display 
  10026.  
  10027.  Selecting 
  10028.  
  10029.  Example Output 
  10030.  
  10031.  Related Topics 
  10032.  
  10033.  
  10034. ΓòÉΓòÉΓòÉ <hidden> Selecting the TCB Display ΓòÉΓòÉΓòÉ
  10035.  
  10036. This is selected by a hyperblock link from the TCB column of a display. 
  10037.  
  10038.  
  10039. ΓòÉΓòÉΓòÉ <hidden> Example of the TCB Display ΓòÉΓòÉΓòÉ
  10040.  
  10041. Thread Control Block at FD423E78:
  10042.  
  10043. TCB Linkage Information:
  10044. TID = 0001, Thread slot number = 0028
  10045. Forced action bit vector = 00000000
  10046. PTDA @ 7D3234E0
  10047. TSD @ 7D145000, TIB @ 00060030
  10048. Forward link to next (active) TCB = 00000000
  10049.  
  10050. Dos32CreateThread stack parameters:
  10051. Virtual   size of stack object = 00000000
  10052. Committed size of stack object = 00000000
  10053. Virtual   base of stack object = FFFFFFFF
  10054. Libi load data area link head    @ 00000000
  10055. Libi load data area link current @ 00000000
  10056. Libi load data area link free    @ 00000000
  10057. Stack frame type = FFF3CCCC
  10058. Stack frame base pointer = 7D145F3C
  10059. Local context hook head = FD423EB0, 00000000
  10060.  
  10061. Information needed for context switching:
  10062. KStack page 0 of TCB  = 0065D203
  10063. KStack page 1 of TCB  = 0063C203
  10064. KStack TSD page       = 005AA203
  10065. KStack page 0 of PTDA = 00000000
  10066. KStack page 1 of PTDA = 00000000
  10067. KStack page 2 of PTDA = 00623203
  10068. SS-relative offset of Current TCB = 00009288
  10069. SS-relative offset of Current TSD = 00004410
  10070. stack-to-flat TCB conversion value = FD41ABF0
  10071. stack-to-flat TSD conversion value = 7D140BF0
  10072.  
  10073. Variables used in the file system:
  10074. User's I/O transfer address = 03F05E70
  10075. Position of first sector accessed within the file = 00000000
  10076. Pointer to SFT we're working with = 00000000
  10077. Number of valid (previously written) sectors = 0000005E
  10078. Redirector TCB (Used by LANMAN) = 05C10000
  10079. Process ID for file sharing checks = 0000
  10080. User    ID for file sharing checks = 0000
  10081. non-zero ==> no redirection = 00
  10082. see SetAttrib/file.asm = 00
  10083. JFN flag bits for current file handle = 1C
  10084. Allowed I 24 answers (see allowed_) = 00
  10085. Fields to support opportunistic locks.  These are set by the server.
  10086.     Server's per file cookie = 00120000
  10087.     Whether server wants oplock, etc. = FFFFEF4F
  10088. Variables used by the FAT file system.  These are specific for the FAT
  10089.  file system and are not used for any IFS.
  10090.     Currently assigned buffer = FFFF0000
  10091.     Handle of current VPB = 0005
  10092.     TCBNextAdd = 001D
  10093.     Position of first byte within sector = 0000
  10094.     TCBClusNum = 0000
  10095.     TCBLastPos = 0101
  10096.     Number of bytes in 1st sector = 0000
  10097.     # of bytes in last sector = 003E
  10098.     Number of whole sectors = 0000
  10099.     Position of first sector within cluster = FFFFFFF4
  10100. How to handle a HardError = 02
  10101. Action response from user on HardError = 01
  10102. NZ if TCBLockHndl is valid = 00
  10103. Lock Handle of user mem = D9 02 0C 06 D4 50 30 00 40 FF 00 00
  10104. Address of current CDS = 000051FA
  10105. Address of current FSC = 000051F4
  10106. NZ if user did FAIL on I 24 = 0000
  10107.  
  10108. 16bit addr of the ramsem blocked upon = 072306E0
  10109. Debugger display address fo ksems = FFFFFFFF
  10110.  
  10111. Per-thread NPX Information:
  10112. buffer @ 7CAD5EA0
  10113.  
  10114. TKWaitThread fields:
  10115. Next waiting TCB = 00000000
  10116. Threads waiting for me to die = 00000000
  10117.  
  10118. Scheduler fields:
  10119. Scheduler queue location (actual) = 05
  10120. Current scheduler state (desired) = 05
  10121. TKSleep/TKWakeup flags = 00
  10122. Window Boost count = 01
  10123. Priority Class (user) = 02
  10124. Priority Level (user) = 00
  10125. Priority Class modifier bits = 60
  10126. Misc. Scheduler flags = 00
  10127. Calculated Priority = 0500
  10128. Minimum Scheduling priority = 0000
  10129. Kernel Boost Lock nesting count = 00000000
  10130. Next     priority queue in chain = FD423E78
  10131. Previous priority queue in chain = FD423E78
  10132. Higher priority thread = FD423E78
  10133. Lower  priority thread = FD423E78
  10134. Next     same-priority thread = FD423E78
  10135. Previous same-priority thread = FD423E78
  10136. TKQueryWakeup TCB list = 00000000
  10137. Sleep ID this TCB is sleeping on = FFFE0064
  10138. Timeout/Starvation Timeout element = ????
  10139. Used by the loader (TCBCheckedSig) = 01
  10140.  
  10141. Per-thread Swapper Information:
  10142. Status of swapping = 00
  10143.  
  10144. Info about nesting level in FSH_DoVolIO:
  10145. Nesting level of FSH_DoVolIO = 00
  10146.  
  10147. Device I/O fields:
  10148. Flag to indicate if request pkt in use = 00
  10149. I/O request packet for thread = 01000000
  10150.  
  10151.  
  10152. ΓòÉΓòÉΓòÉ <hidden> Contents of the TCB Display ΓòÉΓòÉΓòÉ
  10153.  
  10154. No additional explanation is available. 
  10155.  
  10156.  
  10157. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10158.  
  10159.  o Memory Management Control Blocks 
  10160.  
  10161.  o Memory addressing 
  10162.  
  10163.  
  10164. ΓòÉΓòÉΓòÉ 11.6.13. Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  10165.  
  10166. Select one: 
  10167.  
  10168.  Contents of Display 
  10169.  
  10170.  Selecting 
  10171.  
  10172.  Example Output 
  10173.  
  10174.  Related Topics 
  10175.  
  10176.  
  10177. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  10178.  
  10179. This is selected by a hyperblock link from the accessed - yes column of the 
  10180. Detail of Working Set (by Object) display. 
  10181.  
  10182.  
  10183. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  10184.  
  10185. Details of Working Set for Object with hob = 0429, Process = 'THESEUS2':
  10186. It is (shared) object # 0001 of module THESEUS2.
  10187.   linear   physical  time   status
  10188. 00010000   00639000     1   in Working Set
  10189. 00011000   00060000         not in Working Set
  10190. 00012000   003BF000     1   in Working Set
  10191. 00013000   0047E000     1   in Working Set
  10192. 00014000   00058000     1   in Working Set
  10193. 00015000   00895000     1   in Working Set
  10194. 00016000   0070B000     3   in Working Set
  10195. 00017000   001F6000     1   in Working Set
  10196. 00018000   006B0000         not in Working Set
  10197. 00019000   00096000         not in Working Set
  10198. 0001A000   00072000         not in Working Set
  10199. 0001B000   003BC000         not in Working Set
  10200. 0001C000   0048A000         not in Working Set
  10201. 0001D000                    not in memory
  10202. 0001E000                    not in memory
  10203. 0001F000                    not in memory
  10204. 00020000                    not in memory
  10205. 00021000   005C3000     1   in Working Set
  10206. 00022000                    not in memory
  10207. 00023000                    not in memory
  10208.   linear   physical  time   status
  10209. 00024000                    not in memory
  10210. 00025000   0043D000         not in Working Set
  10211. 00026000                    not in memory
  10212. 00027000                    not in memory
  10213. 00028000   00488000     1   in Working Set
  10214. 00029000   0024E000     1   in Working Set
  10215. 0002A000   002E3000     1   in Working Set
  10216. 0002B000   002D9000         not in Working Set
  10217. 0002C000   005F0000         not in Working Set
  10218. 0002D000   00186000         not in Working Set
  10219. 0002E000   005CD000     1   in Working Set
  10220. 0002F000                    not in memory
  10221. 00030000   00444000         not in Working Set
  10222. 00031000   00363000         not in Working Set
  10223. 00032000   0004B000     1   in Working Set
  10224. 00033000   00487000     1   in Working Set
  10225. 00034000   00474000     1   in Working Set
  10226. 00035000   00340000         not in Working Set
  10227. 00036000   00190000     1   in Working Set
  10228. 00037000   0018E000     1   in Working Set
  10229.   linear   physical  time   status
  10230. 00038000   009E7000     1   in Working Set
  10231. 00039000   0034D000     1   in Working Set
  10232. 0003A000   004C3000     1   in Working Set
  10233. 0003B000   00699000         not in Working Set
  10234. 0003C000   009F2000     1   in Working Set
  10235.  
  10236.  
  10237. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  10238.  
  10239. One line is displayed for each committed page within the object: 
  10240.  
  10241.  Column     Meaning 
  10242.  linear     The linear address of the page. 
  10243.  physical   The physical address of the page. 
  10244.  time       The number of intervals since the page was last accessed. 
  10245.  status     The status of the page relative to the working set: 
  10246.  
  10247.     in Working Set        The page was in memory and was accessed sometime 
  10248.                           within the working set interval. 
  10249.     not in Working Set    The page was in memory but was last accessed outside 
  10250.                           the working set interval. 
  10251.     not in memory         This is a committed page that was not in RAM during 
  10252.                           the run. 
  10253.  
  10254.  
  10255. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10256.  
  10257.  o Memory analysis 
  10258.  
  10259.  o Memory addressing 
  10260.  
  10261.  
  10262. ΓòÉΓòÉΓòÉ 11.6.14. SFT Entry Display ΓòÉΓòÉΓòÉ
  10263.  
  10264. Select one: 
  10265.  
  10266.  Contents of Display 
  10267.  
  10268.  Selecting 
  10269.  
  10270.  Example Output 
  10271.  
  10272.  Related Topics 
  10273.  
  10274.  
  10275. ΓòÉΓòÉΓòÉ <hidden> Selecting the SFT Entry Display ΓòÉΓòÉΓòÉ
  10276.  
  10277. This is selected by a hyperblock link of the SFT address field on the Open 
  10278. Files display. 
  10279.  
  10280.  
  10281. ΓòÉΓòÉΓòÉ <hidden> Example of the SFT Entry Display ΓòÉΓòÉΓòÉ
  10282.  
  10283. System File Table Entry located at 03F8:30A6:
  10284.  
  10285. Base portion of the SFT entry:
  10286.   Reference count = 1
  10287.   User count = 0
  10288.   Flag word 1 = 0040 / local file 40
  10289.   Flag word 2 = 0000 /
  10290.   Device pointer = 00000012
  10291.   File System Control (FSC) block @ 0000FF40
  10292.   'cookie' = 00000000
  10293.   Next in chain = 0000:0000
  10294.   Master File Table (MFT) entry @ FEB62FA0
  10295.  
  10296. File system dependent portion of the SFT:
  10297.  
  10298. File system independent portion of the SFT:
  10299.   Access mode = 00A0
  10300.   Additional openmode bits for DosOpen2 = 0000
  10301.   handle of volume = 0012
  10302.   Creation time of file = 0000
  10303.   Creation date of file = 0000
  10304.   Time of last access of file 0000
  10305.   Date of last access of file 0000
  10306.   Time of last modification of file = 5C4A
  10307.   Date of last modification of file = 1913
  10308.   Size associated with file = 0003910D
  10309.   Read/Write pointer or LRU count for FCBs = 000060A1
  10310.   User ID = 0000
  10311.   Process ID = 00FF
  10312.   Process Data Block = 0000
  10313.   SFN of this sf_entry = 0062
  10314.   update time stamp flags = 00
  10315.   file/device/named-pipe/FCB = 0000
  10316.   performance counter data block pointer = 00000000
  10317.   DOS attributes of file(sys,hid,r/o,arch = 20
  10318.  
  10319. Used for spooling:
  10320.   16 bit offset to first pending LOCK record = 0000
  10321.   SFN of named pipe for spooled files = 0000
  10322.   Current codepage (font) for data in file = 0
  10323.  
  10324.  
  10325. ΓòÉΓòÉΓòÉ <hidden> Contents of the SFT Entry Display ΓòÉΓòÉΓòÉ
  10326.  
  10327. No additional explanation is available. 
  10328.  
  10329.  
  10330. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10331.  
  10332.  o Memory addressing 
  10333.  
  10334.  
  10335. ΓòÉΓòÉΓòÉ 11.6.15. Detailed Memory Assignment Information ΓòÉΓòÉΓòÉ
  10336.  
  10337. Select one: 
  10338.  
  10339.  Contents of Display 
  10340.  
  10341.  Selecting 
  10342.  
  10343.  Example Output 
  10344.  
  10345.  Related Topics 
  10346.  
  10347.  
  10348. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detailed Memory Assignment Information Display ΓòÉΓòÉΓòÉ
  10349.  
  10350. This is selected by a hyperblock link of the RAM amount field on the Free, 
  10351. Idle, and Locked Memory display or the RAM Usage by Process display. 
  10352.  
  10353.  
  10354. ΓòÉΓòÉΓòÉ <hidden> Example of the Detailed Memory Assignment Information Display ΓòÉΓòÉΓòÉ
  10355.  
  10356. There are two different formats of the information displayed, one for Locked 
  10357. memory and one for all the other types. 
  10358.  
  10359. The detail of locked memory is: 
  10360.  
  10361. Detail memory assignment information, PID = 0000, Process = system:
  10362.  giving detail about Long  Term Locked memory:
  10363. 0012F000 is Long Term Locked, count = 1.
  10364. 004EB000 is Long Term Locked, count = 1.
  10365. 00510000 is Long Term Locked, count = 5.
  10366. 00670000 is Long Term Locked, count = 1.
  10367. ┬╖┬╖┬╖
  10368.  
  10369. The detail of other type memory is: 
  10370.  
  10371. Detail memory assignment information, PID = 0000, Process = system,
  10372.  giving detail about IDLE memory:
  10373. 0009C000 is assigned as IDLE
  10374. 001D1000 is assigned as IDLE
  10375. 001E8000 is assigned as IDLE
  10376. 001ED000 is assigned as IDLE, page is dirty
  10377. ┬╖┬╖┬╖
  10378.  
  10379.  
  10380. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detailed Memory Assignment Information Display ΓòÉΓòÉΓòÉ
  10381.  
  10382. The free and idle detail lists are presented in the order they are linked into 
  10383. the chain. If an idle page is dirty, it is indicated as such. 
  10384.  
  10385. The locked detail lists are presented in physical page address order. The lock 
  10386. count from the Page Frame Table is given. This count specifies the number of 
  10387. times that Device Drivers have locked the particular page. 
  10388.  
  10389.  
  10390. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10391.  
  10392.  o Memory addressing 
  10393.  
  10394.  o Physical Memory States 
  10395.  
  10396.  
  10397. ΓòÉΓòÉΓòÉ 11.6.16. Detail of Nonswappable Memory ΓòÉΓòÉΓòÉ
  10398.  
  10399. Select one: 
  10400.  
  10401.  Contents of Display 
  10402.  
  10403.  Selecting 
  10404.  
  10405.  Example Output 
  10406.  
  10407.  Related Topics 
  10408.  
  10409.  
  10410. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail of Nonswappable Memory Display ΓòÉΓòÉΓòÉ
  10411.  
  10412. When you select the link from the nonswappable memory bytes column of the 
  10413. Nonswappable Memory display, detail about the specified Nonswappable memory 
  10414. group will be displayed. 
  10415.  
  10416.  
  10417. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail of Nonswappable Memory Display ΓòÉΓòÉΓòÉ
  10418.  
  10419. This is from a freshly booted ThinkPad 720C with 16M RAM and 160M hardfile, 
  10420. running OS/2 Warp, using the "Easy Installation" option. 
  10421.  
  10422. Detail of Nonswappable Memory 'Apps & DLLs':
  10423. Following entries are from 'Private Arenas':
  10424.  
  10425. Following entries are from the 'Shared Arena':
  10426.   Object        Resident    Locked         Process
  10427.  address   har    memory    memory   PID      name  Description
  10428. 13A90000  0236  00000000  00003000  0002  PMSHL32   IBMDEV32 #0001 (shared data)
  10429. 13AA0000  0235  00000000  00001000  0002  PMSHL32   IBMDEV32 #0002 (shared data)
  10430. 1B780000  0233  00000000  00001000  0002  PMSHL32   IBMDEV32 #0004 (shared code)
  10431. 1BD00000  01C3  00000000  00002000  0002  PMSHL32   PMMERGE  #0004 (shared code)
  10432. 1BDF0000  01C2  00000000  00002000  0002  PMSHL32   PMMERGE  #0005 (shared data)
  10433.  
  10434. Detail of Nonswappable Memory 'Process overhead':
  10435.   Object        Resident    Locked         Process
  10436.  address   har    memory    memory   PID      name  Description
  10437. 1BFE0000  0073  00000000  00001000  0002  PMSHL32   infoseg (local or global) (owner)
  10438. 1BFF0000  0071  00000000  00001000  0002  PMSHL32   infoseg (local or global) (owner)
  10439. A9447000  035D  00004000  00000000  0006  THESEUS2  SEL LDT (owner)
  10440. A9627000  01AE  00000000  00001000  0002  PMSHL32   SEL LDT (owner)
  10441. ABCD9000  008A  00004000  00000000  0000  system    TK TSD (owner)
  10442. ABDD8000  0089  00006000  00000000  0000  system    TK TCB (owner)
  10443. ABDF8000  0088  00002000  00000000  0000  system    TK PTDA (owner)
  10444. AC800000  0028  00030000  00000000  0000  system    PG Compat. region page table (owner)
  10445. FF150000  001E  00005000  00000000  0000  system    PG Compat. region page table (owner)
  10446.  
  10447. Now the overhead for each process:
  10448.     PTDA   Process      PTDA       TCB       LDT Page_Table
  10449.   linear      name      size      size      size       size
  10450. FFE4AA0C  sysinit   000005F4  00000B18  00000000   00009000
  10451. ABDF8020  PMSHL32   000005F4  00002A28  00005000   0000A000
  10452. ABDF8614  HARDERR   000005F4  000006A8  00000000   00006000
  10453. ABDF8C08  PMSPOOL   000005F4  000008E0  00000000   00000000
  10454. ABDF91FC  PMSHL32   000005F4  00001AA0  00000000   0000B000
  10455. ABDF97F0  THESEUS2  000005F4  00000238  00000000   0000D000
  10456.                     ========  ========  ========   ========
  10457. Totals              000023B8  000061A0  00005000   00031000
  10458.  
  10459. Detail of Nonswappable Memory 'File system':
  10460.   Object        Resident    Locked
  10461.  address   har    memory    memory  Description
  10462. AB244000  00B1  00042000  00000000  file system buffer (owner)
  10463. AB286000  0076  0018D000  00000000  file system buffer (owner)
  10464. ABED7000  0077  00002000  00000000  Named pipe NP segment (owner)
  10465. ABEE7000  0078  00001000  00000000  record lock record owner (owner)
  10466. ABEF7000  007A  00003000  00000000  system file table (owner)
  10467. ABF07000  0079  00001000  00000000  system file table (owner)
  10468. ABF20000  0339  00003000  00000000  FindNotify global segment (owner)
  10469.  
  10470.  
  10471. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail of Nonswappable Memory Display ΓòÉΓòÉΓòÉ
  10472.  
  10473. The information presented on the Detail of Nonswappable Memory display is as 
  10474. follows: 
  10475.  
  10476.   1. For the Apps & DLLs detail, the private arena memory object are presented, 
  10477.      followed by the shared arena memory objects. 
  10478.   2. For the Process overhead detail, the memory objects are presented in 
  10479.      linear address order and then each process is shown with its 
  10480.      resident/locked memory usage. 
  10481.   3. For all the other details, the memory objects are presented in linear 
  10482.      address order. 
  10483.  One line is displayed for each memory object: 
  10484.  
  10485.  Column            Meaning 
  10486.  Object address    The linear address of the start of the memory object. 
  10487.  har               The har of the arena record associated with this object 
  10488.                    record. 
  10489.  Resident memory   The number of bytes in hexadecimal of memory marked resident 
  10490.                    for this memory object. 
  10491.  Locked memory     The number of bytes in hexadecimal of memory marked locked 
  10492.                    for this memory object. 
  10493.  PID               The PID of the process which owns this memory object. 
  10494.  Process name      The name of the process which owns this memory object. 
  10495.  Description       A description in English of the memory object. 
  10496.  
  10497.  For the "Process overhead": 
  10498.  
  10499.  Column            Meaning 
  10500.  PTDA linear       The linear address of the PTDA. 
  10501.  Process name      The name of the process. 
  10502.  PTDA size         The amount of RAM consumed by the PTDA in hexadecimal bytes. 
  10503.                    PTDas are always resident. 
  10504.  TCB size          The amount of RAM consumed by the TCBs in hexadecimal bytes. 
  10505.                    TCBs are always resident. 
  10506.  LDT size          The amount of RAM consumed by the resident/locked portion of 
  10507.                    the LDT in hexadecimal bytes. 
  10508.  Page_Table size   The amount of RAM consumed by the resident/locked portion of 
  10509.                    the Page Tables in hexadecimal bytes. 
  10510.  
  10511.  
  10512. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10513.  
  10514.  o Memory addressing 
  10515.  
  10516.  o Nonswappable Memory display 
  10517.  
  10518.  
  10519. ΓòÉΓòÉΓòÉ 11.6.17. Strip List ΓòÉΓòÉΓòÉ
  10520.  
  10521. Select one: 
  10522.  
  10523.  Contents of Display 
  10524.  
  10525.  Selecting 
  10526.  
  10527.  Example Output 
  10528.  
  10529.  Related Topics 
  10530.  
  10531.  
  10532. ΓòÉΓòÉΓòÉ <hidden> Selecting the Strip List Display ΓòÉΓòÉΓòÉ
  10533.  
  10534. This is selected by double clicking mouse button 1 after selecting a color bar 
  10535. on the Last Referenced Graphic display. It shows the memory objects surrounding 
  10536. the selected bar. 
  10537.  
  10538.  
  10539. ΓòÉΓòÉΓòÉ <hidden> Example of the Strip List Display ΓòÉΓòÉΓòÉ
  10540.  
  10541. Memory Objects around 00500000 for process = 'THESEUS2':
  10542.   Linear    Size    Description
  10543.     This memory object includes the preceeding bar.
  10544. 000E0000    4096K   THESEUS2 allocated it
  10545. 004E0000      64K   THESEUS2 allocated it
  10546. 004F0000      64K   HELPMGR  allocated it
  10547.     This memory object starts at the requested bar.
  10548. 00500000      64K   HELPMGR  allocated it
  10549. 00510000     256K   HELPMGR  allocated it
  10550. 00550000     256K   HELPMGR  allocated it
  10551. 00590000      64K   PMWIN    allocated it
  10552. 005A0000      64K   PMGPI    allocated it
  10553. 005B0000      64K   PMGPI    allocated it
  10554. 005C0000     256K   PMGPI    allocated it
  10555.     This memory object starts at the following bar.
  10556. 00600000      64K   PMGPI    allocated it
  10557. 00610000     256K   PMGPI    allocated it
  10558. 00650000     256K   THESEUS2 allocated it
  10559. 00690000     384K   THESEUS2 allocated it
  10560. 006F0000    2752K   THESEUS2 allocated it
  10561.  
  10562.  
  10563. ΓòÉΓòÉΓòÉ <hidden> Contents of the Strip List Display ΓòÉΓòÉΓòÉ
  10564.  
  10565. There is one line displayed for each memory object surrounding the requested 
  10566. bar: 
  10567.  
  10568.  Column          Meaning 
  10569.  Linear          The linear address of the memory object. 
  10570.  Size            The size in decimal kilobytes of the memory object. 
  10571.  Description     A description in English of the memory object. 
  10572.  
  10573.  
  10574. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10575.  
  10576.  o Memory addressing 
  10577.  
  10578.  o Last Referenced Graphic 
  10579.  
  10580.  
  10581. ΓòÉΓòÉΓòÉ 11.7. Common Elements ΓòÉΓòÉΓòÉ
  10582.  
  10583. This section describes items common to several of the displays. 
  10584.  
  10585. Displays are: 
  10586.  
  10587.  Descriptor Table Entry 
  10588.            Displays fields of the entries in the GDT, LDT, and IDT displays. 
  10589.  Page Table Entry/Page Directory Entry 
  10590.            Displays fields of the entries in the Page Table Entry/Page 
  10591.            Directory Entry displays. 
  10592.  
  10593.  
  10594. ΓòÉΓòÉΓòÉ 11.7.1. Descriptor Table Entry ΓòÉΓòÉΓòÉ
  10595.  
  10596. The fields of the Descriptor Table Entry are decoded. (See the Intel 80386 
  10597. Programmer's Reference Manual for details about each field.) 
  10598.  
  10599.  Term           Meaning 
  10600.  Table          This is either GDT, LDT, Trap, or Int. 
  10601.  (number)       For GDT and LDT, this is the selector referring to this entry. 
  10602.                 For Trap, this is the trap number referring to this entry. 
  10603.                 For Int, this is the interrupt number referring to this entry. 
  10604.  Type           Type of selector: 
  10605.  
  10606.     Code           Code segment 
  10607.     Data           Data segment 
  10608.     ATSS16         Available Task State Segment - 286 mode 
  10609.     ATSS32         Available Task State Segment - 386 mode 
  10610.     BTSS16         Busy Task State Segment - 286 mode 
  10611.     BTSS32         Busy Task State Segment - 386 mode 
  10612.     LDT            Selector that points to an LDT 
  10613.     CallG          Call Gate - 286 mode 
  10614.     CallG32        Call Gate - 386 mode 
  10615.     TaskG          Task Gate 
  10616.     IntG           Interrupt Gate - 286 mode 
  10617.     IntG32         Interrupt Gate - 386 mode 
  10618.     TrapG          Trap Gate - 286 mode 
  10619.     TrapG32        Trap Gate - 386 mode. 
  10620.  Base           Base address (linear) of the segment. 
  10621.  Limit          Length (-1) of the segment. (For "expand up" segments, this is 
  10622.                 the largest offset that may be used. For "expand down" 
  10623.                 segments, this is the smallest offset that may be used.) 
  10624.  DPL            Descriptor Privilege Level (2 bits). 
  10625.  CF             Code segment is "Conforming" (0=not conforming, 1=conforming). 
  10626.  R              Code segment is "Readable" (0=not readable, 1=readable). 
  10627.  ED             Data segment is "Expand Down" (0=expand up, 1=expand down). 
  10628.  W              Data segment is "Writable" (0=not writable, 1=writable). 
  10629.  A              Segment has been Accessed (0=not accessed, 1=accessed) 
  10630.  P              Segment is Present (0=not present, 1=present). 
  10631.  G              Granularity of limit value (0=byte (64K segment), 1=page (4G 
  10632.                 segment)). 
  10633.  D              Code segment default operand size (0=16-bit, 1=32-bit). 
  10634.  B              Data segment default size (0=16-bit, 1=32-bit). 
  10635.  Selector       Selector of gate's target segment. 
  10636.  Offset         Offset within selector of target code. 
  10637.  Word Count     Number of words on stack to be copied. 
  10638.  Alias          The selector is an "alias". 
  10639.  
  10640.  
  10641. ΓòÉΓòÉΓòÉ 11.7.2. Page Table Entry/Page Directory Entry ΓòÉΓòÉΓòÉ
  10642.  
  10643. The fields of the Page Table Entry or Page Directory Entry are decoded. (See 
  10644. the Intel 80386 Programmer's Reference Manual for details about each field.) 
  10645.  
  10646.  Term           Meaning 
  10647.  *              The asterisk (*) in the first column indicates a PDE. 
  10648.  Linear         The linear address associated with the entry. 
  10649.  Physical       The physical address of the page in memory. (The page is 
  10650.                 present.) 
  10651.  Invalid page   The entry indicates that there is no committed page for this 
  10652.                 address. 
  10653.  Guard          The page is a "guard page". 
  10654.  FrameId        The index into the Virtual Page Table for the page. (The page 
  10655.                 is not present.) 
  10656.  D              The page is "Dirty" (0=clean, 1=dirty). 
  10657.  A              The page has been "Accessed" (0=not accessed, 1=accessed). 
  10658.  User           The page is a "User page". The page can be accessed from any 
  10659.                 protection ring. 
  10660.  Super          The page is a "Supervisor page". The page can only be accessed 
  10661.                 from ring 0. 
  10662.  R/W            The page can be written. 
  10663.  R/O            The page can only be read. 
  10664.  P              The page is "Present" (0=not present, 1=present). 
  10665.  Resident       The page is not to be paged out nor discarded. 
  10666.  UVirt          The page is a UVirt page. 
  10667.  Cache_disabled ??? 
  10668.  Cache_write-through ??? 
  10669.  
  10670.  
  10671. ΓòÉΓòÉΓòÉ 12. Application Programming Interface ΓòÉΓòÉΓòÉ
  10672.  
  10673. THESEUS2 provides an Application Programming Interface (API) for certain of its 
  10674. functions. These are provided with the THESEUS0.DLL file. 
  10675.  
  10676. This file should have been included in SPM/2's "Distributed Feature" 
  10677. installation list, but was inadvertently omitted. You can copy this file onto 
  10678. machines with the SPM/2 "Distributed Feature" if you like. 
  10679.  
  10680. CAUTION:
  10681. These functions should only be used by a single thread of an application. They 
  10682. use the Microsoft** compiler's DLL library and it is probably not compatible 
  10683. with CSet/2*'s multi-thread environment. 
  10684.  
  10685. The functions provided by THESEUS0.DLL can be accessed from either a 'C' 
  10686. program or REXX. 
  10687.  
  10688.  
  10689. ΓòÉΓòÉΓòÉ 12.1. Restriction ΓòÉΓòÉΓòÉ
  10690.  
  10691. You may not distribute the THESEUS0.DLL program with any product you develop 
  10692. unless you have a Software Technology License Agreement with IBM for the 
  10693. THESEUS0.DLL program. This does not mean that you cannot copy this file onto 
  10694. machines which have had the SPM/2 "Distributed Feature" installed on them. 
  10695.  
  10696.  
  10697. ΓòÉΓòÉΓòÉ 12.2. 'C' Application Programming Interface ΓòÉΓòÉΓòÉ
  10698.  
  10699. The functions provided by THESEUS0.DLL are divided into the following 
  10700. categories: 
  10701.  
  10702.  Error Handling, Initialization/Termination, and Handle Management 
  10703.            Functions to handle errors, cause THESEUS0.DLL to initialize and 
  10704.            terminate and THESEUS0 handle management. 
  10705.  Free Memory, Swapper, and Process Functions 
  10706.            Functions to determine information about the system as a whole. 
  10707.  Working Set Functions 
  10708.            Functions to perform working set analysis. 
  10709.  
  10710.  Note:  THESEUS0.DLL has 32-bit interfaces ONLY. If you want to interface to it 
  10711.  from a 16-bit compiler, then you must provide the THUNKS yourself. 
  10712.  
  10713.  
  10714. ΓòÉΓòÉΓòÉ 12.2.1. Error Handling, Initialization/Termination, and Handle Management ΓòÉΓòÉΓòÉ
  10715.  
  10716. These functions apply to all the APIs. 
  10717.  
  10718. Error handling function: 
  10719.  
  10720.  error handler        Specify the error handler provided by the user. 
  10721.  
  10722.  Initialization/termination functions: 
  10723.  
  10724.  T2Initialize         Initialize THESEUS0.DLL for use. 
  10725.  T2Terminate          Terminate the use of THESEUS0.DLL. 
  10726.  
  10727.  Handle management functions: 
  10728.  
  10729.  T2GetHandle0         Get an instance handle. 
  10730.  T2ReleaseHandle0     Release an instance handle. 
  10731.  
  10732.  
  10733. ΓòÉΓòÉΓòÉ 12.2.1.1. error handler ΓòÉΓòÉΓòÉ
  10734.  
  10735. Select an item: 
  10736.  
  10737.  Function Syntax 
  10738.  
  10739.  Parameters 
  10740.  
  10741.  Example 
  10742.  
  10743.  Related Functions 
  10744.  
  10745.  
  10746. ΓòÉΓòÉΓòÉ <hidden> Syntax - error handler ΓòÉΓòÉΓòÉ
  10747.  
  10748. The error handler is provided by the user to format and display errors 
  10749. generated by the routines in THESEUS0.DLL. It must be provided by the user 
  10750. program because the lower level routines do not know what the output 
  10751. environment is. 
  10752.  
  10753. #include "THESEUS0.h"
  10754.  
  10755. VOID EXPENTRY error_handler0( T2HANDLE0 t2handle0,
  10756.                               ULONG     error_code,
  10757.                               ULONG     p1,
  10758.                               ULONG     p2)
  10759. {
  10760.   /* error handler code */
  10761. }
  10762.  
  10763.  
  10764. ΓòÉΓòÉΓòÉ <hidden> Parameters - error handler ΓòÉΓòÉΓòÉ
  10765.  
  10766.  t2handle0 (T2HANDLE0) - input 
  10767.            The instance handle that was being used by the lower level routine 
  10768.            when the error was detected. This is given to the error routine in 
  10769.            case the output is handle specific. 
  10770.  
  10771.  error_code (ULONG) - input 
  10772.            The values of the error_code and meanings of the other two 
  10773.            parameters are: 
  10774.  
  10775.                       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10776.                       Γöéerror_codeΓöép1    Γöép2    Γöéexplanation                      Γöé
  10777.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10778.                       Γöé1         ΓöélinearΓöén/a   ΓöéThe starting address (linear) hasΓöé
  10779.                       Γöé          Γöé      Γöé      Γöéno page table.                   Γöé
  10780.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10781.                       Γöé2         ΓöélinearΓöélengthΓöéThe ending address               Γöé
  10782.                       Γöé          Γöé      Γöé      Γöé(linear+length-1) has no page    Γöé
  10783.                       Γöé          Γöé      Γöé      Γöétable.                           Γöé
  10784.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10785.                       Γöé3         ΓöélinearΓöén/a   ΓöéThe page at the starting address Γöé
  10786.                       Γöé          Γöé      Γöé      Γöéis not present.                  Γöé
  10787.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10788.                       Γöé4         ΓöélinearΓöélengthΓöéThe page at the ending address   Γöé
  10789.                       Γöé          Γöé      Γöé      Γöé(linear+length-1) is not present.Γöé
  10790.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10791.                       Γöé5         ΓöélinearΓöélengthΓöéThe address+length is greater    Γöé
  10792.                       Γöé          Γöé      Γöé      Γöéthan 32 bits.                    Γöé
  10793.                       Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  10794.                       Γöé6         ΓöélinearΓöén/a   ΓöéThe header for the System Arena  Γöé
  10795.                       Γöé          Γöé      Γöé      Γöéwas not located. The value found Γöé
  10796.                       Γöé          Γöé      Γöé      Γöéis returned, but is not valid.   Γöé
  10797.                       Γöé          Γöé      Γöé      ΓöéSystem Working Set cannot be     Γöé
  10798.                       Γöé          Γöé      Γöé      Γöémeasured.                        Γöé
  10799.                       ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10800.  
  10801.  p1 (ULONG) - input 
  10802.            see above 
  10803.  
  10804.  p2 (ULONG) - input 
  10805.            see above 
  10806.  
  10807.  
  10808. ΓòÉΓòÉΓòÉ <hidden> Example - error handler ΓòÉΓòÉΓòÉ
  10809.  
  10810. This example will print error messages to the STDOUT device. 
  10811.  
  10812. #include <os2.h>
  10813. #include <stdio.h>
  10814. #include "THESEUS0.h"
  10815.  
  10816. VOID EXPENTRY error_handler0( T2HANDLE0 t2handle0,
  10817.                               ULONG     error_code,
  10818.                               ULONG     p1,
  10819.                               ULONG     p2)
  10820. {
  10821.  switch (error_code)
  10822.  {
  10823.   case 1:
  10824.    printf( "Linear address: no Page Table, linear=%0.8X.\n", p1);
  10825.    break;
  10826.   case 2:
  10827.    printf( "Linear address+length: no Page Table, linear=%0.8X, length=%0.8X.\n",
  10828.            p1, p2);
  10829.    break;
  10830.   case 3:
  10831.    printf( "Linear address: page not present, linear=%0.8X.\n", p1);
  10832.    break;
  10833.   case 4:
  10834.    printf( "Linear address+Length: page not present, linear=%0.8X, length=%0.8X.\n",
  10835.            p1, p2);
  10836.    break;
  10837.   case 5:
  10838.    printf( "Linear address+Length: > 32 bits, linear=%0.8X, length=%0.8X.\n",
  10839.            p1, p2);
  10840.    break;
  10841.   case 6:
  10842.    printf( "SystemArenaHeaderLinear = %0.8X.\n", p1);
  10843.    printf( "SystemArenaHeaderLinear was not properly located.\n");
  10844.    printf( "System Working Set cannot be measured.\n");
  10845.    break;
  10846.   default:
  10847.    printf( "unknown error to error_handler0: t2handle0=%0.8X, error_code=%i, p1=%i, p2=%i.\n",
  10848.            t2handle0, error_code, p1, p2);
  10849.    break;
  10850.  }
  10851. }
  10852.  
  10853.  
  10854. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10855.  
  10856.  o T2Initialize 
  10857.  
  10858.  o T2GetHandle0 
  10859.  
  10860.  
  10861. ΓòÉΓòÉΓòÉ 12.2.1.2. T2Initialize ΓòÉΓòÉΓòÉ
  10862.  
  10863. Select an item: 
  10864.  
  10865.  Function Syntax 
  10866.  
  10867.  Parameters 
  10868.  
  10869.  Return Values 
  10870.  
  10871.  Example 
  10872.  
  10873.  Related Functions 
  10874.  
  10875.  
  10876. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2Initialize ΓòÉΓòÉΓòÉ
  10877.  
  10878. T2Initialize is used to cause THESEUS0 to initialize all its internal 
  10879. information that is required for later use. 
  10880.  
  10881. #include "THESEUS0.h"
  10882.  
  10883. PULONG ulDDVersion;
  10884. ULONG  ulrc;
  10885.  
  10886. ulrc = T2Initialize0( ulDDVersion, error_handler0);
  10887.  
  10888.  
  10889. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2Initialize ΓòÉΓòÉΓòÉ
  10890.  
  10891.  ulDDVersion (PULONG) - output 
  10892.            The address of a ULONG where the version of the THESEUS2.SYS device 
  10893.            driver installed in CONFIG.SYS is returned. The upper USHORT is the 
  10894.            version found and the lower USHORT is the version required. 
  10895.  
  10896.            Note:  It is returned only if the return code is Theseus2WrongDD. 
  10897.  
  10898.  error_handler0 (function) - input 
  10899.            The address (name) of the error handler provided by the user 
  10900.            program. 
  10901.  
  10902.  
  10903. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2Initialize ΓòÉΓòÉΓòÉ
  10904.  
  10905.  ulrc (ULONG) 
  10906.            return code 
  10907.  
  10908.     Theseus2OK 
  10909.               Initialization completed successfully. 
  10910.  
  10911.     Theseus2NoDD 
  10912.               There is no THESEUS2.SYS installed in CONFIG.SYS. The program 
  10913.               cannot continue. 
  10914.  
  10915.     Theseus2WrongDD 
  10916.               The version of THESEUS2.SYS installed in CONFIG.SYS is not the 
  10917.               version expected.  ulDDVersion contains the versions found and 
  10918.               required. The program cannot continue. 
  10919.  
  10920.     Theseus2BadPTDA 
  10921.               The initialization code could not determine the size of the PTDA. 
  10922.               The program cannot continue. 
  10923.  
  10924.     Theseus2NoMte 
  10925.               The initialization code could not determine the format for the 
  10926.               resident portion of the MTE. The program cannot continue. 
  10927.  
  10928.  
  10929. ΓòÉΓòÉΓòÉ <hidden> Example - T2Initialize ΓòÉΓòÉΓòÉ
  10930.  
  10931. This example will cause T2Initialize to perform the initialization of the 
  10932. internal functions. 
  10933.  
  10934. VOID EXPENTRY error_handler0( ULONG error_code, ULONG p1, ULONG p2)
  10935. {
  10936. ┬╖┬╖┬╖
  10937. }
  10938.  
  10939. ULONG ulDDVersion;
  10940.  
  10941. switch (T2Initialize0( &ulDDVersion, error_handler0) )
  10942. {
  10943.  case Theseus2NoDD:
  10944.   printf( "THESEUS2.SYS was not installed in your CONFIG.SYS.\n");
  10945.   break;
  10946.  case Theseus2WrongDD:
  10947.   printf( "The THESEUS2.SYS that was found is not the required version.\n");
  10948.   printf( "Version %i was found and %i is required.\n",
  10949.           ulDDVersion >> 16,
  10950.           ulDDVersion & 0xFFFF);
  10951.   printf( "Please acquire the correct version.\n");
  10952.   break;
  10953.  case Theseus2BadPTDA:
  10954.   printf( "PTDA_findSize did not determine the size of a PTDA.\n");
  10955.   break;
  10956.  case Theseus2OK:
  10957.   printf( "Initialization completed normally.\n");
  10958.  
  10959.   /* Execute program functions. */
  10960.  
  10961.   T2Terminate0();
  10962.   break;
  10963. }
  10964.  
  10965.  
  10966. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10967.  
  10968.  o error handler 
  10969.  
  10970.  o T2Terminate 
  10971.  
  10972.  
  10973. ΓòÉΓòÉΓòÉ 12.2.1.3. T2Terminate ΓòÉΓòÉΓòÉ
  10974.  
  10975. Select an item: 
  10976.  
  10977.  Function Syntax 
  10978.  
  10979.  Example 
  10980.  
  10981.  Related Functions 
  10982.  
  10983.  
  10984. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2Terminate ΓòÉΓòÉΓòÉ
  10985.  
  10986. T2Terminate is used to cause THESEUS0 to close the device driver. 
  10987.  
  10988. #include "THESEUS0.h"
  10989.  
  10990. T2Terminate0( VOID );
  10991.  
  10992.  
  10993. ΓòÉΓòÉΓòÉ <hidden> Example - T2Terminate ΓòÉΓòÉΓòÉ
  10994.  
  10995. This example will cause T2Terminate to close out all the processing of 
  10996. THESEUS0.DLL. 
  10997.  
  10998. ULONG ulDDVersion;
  10999.  
  11000. switch (T2Initialize0( &ulDDVersion, error_handler0) )
  11001. {
  11002. ┬╖┬╖┬╖
  11003.  case Theseus2OK:
  11004.   printf( "Initialization completed normally.\n");
  11005.  
  11006.   /* Execute program functions. */
  11007.  
  11008.   T2Terminate0();
  11009.   break;
  11010. }
  11011.  
  11012.  
  11013. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11014.  
  11015.  o T2Initialize 
  11016.  
  11017.  
  11018. ΓòÉΓòÉΓòÉ 12.2.1.4. T2GetHandle0 ΓòÉΓòÉΓòÉ
  11019.  
  11020. Select an item: 
  11021.  
  11022.  Function Syntax 
  11023.  
  11024.  Parameters 
  11025.  
  11026.  Return Values 
  11027.  
  11028.  Example 
  11029.  
  11030.  Related Functions 
  11031.  
  11032.  
  11033. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2GetHandle0 ΓòÉΓòÉΓòÉ
  11034.  
  11035. T2GetHandle0 is used to cause THESEUS0 to allocate an instance handle. 
  11036.  
  11037. #include "THESEUS0.h"
  11038. VOID EXPENTRY error_handler0( ULONG error_code, ULONG p1, ULONG p2)
  11039. {
  11040. ┬╖┬╖┬╖
  11041. }
  11042.  
  11043. T2HANDLE0 t2handle0;
  11044.  
  11045. t2handle0 = T2GetHandle0( error_handler0);
  11046.  
  11047.  
  11048. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2GetHandle0 ΓòÉΓòÉΓòÉ
  11049.  
  11050.  error_handler0 (function) - input 
  11051.            The address (name) of the error handler provided by the user 
  11052.            program. 
  11053.  
  11054.  
  11055. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2GetHandle0 ΓòÉΓòÉΓòÉ
  11056.  
  11057.  t2handle0 (T2HANDLE0) 
  11058.            The new instance handle. This handle must be passed to other 
  11059.            functions. 
  11060.  
  11061.  
  11062. ΓòÉΓòÉΓòÉ <hidden> Example - T2GetHandle0 ΓòÉΓòÉΓòÉ
  11063.  
  11064. This example will allocate an instance handle. 
  11065.  
  11066. #include "THESEUS0.h"
  11067. T2HANDLE0 t2handle0;
  11068.  
  11069. t2handle0 = T2GetHandle0( error_handler0);
  11070.  
  11071.  
  11072. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11073.  
  11074.  o error handler 
  11075.  
  11076.  o T2ReleaseHandle0 
  11077.  
  11078.  
  11079. ΓòÉΓòÉΓòÉ 12.2.1.5. T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  11080.  
  11081. Select an item: 
  11082.  
  11083.  Function Syntax 
  11084.  
  11085.  Parameters 
  11086.  
  11087.  Example 
  11088.  
  11089.  Related Functions 
  11090.  
  11091.  
  11092. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  11093.  
  11094. T2ReleaseHandle0 is used to cause THESEUS0 to release an instance handle and 
  11095. free the resources associated with it. 
  11096.  
  11097. #include "THESEUS0.h"
  11098. T2HANDLE0 *pT2Handle0;
  11099.  
  11100. T2ReleaseHandle0( pT2Handle0);
  11101.  
  11102.  
  11103. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  11104.  
  11105.  t2handle0 (T2HANDLE0) - input/output 
  11106.            An instance handle acquired from T2GetHandle0. It is zeroed by the 
  11107.            function. 
  11108.  
  11109.  
  11110. ΓòÉΓòÉΓòÉ <hidden> Example - T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  11111.  
  11112. This example will release the instance handle previously acquired. 
  11113.  
  11114. #include "THESEUS0.h"
  11115. T2HANDLE0 t2handle0;
  11116.  
  11117. T2ReleaseHandle0( &t2handle0);
  11118.  
  11119.  
  11120. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11121.  
  11122.  o T2GetHandle0 
  11123.  
  11124.  
  11125. ΓòÉΓòÉΓòÉ 12.2.2. Free Memory, Swapper, and Process Functions ΓòÉΓòÉΓòÉ
  11126.  
  11127. These functions are used to acquire specific information about the system as a 
  11128. whole. 
  11129.  
  11130. Free memory function: 
  11131.  
  11132.  T2FreeMemory            Determine the amount of free, idle, and locked memory. 
  11133.  
  11134.  SWAPPER.DAT analysis function: 
  11135.  
  11136.  T2AnalyzeSwapper        Determine the amount of free and used space in the 
  11137.                          SWAPPER.DAT file. 
  11138.  
  11139.  Process functions: 
  11140.  
  11141.  T2FindProcesses         Returns an array with the current processes. 
  11142.  T2RamUseByProcess       Returns an array with the current RAM usage by each 
  11143.                          process. 
  11144.  
  11145.  
  11146. ΓòÉΓòÉΓòÉ 12.2.2.1. T2FreeMemory ΓòÉΓòÉΓòÉ
  11147.  
  11148. Select an item: 
  11149.  
  11150.  Function Syntax 
  11151.  
  11152.  Parameters 
  11153.  
  11154.  Example 
  11155.  
  11156.  Related Functions 
  11157.  
  11158.  
  11159. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2FreeMemory ΓòÉΓòÉΓòÉ
  11160.  
  11161. T2FreeMemory is used to cause THESEUS0 to calculate the amount of free, idle, 
  11162. and locked memory. 
  11163.  
  11164. #include "THESEUS0.h"
  11165. T2HANDLE0 t2handle0;
  11166. PULONG pFreeRam,
  11167.        pIdleRam,
  11168.        pDirtyRam,
  11169.        pLLockRam,
  11170.        pSLockRam,
  11171.        pBLockRam;
  11172.  
  11173. T2FreeMemory( t2handle0,
  11174.               pFreeRam, pIdleRam, pDirtyRam,
  11175.               pLLockRam, pSLockRam, pBLockRam);
  11176.  
  11177.  
  11178. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2FreeMemory ΓòÉΓòÉΓòÉ
  11179.  
  11180.  t2handle0 (T2HANDLE0) - input 
  11181.            An instance handle previously allocated by T2GetHandle0. 
  11182.  
  11183.  pFreeRam (PULONG) - output 
  11184.            Address of the ULONG where the amount of free memory is returned. 
  11185.  
  11186.  pIdleRam (PULONG) - output 
  11187.            Address of the ULONG where the amount of idle memory is returned. 
  11188.  
  11189.  pDirtyRam (PULONG) - output 
  11190.            Address of the ULONG where the amount of dirty memory is returned. 
  11191.            This memory is included in the idle memory. 
  11192.  
  11193.  pLLockRam (PULONG) - output 
  11194.            Address of the ULONG where the amount of long-term locked memory is 
  11195.            returned. 
  11196.  
  11197.  pSLockRam (PULONG) - output 
  11198.            Address of the ULONG where the amount of short-term locked memory is 
  11199.            returned. 
  11200.  
  11201.  pBLockRam (PULONG) - output 
  11202.            Address of the ULONG where the amount of memory which is locked both 
  11203.            long-term and short-term is returned. 
  11204.  
  11205.  
  11206. ΓòÉΓòÉΓòÉ <hidden> Example - T2FreeMemory ΓòÉΓòÉΓòÉ
  11207.  
  11208. This example will cause T2FreeMemory to calculate the free, idle, and locked 
  11209. memory. 
  11210.  
  11211. #include "THESEUS0.h"
  11212. T2HANDLE0 t2handle0;
  11213. ULONG freeRam,
  11214.       idleRam,
  11215.       dirtyRam,
  11216.       LLockRam,
  11217.       SLockRam,
  11218.       BLockRam;
  11219.  
  11220. T2FreeMemory(  t2handle0,
  11221.               &freeRam,
  11222.               &idleRam,
  11223.               &dirtyRam,
  11224.               &LLockRam,
  11225.               &SLockRam,
  11226.               &BLockRam);
  11227.  
  11228.  
  11229. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11230.  
  11231.  o T2GetHandle0 
  11232.  
  11233.  o Contents of the Free, Idle, and Locked Memory Display 
  11234.  
  11235.  
  11236. ΓòÉΓòÉΓòÉ 12.2.2.2. T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  11237.  
  11238. Select an item: 
  11239.  
  11240.  Function Syntax 
  11241.  
  11242.  Parameters 
  11243.  
  11244.  Example 
  11245.  
  11246.  Related Functions 
  11247.  
  11248.  
  11249. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  11250.  
  11251. T2AnalyzeSwapper is used to cause THESEUS0 to calculate the amount of free and 
  11252. used space in the SWAPPER.DAT file. 
  11253.  
  11254. #include "THESEUS0.h"
  11255. T2HANDLE0 t2handle0;
  11256. PULONG SwapUsed,
  11257.        SwapFree;
  11258.  
  11259. T2AnalyzeSwapper( t2handle0, SwapUsed, SwapFree);
  11260.  
  11261.  
  11262. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  11263.  
  11264.  t2handle0 (T2HANDLE0) - input 
  11265.            An instance handle previously allocated by T2GetHandle0. 
  11266.  
  11267.  SwapUsed (PULONG) - output 
  11268.            The address of a ULONG where the number of used disk frames is 
  11269.            returned. 
  11270.  
  11271.  SwapFree (PULONG) - output 
  11272.            The address of a ULONG where the number of free disk frames is 
  11273.            returned. 
  11274.  
  11275.  Each disk frame is 4K bytes. 
  11276.  
  11277.  
  11278. ΓòÉΓòÉΓòÉ <hidden> Example - T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  11279.  
  11280. This example will cause T2AnalyzeSwapper to calculate the free and used space 
  11281. in the SWAPPER.DAT file. 
  11282.  
  11283. #include "THESEUS0.h"
  11284. T2HANDLE0 t2handle0;
  11285. ULONG SwapUsed,
  11286.       SwapFree;
  11287.  
  11288. T2AnalyzeSwapper( t2handle0, &SwapUsed, &SwapFree);
  11289.  
  11290.  
  11291. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11292.  
  11293.  o T2GetHandle0 
  11294.  
  11295.  o Contents of the Swapper Display 
  11296.  
  11297.  
  11298. ΓòÉΓòÉΓòÉ 12.2.2.3. T2FindProcesses ΓòÉΓòÉΓòÉ
  11299.  
  11300. Select an item: 
  11301.  
  11302.  Function Syntax 
  11303.  
  11304.  Parameters 
  11305.  
  11306.  Return Values 
  11307.  
  11308.  Example 
  11309.  
  11310.  Related Functions 
  11311.  
  11312.  
  11313. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2FindProcesses ΓòÉΓòÉΓòÉ
  11314.  
  11315. T2FindProcesses is used to cause THESEUS0 to count the number of processes in 
  11316. the system. It also returns an array which contains some information about each 
  11317. process. 
  11318.  
  11319. #include "THESEUS0.h"
  11320. T2HANDLE0 t2handle0;
  11321. ULONG     ulProcessCount;
  11322. T2PROCESS_TABLE *pProcessTable;
  11323.  
  11324. ulProcessCount = T2FindProcesses( t2handle0,
  11325.                                   pProcessTable);
  11326.  
  11327.  
  11328. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2FindProcesses ΓòÉΓòÉΓòÉ
  11329.  
  11330.  t2handle0 (T2HANDLE0) - input 
  11331.            An instance handle previously allocated by T2GetHandle0. 
  11332.  
  11333.  pProcessTable (T2PROCESS_TABLE *) - output 
  11334.            Address of a pointer which will point to the Process Table which is 
  11335.            returned. 
  11336.  
  11337.            The array contains an entry for each process currently running: 
  11338.  
  11339.     ptdaPID          The PID of this process. 
  11340.     pidParent        The pid of this process's parent process. 
  11341.     cThreads         The number of threads in this process. 
  11342.     processName      The name of this process. 
  11343.  
  11344.            Note:  It is the users responsibility to issue a DosFreeMem on this 
  11345.            array when it is no longer needed. 
  11346.  
  11347.  
  11348. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2FindProcesses ΓòÉΓòÉΓòÉ
  11349.  
  11350.  ulProcessCount (ULONG) 
  11351.            The number of processes currently running in the system. This will 
  11352.            also be the number of entries in pProcessTable. 
  11353.  
  11354.  
  11355. ΓòÉΓòÉΓòÉ <hidden> Example - T2FindProcesses ΓòÉΓòÉΓòÉ
  11356.  
  11357. This example will cause T2FindProcesses to return an array with process names 
  11358. and PIDs. 
  11359.  
  11360. #include "THESEUS0.h"
  11361. T2HANDLE0 t2handle0;
  11362. ULONG     cProcess;
  11363. T2PROCESS_TABLE *tProcessTable;
  11364.  
  11365. cProcess = T2FindProcesses( t2handle0,
  11366.                             &tProcessTable);
  11367.  
  11368.  
  11369. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11370.  
  11371.  o T2GetHandle0 
  11372.  
  11373.  o Contents of the Process List Display 
  11374.  
  11375.  
  11376. ΓòÉΓòÉΓòÉ 12.2.2.4. T2RamUseByProcess ΓòÉΓòÉΓòÉ
  11377.  
  11378. Select an item: 
  11379.  
  11380.  Function Syntax 
  11381.  
  11382.  Parameters 
  11383.  
  11384.  Return Values 
  11385.  
  11386.  Example 
  11387.  
  11388.  Related Functions 
  11389.  
  11390.  
  11391. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  11392.  
  11393. T2RamUseByProcess is used to cause THESEUS0 to determine the RAM used by each 
  11394. process in the system. It returns an array which contains the usage of each 
  11395. process. 
  11396.  
  11397. #include "THESEUS0.h"
  11398. T2HANDLE0 t2handle0;
  11399. ULONG     ulProcessCount;
  11400. T2RAM_TABLE *pRamTable;
  11401. PULONG    ulFreeRam;
  11402.  
  11403. ulProcessCount = T2RamUseByProcess( t2handle0,
  11404.                                     pProcessTable,
  11405.                                     ulFreeRam);
  11406.  
  11407.  
  11408. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  11409.  
  11410.  t2handle0 (T2HANDLE0) - input 
  11411.            An instance handle previously allocated by T2GetHandle0. 
  11412.  
  11413.  pRamTable (T2RAM_TABLE *) - output 
  11414.            Address of a pointer which will point to the RAM Table which is 
  11415.            returned. 
  11416.  
  11417.            The array contains an entry for each process currently running: 
  11418.  
  11419.     ptdaPID          The PID of this process. The entry with PID = 0000 
  11420.                      contains the memory used by the "system". 
  11421.     ulPrivate        The amount of memory in the private arena of this process. 
  11422.                      If multiple processes have the same page in their private 
  11423.                      arenas, the process with the lowest PID value is charged 
  11424.                      with the memory. 
  11425.     ulShared         The amount of memory from the shared arena that is owned 
  11426.                      by this process. 
  11427.  
  11428.            Note:  It is the users responsibility to issue a DosFreeMem on this 
  11429.            array when it is no longer needed. 
  11430.  
  11431.  ulFreeRam (ULONG) - output 
  11432.            The address of a ULONG where the amount of free memory is returned. 
  11433.  
  11434.  
  11435. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  11436.  
  11437.  ulProcessCount (ULONG) 
  11438.            The number of processes currently running in the system. This will 
  11439.            also be the number of entries in pRamTable. 
  11440.  
  11441.  
  11442. ΓòÉΓòÉΓòÉ <hidden> Example - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  11443.  
  11444. This example will cause T2RamUseByProcess to return an array with PIDs and RAM 
  11445. usage for each process. 
  11446.  
  11447. #include "THESEUS0.h"
  11448. T2HANDLE0 t2handle0;
  11449. ULONG     cProcess;
  11450. T2RAM_TABLE *tRamTable;
  11451. ULONG     ulFreeRam;
  11452.  
  11453. cProcess = T2RamUseByProcess( t2handle0,
  11454.                               &tRamTable,
  11455.                               &ulFreeRam);
  11456.  
  11457.  
  11458. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11459.  
  11460.  o T2GetHandle0 
  11461.  
  11462.  o Contents of the RAM Usage by Process Display 
  11463.  
  11464.  
  11465. ΓòÉΓòÉΓòÉ 12.2.3. Working Set Functions ΓòÉΓòÉΓòÉ
  11466.  
  11467. These functions are used to acquire working set information. 
  11468.  
  11469. Working Set functions: 
  11470.  
  11471.  T2WSStart            Sets up to do working set analysis for a particular 
  11472.                       process or the entire system. 
  11473.  T2WSSystemTick       Collects data when doing working set for the entire 
  11474.                       system. 
  11475.  T2WSProcessTick      Collects data when doing working set for a particular 
  11476.                       process. 
  11477.  T2WSProcessTick2     Collects data when doing working set for a particular 
  11478.                       process. (This is the same as T2WSProcessTick, with the 
  11479.                       addition of the System DLL information.) 
  11480.  T2WSStop             Stops the collection of working set data and returns 
  11481.                       summary information. 
  11482.  T2WSStop2            Stops the collection of working set data and returns 
  11483.                       summary information. (This is the same as T2WSStop, with 
  11484.                       the addition of the System DLL information.) 
  11485.  T2WSCheck            See if it is valid to collect working set data for a 
  11486.                       particular process or the entire system. 
  11487.  
  11488.  The general way that these functions are used is: 
  11489.  
  11490.   T2WSStart.
  11491.   do {
  11492.     Wait for the desired interval to elapse.
  11493.     T2WSSystemTick or T2WSProcessTick or T2WSProcessTick2.
  11494.   } while (data is desired).
  11495.   T2WSStop or T2WSStop2.
  11496.  
  11497.  
  11498. ΓòÉΓòÉΓòÉ 12.2.3.1. T2WSStart ΓòÉΓòÉΓòÉ
  11499.  
  11500. Select an item: 
  11501.  
  11502.  Function Syntax 
  11503.  
  11504.  Parameters 
  11505.  
  11506.  Return Values 
  11507.  
  11508.  System Example 
  11509.  
  11510.  Process Example 
  11511.  
  11512.  Related Functions 
  11513.  
  11514.  
  11515. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSStart ΓòÉΓòÉΓòÉ
  11516.  
  11517. T2WSStart is used to cause THESEUS0 to set up for working set data collection 
  11518. for a particular process or the entire system. 
  11519.  
  11520. #include "THESEUS0.h"
  11521.  
  11522. T2HANDLE0  t2handle0;
  11523. WS_HANDLE0 ws_handle0;
  11524. ULONG      pid;
  11525.  
  11526. ulrc = T2WSStart( t2handle0, ws_handle0, pid);
  11527.  
  11528.  
  11529. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSStart ΓòÉΓòÉΓòÉ
  11530.  
  11531.  t2handle0 (T2HANDLE0) - input 
  11532.            An instance handle previously allocated by T2GetHandle0. 
  11533.  
  11534.  ws_handle0 (WS_HANDLE0) - output 
  11535.            The address of a WS_HANDLE0 where the working set handle is 
  11536.            returned. This handle must be used in the 
  11537.            T2WSSystemTick/T2WSProcessTick/T2WSProcessTick2 and 
  11538.            T2WSStop/T2WSStop2 calls. 
  11539.  
  11540.  pid (ULONG) - input 
  11541.            The pid of the process that you want to measure. If 0 is specified, 
  11542.            then the working set of the entire system is measured. The process 
  11543.            with pid of 0001 is not valid for measurement. 
  11544.  
  11545.  
  11546. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSStart ΓòÉΓòÉΓòÉ
  11547.  
  11548.  ulrc (ULONG) 
  11549.            return code 
  11550.  
  11551.     T2WS_OK 
  11552.               The T2WSStart call completed properly. The ws_handle0 value is 
  11553.               returned. 
  11554.  
  11555.     T2WS_InUse 
  11556.               The process requested is already having working set data 
  11557.               collected for it. A process can have working set data collected 
  11558.               for it from only one place. 
  11559.  
  11560.     T2WS_SystemBeingDone 
  11561.               Working set collection is being done for the system. If system is 
  11562.               being done, no process can have data collected for it. 
  11563.  
  11564.     T2WS_PidNotFound 
  11565.               The requested process was not found as an active process. 
  11566.  
  11567.     T2WS_BadArena 
  11568.               An error occurred during initialization. Working set data cannot 
  11569.               be collected. 
  11570.  
  11571.  
  11572. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStart System Working Set ΓòÉΓòÉΓòÉ
  11573.  
  11574. This example will cause THESEUS0 to collect working set data for the entire 
  11575. system. It will sample every 2 seconds and will take 5 samples. The working set 
  11576. interval is set as 3 intervals. The results are printed to the window. 
  11577.  
  11578. #include "THESEUS0.h"
  11579.  
  11580. T2HANDLE0  t2handle0;
  11581. ULONG      rc;
  11582. int        i;
  11583. WS_HANDLE0 ws_handle0;
  11584. ULONG      ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  11585.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  11586. ULONG      iIntervals, ulMinimum, ulRecommended;
  11587.  
  11588. rc = T2WSStart( t2handle0, &ws_handle0, 0);
  11589. if (rc == T2WS_OK)
  11590. {
  11591.   for (i=0; i<5; i++)
  11592.   {
  11593.     printf( " waiting 2 seconds.");
  11594.     DosSleep( 2000);
  11595.     rc = T2WSSystemTick( ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  11596.                          &ulFree, &ulIdle,
  11597.                          &ulProcessesUsed, &ulProcessCount,
  11598.                          &ulResident, &ulTotalRam);
  11599.     printf( "\n  tick (rc=%i), %i %i %i %i %i %i %i %i %i\n",
  11600.             rc, ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  11601.             ulProcessesUsed, ulProcessCount,
  11602.             ulResident, ulTotalRam);
  11603.   }
  11604.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  11605.                  &ulMinimum, &ulRecommended, &ulAccessed);
  11606.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  11607.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  11608. }
  11609.  
  11610.  
  11611. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStart Process Working Set ΓòÉΓòÉΓòÉ
  11612.  
  11613. This example will cause THESEUS0 to collect working set data for process with 
  11614. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  11615. set interval is set as 3 intervals. The results are printed to the window. 
  11616.  
  11617. #include "THESEUS0.h"
  11618.  
  11619. T2HANDLE0  t2handle0;
  11620. ULONG      rc;
  11621. int        i;
  11622. WS_HANDLE0 ws_handle0;
  11623. ULONG     ulNow, ulWS, ulAccessed;
  11624. ULONG     iIntervals, ulMinimum, ulRecommended, ulTotalRam;
  11625.  
  11626. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  11627. if (rc == T2WS_OK)
  11628. {
  11629.   for (i=0; i<5; i++)
  11630.   {
  11631.     printf( " waiting 2 seconds.");
  11632.     DosSleep( 2000);
  11633.     rc = T2WSProcessTick(  ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  11634.                           &ulTotalRam);
  11635.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i\n",
  11636.             rc, i, ulNow, ulWS, ulAccessed, ulTotalRam);
  11637.   }
  11638.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  11639.                  &ulMinimum, &ulRecommended, &ulAccessed);
  11640.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  11641.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  11642. }
  11643.  
  11644.  
  11645. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11646.  
  11647.  o T2GetHandle0 
  11648.  
  11649.  o T2WSSystemTick 
  11650.  
  11651.  o T2WSProcessTick 
  11652.  
  11653.  o T2WSProcessTick2 
  11654.  
  11655.  o T2WSStop 
  11656.  
  11657.  o T2WSStop2 
  11658.  
  11659.  o Working Set of the Entire System? 
  11660.  
  11661.  o Working Set of a Single Process? 
  11662.  
  11663.  
  11664. ΓòÉΓòÉΓòÉ 12.2.3.2. T2WSSystemTick ΓòÉΓòÉΓòÉ
  11665.  
  11666. Select an item: 
  11667.  
  11668.  Function Syntax 
  11669.  
  11670.  Parameters 
  11671.  
  11672.  Return Values 
  11673.  
  11674.  Notes 
  11675.  
  11676.  Example 
  11677.  
  11678.  Related Functions 
  11679.  
  11680.  
  11681. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSSystemTick ΓòÉΓòÉΓòÉ
  11682.  
  11683. T2WSSystemTick is used to cause THESEUS0 to determine the amount of memory 
  11684. accessed since the last T2WSSystemTick call or from the T2WSStart call. 
  11685.  
  11686. #include "THESEUS0.h"
  11687.  
  11688. ULONG      rc;
  11689. WS_HANDLE0 ws_handle0;
  11690. ULONG      ulIntervals;
  11691. PULONG     ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  11692.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  11693.  
  11694. rc = T2WSSystemTick( ws_handle0, ulIntervals,
  11695.                      ulNow, ulWS, ulAccessed,
  11696.                      ulFree, ulIdle,
  11697.                      ulProcessesUsed, ulProcessCount,
  11698.                      ulResident, ulTotalRam);
  11699.  
  11700.  
  11701. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSSystemTick ΓòÉΓòÉΓòÉ
  11702.  
  11703.  ws_handle0 (WS_HANDLE0) - input 
  11704.            An instance handle previously allocated by T2WSStart. 
  11705.  
  11706.  ulIntervals (ULONG) - input 
  11707.            The number of intervals that constitute the working set. This value 
  11708.            must be less than 254 for the computations to work properly. 
  11709.  
  11710.  ulNow (PULONG) - output 
  11711.            The address of a ULONG where the number of pages of memory that was 
  11712.            accessed during the last interval is returned. 
  11713.  
  11714.  ulWS (PULONG) - output 
  11715.            The address of a ULONG where the number of pages of memory in the 
  11716.            working set is returned. 
  11717.  
  11718.  ulAccessed (PULONG) - output 
  11719.            The address of a ULONG where the number of pages of memory accessed 
  11720.            since the T2WSStart was issued is returned. 
  11721.  
  11722.  ulFree (PULONG) - output 
  11723.            The address of a ULONG where the number of pages of free memory is 
  11724.            returned. 
  11725.  
  11726.  ulIdle (PULONG) - output 
  11727.            The address of a ULONG where the number of pages of idle memory is 
  11728.            returned. 
  11729.  
  11730.  ulProcessesUsed (PULONG) - output 
  11731.            The address of a ULONG where the number of processes that had memory 
  11732.            accessed during the interval is returned. This value indicates the 
  11733.            number of processes which are both running and touching non-system 
  11734.            memory. 
  11735.  
  11736.  ulProcessCount (PULONG) - output 
  11737.            The address of a ULONG where the total number of processes found 
  11738.            during the interval is returned. This number changes as processes 
  11739.            are created or destroyed. 
  11740.  
  11741.  ulResident (PULONG) - output 
  11742.            The address of a ULONG where the number of pages of resident memory 
  11743.            is returned. 
  11744.  
  11745.  ulTotalRam (PULONG) - output 
  11746.            The address of a ULONG where the total number of pages of RAM being 
  11747.            used by OS/2* is returned. 
  11748.  
  11749.  
  11750. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSSystemTick ΓòÉΓòÉΓòÉ
  11751.  
  11752.  ulrc (ULONG) 
  11753.            return code 
  11754.  
  11755.     T2WS_OK 
  11756.               The T2WSSystemTick call completed properly. 
  11757.  
  11758.     T2WS_InvalidHandle 
  11759.               The ws_handle0 passed was not valid. 
  11760.  
  11761.  
  11762. ΓòÉΓòÉΓòÉ <hidden> Notes - T2WSSystemTick ΓòÉΓòÉΓòÉ
  11763.  
  11764. The interval between calls to T2WSSystemTick should be chosen carefully. If the 
  11765. interval is too short, the processing could cause the rest of the system to 
  11766. have problems. However, if the interval is too long, dynamic memory allocated 
  11767. and freed will be missed. The overhead is dependent on the number of processes, 
  11768. more so than the amount of RAM in the machine. The interval should never be 
  11769. less than 1 second nor longer than 1 minute. 
  11770.  
  11771.  
  11772. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSSystemTick ΓòÉΓòÉΓòÉ
  11773.  
  11774. This example will cause THESEUS0 to collect working set data for the entire 
  11775. system. It will sample every 2 seconds and will take 5 samples. The working set 
  11776. interval is set as 3 intervals. The results are printed to the window. 
  11777.  
  11778. #include "THESEUS0.h"
  11779.  
  11780. T2HANDLE0  t2handle0;
  11781. ULONG      rc;
  11782. int        i;
  11783. WS_HANDLE0 ws_handle0;
  11784. ULONG      ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  11785.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  11786. ULONG      iIntervals, ulMinimum, ulRecommended;
  11787.  
  11788. rc = T2WSStart( t2handle0, &ws_handle0, 0);
  11789. if (rc == T2WS_OK)
  11790. {
  11791.   for (i=0; i<5; i++)
  11792.   {
  11793.     printf( " waiting 2 seconds.");
  11794.     DosSleep( 2000);
  11795.     rc = T2WSSystemTick( ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  11796.                          &ulFree, &ulIdle,
  11797.                          &ulProcessesUsed, &ulProcessCount,
  11798.                          &ulResident, &ulTotalRam);
  11799.     printf( "\n  tick (rc=%i), %i %i %i %i %i %i %i %i %i\n",
  11800.             rc, ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  11801.             ulProcessesUsed, ulProcessCount,
  11802.             ulResident, ulTotalRam);
  11803.   }
  11804.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  11805.                  &ulMinimum, &ulRecommended, &ulAccessed);
  11806.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  11807.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  11808. }
  11809.  
  11810.  
  11811. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11812.  
  11813.  o T2WSStart 
  11814.  
  11815.  o T2WSStop 
  11816.  
  11817.  o Working Set of the Entire System? 
  11818.  
  11819.  o System Working Set 
  11820.  
  11821.  
  11822. ΓòÉΓòÉΓòÉ 12.2.3.3. T2WSProcessTick ΓòÉΓòÉΓòÉ
  11823.  
  11824. Select an item: 
  11825.  
  11826.  Function Syntax 
  11827.  
  11828.  Parameters 
  11829.  
  11830.  Return Values 
  11831.  
  11832.  Notes 
  11833.  
  11834.  Example 
  11835.  
  11836.  Related Functions 
  11837.  
  11838.  
  11839. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSProcessTick ΓòÉΓòÉΓòÉ
  11840.  
  11841. T2WSProcessTick is used to cause THESEUS0 to determine the amount of memory 
  11842. accessed since the last T2WSProcessTick call or from the T2WSStart call. 
  11843.  
  11844. #include "THESEUS0.h"
  11845.  
  11846. ULONG      rc;
  11847. WS_HANDLE0 ws_handle0;
  11848. ULONG      ulIntervals;
  11849. PULONG     ulNow, ulWS, ulAccessed, ulTotalRam;
  11850.  
  11851. rc = T2WSProcessTick( ws_handle0, ulIntervals,
  11852.                      ulNow, ulWS, ulAccessed, ulTotalRam);
  11853.  
  11854.  
  11855. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSProcessTick ΓòÉΓòÉΓòÉ
  11856.  
  11857.  ws_handle0 (WS_HANDLE0) - input 
  11858.            An instance handle previously allocated by T2WSStart. 
  11859.  
  11860.  ulIntervals (ULONG) - input 
  11861.            The number of intervals that constitute the working set. This value 
  11862.            must be less than 254 for the computations to work properly. 
  11863.  
  11864.  ulNow (PULONG) - output 
  11865.            The address of a ULONG where the number of pages of memory that was 
  11866.            accessed during the last interval is returned. 
  11867.  
  11868.  ulWS (PULONG) - output 
  11869.            The address of a ULONG where the number of pages of memory in the 
  11870.            working set is returned. 
  11871.  
  11872.  ulAccessed (PULONG) - output 
  11873.            The address of a ULONG where the number of pages of memory accessed 
  11874.            since the T2WSStart was issued is returned. 
  11875.  
  11876.  ulTotalRam (PULONG) - output 
  11877.            The address of a ULONG where the total number of pages of RAM being 
  11878.            used by OS/2* is returned. 
  11879.  
  11880.  
  11881. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSProcessTick ΓòÉΓòÉΓòÉ
  11882.  
  11883.  ulrc (ULONG) 
  11884.            return code 
  11885.  
  11886.     T2WS_OK 
  11887.               The T2WSProcessTick call completed properly. 
  11888.  
  11889.     T2WS_InvalidHandle 
  11890.               The ws_handle0 passed was not valid. 
  11891.  
  11892.     T2WS_PidNotFound 
  11893.               The requested process was not found as an active process. It was 
  11894.               found when the T2WSStart was done, but has since terminated. 
  11895.  
  11896.  
  11897. ΓòÉΓòÉΓòÉ <hidden> Notes - T2WSProcessTick ΓòÉΓòÉΓòÉ
  11898.  
  11899. The interval between calls to T2WSProcessTick should be chosen carefully. If 
  11900. the interval is too short, the processing could cause the rest of the system to 
  11901. have problems. However, if the interval is too long, dynamic memory allocated 
  11902. and freed will be missed. The overhead is dependent on the number of processes 
  11903. being monitored, more so than the amount of RAM in the machine. The interval 
  11904. should never be less than 1 second nor longer than 1 minute. 
  11905.  
  11906.  
  11907. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSProcessTick ΓòÉΓòÉΓòÉ
  11908.  
  11909. This example will cause THESEUS0 to collect working set data for process with 
  11910. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  11911. set interval is set as 3 intervals. The results are printed to the window. 
  11912.  
  11913. #include "THESEUS0.h"
  11914.  
  11915. T2HANDLE0  t2handle0;
  11916. ULONG      rc;
  11917. int        i;
  11918. WS_HANDLE0 ws_handle0;
  11919. ULONG     ulNow, ulWS, ulAccessed;
  11920. ULONG     iIntervals, ulMinimum, ulRecommended, ulTotalRam;
  11921.  
  11922. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  11923. if (rc == T2WS_OK)
  11924. {
  11925.   for (i=0; i<5; i++)
  11926.   {
  11927.     printf( " waiting 2 seconds.");
  11928.     DosSleep( 2000);
  11929.     rc = T2WSProcessTick(  ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  11930.                           &ulTotalRam);
  11931.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i\n",
  11932.             rc, i, ulNow, ulWS, ulAccessed, ulTotalRam);
  11933.   }
  11934.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  11935.                  &ulMinimum, &ulRecommended, &ulAccessed);
  11936.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  11937.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  11938. }
  11939.  
  11940.  
  11941. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11942.  
  11943.  o T2WSStart 
  11944.  
  11945.  o T2WSProcessTick2 
  11946.  
  11947.  o T2WSStop 
  11948.  
  11949.  o T2WSStop2 
  11950.  
  11951.  o Working Set of a Single Process? 
  11952.  
  11953.  o Process Working Set 
  11954.  
  11955.  
  11956. ΓòÉΓòÉΓòÉ 12.2.3.4. T2WSProcessTick2 ΓòÉΓòÉΓòÉ
  11957.  
  11958. Select an item: 
  11959.  
  11960.  Function Syntax 
  11961.  
  11962.  Parameters 
  11963.  
  11964.  Return Values 
  11965.  
  11966.  Notes 
  11967.  
  11968.  Example 
  11969.  
  11970.  Related Functions 
  11971.  
  11972.  
  11973. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSProcessTick2 ΓòÉΓòÉΓòÉ
  11974.  
  11975. T2WSProcessTick2 is used to cause THESEUS0 to determine the amount of memory 
  11976. accessed since the last T2WSProcessTick2 call or from the T2WSStart call. 
  11977.  
  11978. #include "THESEUS0.h"
  11979.  
  11980. ULONG      rc;
  11981. WS_HANDLE0 ws_handle0;
  11982. ULONG      ulIntervals;
  11983. PULONG     ulNow, ulWS, ulAccessed,
  11984.            ulDllNow, ulDllWS, ulDllAccessed,
  11985.            ulTotalRam;
  11986.  
  11987. rc = T2WSProcessTick2( ws_handle0, ulIntervals,
  11988.                        ulNow, ulWS, ulAccessed,
  11989.                        ulDllNow, ulDllWS, ulDllAccessed,
  11990.                        ulTotalRam);
  11991.  
  11992.  
  11993. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSProcessTick2 ΓòÉΓòÉΓòÉ
  11994.  
  11995.  ws_handle0 (WS_HANDLE0) - input 
  11996.            An instance handle previously allocated by T2WSStart. 
  11997.  
  11998.  ulIntervals (ULONG) - input 
  11999.            The number of intervals that constitute the working set. This value 
  12000.            must be less than 254 for the computations to work properly. 
  12001.  
  12002.  ulNow (PULONG) - output 
  12003.            The address of a ULONG where the number of pages of memory that was 
  12004.            accessed during the last interval is returned. 
  12005.  
  12006.  ulWS (PULONG) - output 
  12007.            The address of a ULONG where the number of pages of memory in the 
  12008.            working set is returned. 
  12009.  
  12010.  ulAccessed (PULONG) - output 
  12011.            The address of a ULONG where the number of pages of memory accessed 
  12012.            since the T2WSStart was issued is returned. 
  12013.  
  12014.  ulDllNow (PULONG) - output 
  12015.            The address of a ULONG where the number of pages of memory that was 
  12016.            accessed by System DLLs during the last interval is returned. 
  12017.  
  12018.  ulDllWS (PULONG) - output 
  12019.            The address of a ULONG where the number of pages of memory in the 
  12020.            working set of the System DLLs is returned. 
  12021.  
  12022.  ulDllAccessed (PULONG) - output 
  12023.            The address of a ULONG where the number of pages of memory accessed 
  12024.            by System DLLs since the T2WSStart was issued is returned. 
  12025.  
  12026.  ulTotalRam (PULONG) - output 
  12027.            The address of a ULONG where the total number of pages of RAM being 
  12028.            used by OS/2* is returned. 
  12029.  
  12030.  
  12031. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSProcessTick2 ΓòÉΓòÉΓòÉ
  12032.  
  12033.  ulrc (ULONG) 
  12034.            return code 
  12035.  
  12036.     T2WS_OK 
  12037.               The T2WSProcessTick2 call completed properly. 
  12038.  
  12039.     T2WS_InvalidHandle 
  12040.               The ws_handle0 passed was not valid. 
  12041.  
  12042.     T2WS_PidNotFound 
  12043.               The requested process was not found as an active process. It was 
  12044.               found when the T2WSStart was done, but has since terminated. 
  12045.  
  12046.  
  12047. ΓòÉΓòÉΓòÉ <hidden> Notes - T2WSProcessTick2 ΓòÉΓòÉΓòÉ
  12048.  
  12049. The interval between calls to T2WSProcessTick2 should be chosen carefully. If 
  12050. the interval is too short, the processing could cause the rest of the system to 
  12051. have problems. However, if the interval is too long, dynamic memory allocated 
  12052. and freed will be missed. The overhead is dependent on the number of processes 
  12053. being monitored, more so than the amount of RAM in the machine. The interval 
  12054. should never be less than 1 second nor longer than 1 minute. 
  12055.  
  12056.  
  12057. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSProcessTick2 ΓòÉΓòÉΓòÉ
  12058.  
  12059. This example will cause THESEUS0 to collect working set data for process with 
  12060. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  12061. set interval is set as 3 intervals. The results are printed to the window. 
  12062.  
  12063. #include "THESEUS0.h"
  12064.  
  12065. T2HANDLE0  t2handle0;
  12066. ULONG      rc;
  12067. int        i;
  12068. WS_HANDLE0 ws_handle0;
  12069. ULONG     ulNow, ulWS, ulAccessed,
  12070.           ulDllNow, ulDllWS, ulDllAccessed;
  12071. ULONG     iIntervals,
  12072.           ulMinimum, ulRecommended,
  12073.           ulDllMinimum, ulDllRecommended,
  12074.           ulTotalRam;
  12075.  
  12076. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  12077. if (rc == T2WS_OK)
  12078. {
  12079.   for (i=0; i<5; i++)
  12080.   {
  12081.     printf( " waiting 2 seconds.");
  12082.     DosSleep( 2000);
  12083.     rc = T2WSProcessTick2( ws_handle0, 3,
  12084.                            &ulNow, &ulWS, &ulAccessed,
  12085.                            &ulDllNow, &ulDllWS, &ulDllAccessed,
  12086.                            &ulTotalRam);
  12087.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i %i %i %i\n",
  12088.             rc, i,
  12089.             ulNow, ulWS, ulAccessed,
  12090.             ulDllNow, ulDllWS, ulDllAccessed,
  12091.             ulTotalRam);
  12092.   }
  12093.   rc = T2WSStop2( &ws_handle0, TRUE, &iIntervals,
  12094.                   &ulMinimum, &ulRecommended, &ulAccessed,
  12095.                   &ulDllMinimum, &ulDllRecommended, &ulDllAccessed);
  12096.   printf( " count = %i, min = %i, rec = %i, acc = %i, dllMin = %i, dllRec = %i, dllAcc = %i\n",
  12097.           iIntervals,
  12098.           ulMinimum, ulRecommended, ulAccessed,
  12099.           ulDllMinimum, ulDllRecommended, ulDllAccessed);
  12100. }
  12101.  
  12102.  
  12103. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12104.  
  12105.  o T2WSStart 
  12106.  
  12107.  o T2WSProcessTick 
  12108.  
  12109.  o T2WSStop 
  12110.  
  12111.  o T2WSStop2 
  12112.  
  12113.  o Working Set of a Single Process? 
  12114.  
  12115.  o Process Working Set 
  12116.  
  12117.  
  12118. ΓòÉΓòÉΓòÉ 12.2.3.5. T2WSStop ΓòÉΓòÉΓòÉ
  12119.  
  12120. Select an item: 
  12121.  
  12122.  Function Syntax 
  12123.  
  12124.  Parameters 
  12125.  
  12126.  Return Values 
  12127.  
  12128.  System Example 
  12129.  
  12130.  Process Example 
  12131.  
  12132.  Related Functions 
  12133.  
  12134.  
  12135. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSStop ΓòÉΓòÉΓòÉ
  12136.  
  12137. T2WSStop is used to cause THESEUS0 to terminate the Working Set computations 
  12138. and return summary information. 
  12139.  
  12140. #include "THESEUS0.h"
  12141.  
  12142. WS_HANDLE0 ws_handle0;
  12143. BOOL       fCollectOne;
  12144. PULONG     iIntervals, ulMinimum, ulRecommended, ulAccessed;
  12145.  
  12146. rc = T2WSStop( ws_handle0, fCollectOne, iIntervals,
  12147.                ulMinimum, ulRecommended, ulAccessed);
  12148.  
  12149.  
  12150. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSStop ΓòÉΓòÉΓòÉ
  12151.  
  12152.  ws_handle0 (WS_HANDLE0) - input 
  12153.            An instance handle previously allocated by T2WSStart. 
  12154.  
  12155.  fCollectOne (BOOL) - input 
  12156.            Indicate if at least one collection cycle must be accomplished. 
  12157.  
  12158.     TRUE    Perform a collection cycle (tick), if one has not already been 
  12159.             done. 
  12160.     FALSE   Do not force a collection cycle. 
  12161.  
  12162.  iIntervals (PULONG) - output 
  12163.            Address of a ULONG where the number of data collections cycles 
  12164.            completed is returned. 
  12165.  
  12166.  ulMinimum (PULONG) - output 
  12167.            The address of a ULONG where the maximum value from the now column 
  12168.            is returned. This is the amount of memory absolutely required to run 
  12169.            the application without "thrashing" memory. 
  12170.  
  12171.  ulRecommended (PULONG) - output 
  12172.            The address of a ULONG where the maximum value from the ws column is 
  12173.            returned. This is the recommended amount of memory for the 
  12174.            application to run with minimum impact on paging. 
  12175.  
  12176.  ulAccessed (PULONG) - output 
  12177.            The address of a ULONG where the maximum value from the accessed 
  12178.            column is returned. This is the amount of memory required to run the 
  12179.            application with no paging activity. 
  12180.  
  12181.  
  12182. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSStop ΓòÉΓòÉΓòÉ
  12183.  
  12184.  ulrc (ULONG) 
  12185.            return code 
  12186.  
  12187.     T2WS_OK 
  12188.               The T2WSStop call completed properly. 
  12189.  
  12190.     T2WS_InvalidHandle 
  12191.               The ws_handle0 passed was not valid. 
  12192.  
  12193.  
  12194. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStop System Working Set ΓòÉΓòÉΓòÉ
  12195.  
  12196. This example will cause THESEUS0 to collect working set data for the entire 
  12197. system. It will sample every 2 seconds and will take 5 samples. The working set 
  12198. interval is set as 3 intervals. The results are printed to the window. 
  12199.  
  12200. #include "THESEUS0.h"
  12201.  
  12202. T2HANDLE0  t2handle0;
  12203. ULONG      rc;
  12204. int        i;
  12205. WS_HANDLE0 ws_handle0;
  12206. ULONG      ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  12207.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  12208. ULONG      iIntervals, ulMinimum, ulRecommended;
  12209.  
  12210. rc = T2WSStart( t2handle0, &ws_handle0, 0);
  12211. if (rc == T2WS_OK)
  12212. {
  12213.   for (i=0; i<5; i++)
  12214.   {
  12215.     printf( " waiting 2 seconds.");
  12216.     DosSleep( 2000);
  12217.     rc = T2WSSystemTick( ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  12218.                          &ulFree, &ulIdle,
  12219.                          &ulProcessesUsed, &ulProcessCount,
  12220.                          &ulResident, &ulTotalRam);
  12221.     printf( "\n  tick (rc=%i), %i %i %i %i %i %i %i %i %i\n",
  12222.             rc, ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  12223.             ulProcessesUsed, ulProcessCount,
  12224.             ulResident, ulTotalRam);
  12225.   }
  12226.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  12227.                  &ulMinimum, &ulRecommended, &ulAccessed);
  12228.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  12229.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  12230. }
  12231.  
  12232.  
  12233. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStop Process Working Set ΓòÉΓòÉΓòÉ
  12234.  
  12235. This example will cause THESEUS0 to collect working set data for process with 
  12236. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  12237. set interval is set as 3 intervals. The results are printed to the window. 
  12238.  
  12239. #include "THESEUS0.h"
  12240.  
  12241. T2HANDLE0  t2handle0;
  12242. ULONG      rc;
  12243. int        i;
  12244. WS_HANDLE0 ws_handle0;
  12245. ULONG     ulNow, ulWS, ulAccessed;
  12246. ULONG     iIntervals, ulMinimum, ulRecommended, ulTotalRam;
  12247.  
  12248. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  12249. if (rc == T2WS_OK)
  12250. {
  12251.   for (i=0; i<5; i++)
  12252.   {
  12253.     printf( " waiting 2 seconds.");
  12254.     DosSleep( 2000);
  12255.     rc = T2WSProcessTick(  ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  12256.                           &ulTotalRam);
  12257.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i\n",
  12258.             rc, i, ulNow, ulWS, ulAccessed, ulTotalRam);
  12259.   }
  12260.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  12261.                  &ulMinimum, &ulRecommended, &ulAccessed);
  12262.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  12263.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  12264. }
  12265.  
  12266.  
  12267. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12268.  
  12269.  o T2GetHandle0 
  12270.  
  12271.  o T2WSStart 
  12272.  
  12273.  
  12274. ΓòÉΓòÉΓòÉ 12.2.3.6. T2WSStop2 ΓòÉΓòÉΓòÉ
  12275.  
  12276. Select an item: 
  12277.  
  12278.  Function Syntax 
  12279.  
  12280.  Parameters 
  12281.  
  12282.  Return Values 
  12283.  
  12284.  Process Example 
  12285.  
  12286.  Related Functions 
  12287.  
  12288.  
  12289. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSStop2 ΓòÉΓòÉΓòÉ
  12290.  
  12291. T2WSStop2 is used to cause THESEUS0 to terminate the Working Set computations 
  12292. and return summary information. 
  12293.  
  12294. #include "THESEUS0.h"
  12295.  
  12296. WS_HANDLE0 ws_handle0;
  12297. BOOL       fCollectOne;
  12298. PULONG     iIntervals,
  12299.            ulMinimum, ulRecommended, ulAccessed,
  12300.            ulDllMinimum, ulDllRecommended, ulDllAccessed;
  12301.  
  12302. rc = T2WSStop2( ws_handle0, fCollectOne, iIntervals,
  12303.                 ulMinimum, ulRecommended, ulAccessed,
  12304.                 ulDllMinimum, ulDllRecommended, ulDllAccessed);
  12305.  
  12306.  
  12307. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSStop2 ΓòÉΓòÉΓòÉ
  12308.  
  12309.  ws_handle0 (WS_HANDLE0) - input 
  12310.            An instance handle previously allocated by T2WSStart. 
  12311.  
  12312.  fCollectOne (BOOL) - input 
  12313.            Indicate if at least one collection cycle must be accomplished. 
  12314.  
  12315.     TRUE    Perform a collection cycle (tick), if one has not already been 
  12316.             done. 
  12317.     FALSE   Do not force a collection cycle. 
  12318.  
  12319.  iIntervals (PULONG) - output 
  12320.            Address of a ULONG where the number of data collections cycles 
  12321.            completed is returned. 
  12322.  
  12323.  ulMinimum (PULONG) - output 
  12324.            The address of a ULONG where the maximum value from the now column 
  12325.            is returned. This is the amount of memory absolutely required to run 
  12326.            the application without "thrashing" memory. 
  12327.  
  12328.  ulRecommended (PULONG) - output 
  12329.            The address of a ULONG where the maximum value from the ws column is 
  12330.            returned. This is the recommended amount of memory for the 
  12331.            application to run with minimum impact on paging. 
  12332.  
  12333.  ulAccessed (PULONG) - output 
  12334.            The address of a ULONG where the maximum value from the accessed 
  12335.            column is returned. This is the amount of memory required to run the 
  12336.            application with no paging activity. 
  12337.  
  12338.  ulDllMinimum (PULONG) - output 
  12339.            The address of a ULONG where the maximum value from the now column 
  12340.            for System DLLs is returned. This is the amount of memory absolutely 
  12341.            required to run the application without "thrashing" memory. 
  12342.  
  12343.  ulDllRecommended (PULONG) - output 
  12344.            The address of a ULONG where the maximum value from the ws column 
  12345.            for System DLLs is returned. This is the recommended amount of 
  12346.            memory for the application to run with minimum impact on paging. 
  12347.  
  12348.  ulDllAccessed (PULONG) - output 
  12349.            The address of a ULONG where the maximum value from the accessed 
  12350.            column for System DLLs is returned. This is the amount of memory 
  12351.            required to run the application with no paging activity. 
  12352.  
  12353.  
  12354. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSStop2 ΓòÉΓòÉΓòÉ
  12355.  
  12356.  ulrc (ULONG) 
  12357.            return code 
  12358.  
  12359.     T2WS_OK 
  12360.               The T2WSStop2 call completed properly. 
  12361.  
  12362.     T2WS_InvalidHandle 
  12363.               The ws_handle0 passed was not valid. 
  12364.  
  12365.  
  12366. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStop2 Process Working Set ΓòÉΓòÉΓòÉ
  12367.  
  12368. This example will cause THESEUS0 to collect working set data for process with 
  12369. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  12370. set interval is set as 3 intervals. The results are printed to the window. 
  12371.  
  12372. #include "THESEUS0.h"
  12373.  
  12374. T2HANDLE0  t2handle0;
  12375. ULONG      rc;
  12376. int        i;
  12377. WS_HANDLE0 ws_handle0;
  12378. ULONG     ulNow, ulWS, ulAccessed,
  12379.           ulDllNow, ulDllWS, ulDllAccessed;
  12380. ULONG     iIntervals,
  12381.           ulMinimum, ulRecommended,
  12382.           ulDllMinimum, ulDllRecommended,
  12383.           ulTotalRam;
  12384.  
  12385. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  12386. if (rc == T2WS_OK)
  12387. {
  12388.   for (i=0; i<5; i++)
  12389.   {
  12390.     printf( " waiting 2 seconds.");
  12391.     DosSleep( 2000);
  12392.     rc = T2WSProcessTick2( ws_handle0, 3,
  12393.                            &ulNow, &ulWS, &ulAccessed,
  12394.                            &ulDllNow, &ulDllWS, &ulDllAccessed,
  12395.                            &ulTotalRam);
  12396.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i %i %i %i\n",
  12397.             rc, i,
  12398.             ulNow, ulWS, ulAccessed,
  12399.             ulDllNow, ulDllWS, ulDllAccessed,
  12400.             ulTotalRam);
  12401.   }
  12402.   rc = T2WSStop2( &ws_handle0, TRUE, &iIntervals,
  12403.                   &ulMinimum, &ulRecommended, &ulAccessed,
  12404.                   &ulDllMinimum, &ulDllRecommended, &ulDllAccessed);
  12405.   printf( " count = %i, min = %i, rec = %i, acc = %i, dllMin = %i, dllRec = %i, dllAcc = %i\n",
  12406.           iIntervals,
  12407.           ulMinimum, ulRecommended, ulAccessed,
  12408.           ulDllMinimum, ulDllRecommended, ulDllAccessed);
  12409. }
  12410.  
  12411.  
  12412. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12413.  
  12414.  o T2GetHandle0 
  12415.  
  12416.  o T2WSStart 
  12417.  
  12418.  
  12419. ΓòÉΓòÉΓòÉ 12.2.3.7. T2WSCheck ΓòÉΓòÉΓòÉ
  12420.  
  12421. Select an item: 
  12422.  
  12423.  Function Syntax 
  12424.  
  12425.  Parameters 
  12426.  
  12427.  Return Values 
  12428.  
  12429.  Example 
  12430.  
  12431.  Related Functions 
  12432.  
  12433.  
  12434. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSCheck ΓòÉΓòÉΓòÉ
  12435.  
  12436. T2WSCheck is used to cause THESEUS0 to determine if a particular process or the 
  12437. entire system can have working set data collected. 
  12438.  
  12439. #include "THESEUS0.h"
  12440.  
  12441. ULONG ulPidToCheck;
  12442. BOOL  fStatus;
  12443.  
  12444. fStatus = T2WSCheck( ulPidToCheck);
  12445.  
  12446.  
  12447. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSCheck ΓòÉΓòÉΓòÉ
  12448.  
  12449.  ulPidToCheck (ULONG) - input 
  12450.            The pid of the process to be queried. If ulPidToCheck is 0, then 
  12451.            check for the system as a whole. 
  12452.  
  12453.  
  12454. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSCheck ΓòÉΓòÉΓòÉ
  12455.  
  12456.  fStatus (BOOL) 
  12457.            requestable status 
  12458.  
  12459.     TRUE    A T2WSStart request for this process would probably succeed. 
  12460.     FALSE   A T2WSStart request for this process will fail. See return values 
  12461.             of T2WS_InUse and T2WS_SystemBemingDone in T2WSStart Return Values. 
  12462.  
  12463.  
  12464. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSCheck ΓòÉΓòÉΓòÉ
  12465.  
  12466. To determine if it is possible to collect system working set data: 
  12467.  
  12468. if (T2WSCheck( 0))
  12469.   /* I can collect system working set data */
  12470. else
  12471.   /* not valid, someone else is already doing it or someone is
  12472.      collecting process data */
  12473.  
  12474. To determine if it is possible to collect working set data for the process with 
  12475. pid 0002: 
  12476.  
  12477. if (T2WSCheck( 2))
  12478.   /* I can collect process working set data */
  12479. else
  12480.   /* not valid, someone else is already doing it or someone is
  12481.      collecting system data */
  12482.  
  12483.  
  12484. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12485.  
  12486.  o T2WSStart 
  12487.  
  12488.  
  12489. ΓòÉΓòÉΓòÉ 12.3. REXX Application Programming Interface ΓòÉΓòÉΓòÉ
  12490.  
  12491. The functions provided by THESEUS0.DLL are divided into the following 
  12492. categories: 
  12493.  
  12494.  Initialization 
  12495.            Function to cause THESEUS0.DLL to initialize for use by REXX. 
  12496.  Free Memory, Swapper, and Process Functions 
  12497.            Functions to determine information about the system as a whole. 
  12498.  Working Set Functions 
  12499.            Functions to perform working set analysis. 
  12500.  
  12501.  Errors are output to the stderr device. 
  12502.  
  12503.  
  12504. ΓòÉΓòÉΓòÉ 12.3.1. RT2LoadFuncs ΓòÉΓòÉΓòÉ
  12505.  
  12506. Select an item: 
  12507.  
  12508.  Function Syntax 
  12509.  
  12510.  Return Values 
  12511.  
  12512.  Example 
  12513.  
  12514.  Related Functions 
  12515.  
  12516.  
  12517. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2LoadFuncs ΓòÉΓòÉΓòÉ
  12518.  
  12519. RT2LoadFuncs is used to cause THESEUS0 to initialize all its internal 
  12520. information that is required for later use and make the other functions 
  12521. available to REXX. 
  12522.  
  12523. rc = RT2LoadFuncs()
  12524.  
  12525.  
  12526. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2LoadFuncs ΓòÉΓòÉΓòÉ
  12527.  
  12528.  rc (number) return code 
  12529.  
  12530.     0  Initialization completed successfully. 
  12531.  
  12532.     1  There is no THESEUS2.SYS installed in CONFIG.SYS. The program cannot 
  12533.        continue. 
  12534.  
  12535.     2  The version of THESEUS2.SYS installed in CONFIG.SYS is not the version 
  12536.        expected.  ulDDVersion contains the versions found and required. The 
  12537.        program cannot continue. 
  12538.  
  12539.     3  The initialization code could not determine the size of the PTDA. The 
  12540.        program cannot continue. 
  12541.  
  12542.     4  The initialization code could not determine the format for the resident 
  12543.        portion of the MTE. The program cannot continue. 
  12544.  
  12545.  
  12546. ΓòÉΓòÉΓòÉ <hidden> Example - RT2LoadFuncs ΓòÉΓòÉΓòÉ
  12547.  
  12548. This example will cause RT2LoadFuncs to perform the initialization of the 
  12549. internal functions. 
  12550.  
  12551. call RxFuncAdd "RT2LoadFuncs", "THESEUS0", "RT2LoadFuncs"
  12552. rc = RT2LoadFuncs()
  12553. if rc \= 0 then
  12554.   do
  12555.     say "THESEUS0 did not initialize properly.  It's return code = "rc
  12556.     exit
  12557.   end
  12558.  
  12559.  
  12560. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12561.  
  12562. Although the following routines are not directly related, the discussion of 
  12563. errors is applicable. 
  12564.  
  12565.  o error handler 
  12566.  
  12567.  o T2Initialize 
  12568.  
  12569.  
  12570. ΓòÉΓòÉΓòÉ 12.3.2. Free Memory, Swapper, and Process Functions ΓòÉΓòÉΓòÉ
  12571.  
  12572. These functions are used to acquire specific information about the system as a 
  12573. whole. 
  12574.  
  12575. Free memory function: 
  12576.  
  12577.  RT2FreeMemory            Determine the amount of free, idle, and locked 
  12578.                           memory. 
  12579.  
  12580.  SWAPPER.DAT analysis function: 
  12581.  
  12582.  RT2AnalyzeSwapper        Determine the amount of free and used space in the 
  12583.                           SWAPPER.DAT file. 
  12584.  
  12585.  Process functions: 
  12586.  
  12587.  RT2FindProcesses         Returns an array with the current processes. 
  12588.  RT2RamUseByProcess       Returns an array with the current RAM usage by each 
  12589.                           process. 
  12590.  
  12591.  
  12592. ΓòÉΓòÉΓòÉ 12.3.2.1. RT2FreeMemory ΓòÉΓòÉΓòÉ
  12593.  
  12594. Select an item: 
  12595.  
  12596.  Function Syntax 
  12597.  
  12598.  Return Values 
  12599.  
  12600.  Example 
  12601.  
  12602.  Related Functions 
  12603.  
  12604.  
  12605. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2FreeMemory ΓòÉΓòÉΓòÉ
  12606.  
  12607. RT2FreeMemory is used to cause THESEUS0 to calculate the amount of free, idle, 
  12608. and locked memory. 
  12609.  
  12610. FreeReturn = RT2FreeMemory()
  12611.  
  12612. FreeReturn contains: 
  12613.  
  12614. FreeRam IdleRam DirtyRam LLockRam SLockRam BLockRam
  12615.  
  12616.  
  12617. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2FreeMemory ΓòÉΓòÉΓòÉ
  12618.  
  12619.  FreeRam (number) 
  12620.            The number of bytes of free memory. 
  12621.  
  12622.  IdleRam (number) 
  12623.            The number of bytes of idle memory. 
  12624.  
  12625.  DirtyRam (number) 
  12626.            The number of bytes of dirty memory. This memory is included in the 
  12627.            idle memory. 
  12628.  
  12629.  LLockRam (number) 
  12630.            The number of bytes of long-term locked memory. 
  12631.  
  12632.  SLockRam (number) 
  12633.            The number of bytes of short-term locked memory. 
  12634.  
  12635.  BLockRam (number) 
  12636.            The number of bytes of memory which is locked both long-term and 
  12637.            short-term. 
  12638.  
  12639.  
  12640. ΓòÉΓòÉΓòÉ <hidden> Example - RT2FreeMemory ΓòÉΓòÉΓòÉ
  12641.  
  12642. This example will cause RT2FreeMemory to calculate the free, idle, and locked 
  12643. memory. 
  12644.  
  12645. parse value RT2FreeMemory() with freeRam idleRam dirtyRam LLockRam SLockRam BLockRam
  12646. say "freeRam  = "freeRam
  12647. say "idleRam  = "idleRam
  12648. say "dirtyRam = "dirtyRam
  12649. say "LLockRam = "LLockRam
  12650. say "SLockRam = "SLockRam
  12651. say "BLockRam = "BLockRam
  12652. say "cleanRam = "idleRam-dirtyRam" (computed value = idleRam - dirtyRam)"
  12653.  
  12654.  
  12655. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12656.  
  12657.  o RT2LoadFuncs 
  12658.  
  12659.  o Contents of the Free, Idle, and Locked Memory Display 
  12660.  
  12661.  
  12662. ΓòÉΓòÉΓòÉ 12.3.2.2. RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  12663.  
  12664. Select an item: 
  12665.  
  12666.  Function Syntax 
  12667.  
  12668.  Return Values 
  12669.  
  12670.  Example 
  12671.  
  12672.  Related Functions 
  12673.  
  12674.  
  12675. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  12676.  
  12677. RT2AnalyzeSwapper is used to cause THESEUS0 to calculate the amount of free and 
  12678. used space in the SWAPPER.DAT file. 
  12679.  
  12680. SwapReturn = RT2AnalyzeSwapper()
  12681.  
  12682. SwapReturn contains: 
  12683.  
  12684. SwapUsed SwapFree
  12685.  
  12686.  
  12687. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  12688.  
  12689.  SwapUsed (number) 
  12690.            The number of used disk frames. 
  12691.  
  12692.  SwapFree (number) 
  12693.            The number of free disk frames. 
  12694.  
  12695.  Each disk frame is 4K bytes. 
  12696.  
  12697.  
  12698. ΓòÉΓòÉΓòÉ <hidden> Example - RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  12699.  
  12700. This example will cause RT2AnalyzeSwapper to calculate the free and used space 
  12701. in the SWAPPER.DAT file. 
  12702.  
  12703. parse value RT2AnalyzeSwapper() with SwapUsed SwapFree
  12704. say "SwapUsed = "SwapUsed
  12705. say "SwapFree = "SwapFree
  12706.  
  12707.  
  12708. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12709.  
  12710.  o RT2LoadFuncs 
  12711.  
  12712.  o Contents of the Swapper Display 
  12713.  
  12714.  
  12715. ΓòÉΓòÉΓòÉ 12.3.2.3. RT2FindProcesses ΓòÉΓòÉΓòÉ
  12716.  
  12717. Select an item: 
  12718.  
  12719.  Function Syntax 
  12720.  
  12721.  Parameters 
  12722.  
  12723.  Return Values 
  12724.  
  12725.  Example 
  12726.  
  12727.  Related Functions 
  12728.  
  12729.  
  12730. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2FindProcesses ΓòÉΓòÉΓòÉ
  12731.  
  12732. RT2FindProcesses is used to cause THESEUS0 to count the number of processes in 
  12733. the system. It also returns an array which contains some information about each 
  12734. process. 
  12735.  
  12736. RT2FindProcesses "stem"
  12737.  
  12738.  
  12739. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2FindProcesses ΓòÉΓòÉΓòÉ
  12740.  
  12741.  stem (string) 
  12742.            The name of the stem variable used to contain the return list of 
  12743.            processes. 
  12744.  
  12745.  
  12746. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2FindProcesses ΓòÉΓòÉΓòÉ
  12747.  
  12748. stem.0 contains the number of processes found. 
  12749.  
  12750. The list contains an entry for each process currently running. Each entry 
  12751. contains: 
  12752.  
  12753. ptdaPID pidParent cThreads processName
  12754. where: 
  12755.  
  12756.  ptdaPID          The PID of this process. 
  12757.  pidParent        The pid of this process's parent process. 
  12758.  cThreads         The number of threads in this process. 
  12759.  processName      The name of this process. 
  12760.  
  12761.  
  12762. ΓòÉΓòÉΓòÉ <hidden> Example - RT2FindProcesses ΓòÉΓòÉΓòÉ
  12763.  
  12764. This example will cause RT2FindProcesses to return an array with process names 
  12765. and PIDs. 
  12766.  
  12767. call RT2FindProcesses "pTable"
  12768. say "pTable count = "pTable.0
  12769. do i = 1 to pTable.0
  12770.   say i": '"pTable.i"'"
  12771. end
  12772. parse value pTable.1 with Pid Parent Threads Name
  12773. say "pid = "Pid", parent = "Parent", threads = "Threads", name = '"Name"'"
  12774.  
  12775.  
  12776. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12777.  
  12778.  o RT2LoadFuncs 
  12779.  
  12780.  o Contents of the Process List Display 
  12781.  
  12782.  
  12783. ΓòÉΓòÉΓòÉ 12.3.2.4. RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  12784.  
  12785. Select an item: 
  12786.  
  12787.  Function Syntax 
  12788.  
  12789.  Parameters 
  12790.  
  12791.  Return Values 
  12792.  
  12793.  Example 
  12794.  
  12795.  Related Functions 
  12796.  
  12797.  
  12798. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  12799.  
  12800. RT2RamUseByProcess is used to cause THESEUS0 to determine the RAM used by each 
  12801. process in the system. It returns an array which contains the usage of each 
  12802. process. 
  12803.  
  12804. T2RamUseByProcess "stem"
  12805.  
  12806.  
  12807. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  12808.  
  12809.  stem (string) 
  12810.            The name of the stem variable used to contain the return list of 
  12811.            processes. 
  12812.  
  12813.  
  12814. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  12815.  
  12816. stem.0 contains the number of processes found. 
  12817.  
  12818. The list contains an entry for each process currently running. Each entry 
  12819. contains: 
  12820.  
  12821. ptdaPID Private Shared
  12822. where: 
  12823.  
  12824.  ptdaPID          The PID of this process. The entry with PID = 0000 contains 
  12825.                   the memory used by the "system". 
  12826.  Private          The number of bytes of memory in the private arena of this 
  12827.                   process. If multiple processes have the same page in their 
  12828.                   private arenas, the process with the lowest PID value is 
  12829.                   charged with the memory. 
  12830.  Shared           The number of bytes of memory from the shared arena that is 
  12831.                   owned by this process. 
  12832.  
  12833.  
  12834. ΓòÉΓòÉΓòÉ <hidden> Example - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  12835.  
  12836. This example will cause RT2RamUseByProcess to return an array with PIDs and RAM 
  12837. usage for each process. 
  12838.  
  12839. call RT2RamUseByProcess "rTable"
  12840. say "rTable count = "rTable.0
  12841. do i = 1 to rTable.0
  12842.   say i": '"rTable.i"'"
  12843. end
  12844. parse value rTable.1 with Pid Private Shared
  12845. say "pid = "Pid", private = "Private", shared = "Shared
  12846.  
  12847.  
  12848. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12849.  
  12850.  o RT2LoadFuncs 
  12851.  
  12852.  o Contents of the RAM Usage by Process Display 
  12853.  
  12854.  
  12855. ΓòÉΓòÉΓòÉ 12.3.3. Working Set Functions ΓòÉΓòÉΓòÉ
  12856.  
  12857. These functions are used to acquire working set information. 
  12858.  
  12859. Working Set functions: 
  12860.  
  12861.  RT2WSStart            Sets up to do working set analysis for a particular 
  12862.                        process or the entire system. 
  12863.  RT2WSSystemTick       Collects data when doing working set for the entire 
  12864.                        system. 
  12865.  RT2WSProcessTick      Collects data when doing working set for a particular 
  12866.                        process. 
  12867.  RT2WSProcessTick2     Collects data when doing working set for a particular 
  12868.                        process. (This is the same as RT2WSProcessTick, with the 
  12869.                        addition of the System DLL information.) 
  12870.  RT2WSStop             Stops the collection of working set data and returns 
  12871.                        summary information. 
  12872.  RT2WSStop2            Stops the collection of working set data and returns 
  12873.                        summary information. (This is the same as RT2WSStop, 
  12874.                        with the addition of the System DLL information.) 
  12875.  
  12876.  The general way that these functions are used is: 
  12877.  
  12878.   RT2WSStart.
  12879.   do while data is desired
  12880.     Wait for the desired interval to elapse.
  12881.     RT2WSSystemTick or RT2WSProcessTick or RT2WSProcessTick2.
  12882.   end
  12883.   RT2WSStop or RT2WSStop.
  12884.  
  12885.  
  12886. ΓòÉΓòÉΓòÉ 12.3.3.1. RT2WSStart ΓòÉΓòÉΓòÉ
  12887.  
  12888. Select an item: 
  12889.  
  12890.  Function Syntax 
  12891.  
  12892.  Parameters 
  12893.  
  12894.  Return Values 
  12895.  
  12896.  System Example 
  12897.  
  12898.  Process Example 
  12899.  
  12900.  Related Functions 
  12901.  
  12902.  
  12903. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSStart ΓòÉΓòÉΓòÉ
  12904.  
  12905. RT2WSStart is used to cause THESEUS0 to set up for working set data collection 
  12906. for a particular process or the entire system. 
  12907.  
  12908. rc = RT2WSStart("ws_handle"ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)
  12909.                             ΓööΓöÇ,pidΓöÇΓöÿ
  12910.  
  12911.  
  12912. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSStart ΓòÉΓòÉΓòÉ
  12913.  
  12914.  ws_handle0 (string) 
  12915.            The name of a variable that will be the working set handle. This 
  12916.            handle must be used in the RT2WSSystemTick/RT2WSProcessTick and 
  12917.            RT2WSStop calls. 
  12918.  
  12919.            Note:  The value returned in this variable must not be changed. 
  12920.  
  12921.  pid (number) 
  12922.            The pid of the process that you want to measure. If none is 
  12923.            specified, then the working set of the entire system is measured. 
  12924.            The process with pid of 1 is not valid for measurement. 
  12925.  
  12926.  
  12927. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSStart ΓòÉΓòÉΓòÉ
  12928.  
  12929.  rc (number) return code 
  12930.  
  12931.     0  The RT2WSStart call completed properly. The ws_handle0 value is 
  12932.        returned. 
  12933.  
  12934.     1  The process requested is already having working set data collected for 
  12935.        it. A process can have working set data collected for it from only one 
  12936.        place. 
  12937.  
  12938.     2  Working set collection is being done for the system. If system is being 
  12939.        done, no process can have data collected for it. 
  12940.  
  12941.     4  An error occurred during initialization. Working set data cannot be 
  12942.        collected. 
  12943.  
  12944.     5  The requested process was not found as an active process. 
  12945.  
  12946.  
  12947. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStart System Working Set ΓòÉΓòÉΓòÉ
  12948.  
  12949. This example will cause THESEUS0 to collect working set data for the entire 
  12950. system. It will sample every 2 seconds and will take 5 samples. The working set 
  12951. interval is set as 3 intervals. The results are printed to the window. 
  12952.  
  12953. rc = RT2WSStart("ws_handle")
  12954. if rc = 0 then
  12955.   do
  12956.     do i = 1 to 5
  12957.       say "sleep for 2 seconds."
  12958.       call SysSleep 2
  12959.       parse value RT2WSSystemTick("ws_handle",3) with Rc,
  12960.                   Now WS Accessed Free Idle ProcUsed,
  12961.                   ProcCount Resident TotalRam
  12962.       say Rc Now WS Accessed Free Idle,
  12963.           ProcUsed ProcCount Resident TotalRam
  12964.     end
  12965.     StopReturn = RT2WSStop("ws_handle")
  12966.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  12967.     say Rc Intervals Minimum Recommended Accessed
  12968.   end
  12969.  
  12970.  
  12971. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStart Process Working Set ΓòÉΓòÉΓòÉ
  12972.  
  12973. This example will cause THESEUS0 to collect working set data for process with 
  12974. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  12975. set interval is set as 3 intervals. The results are printed to the window. 
  12976.  
  12977. rc = RT2WSStart("ws_handle",2)
  12978. if rc = 0 then
  12979.   do
  12980.     do i = 1 to 5
  12981.       say "sleep for 2 seconds."
  12982.       call SysSleep 2
  12983.       parse value RT2WSProcessTick("ws_handle",3) with Rc,
  12984.                   Now WS Accessed TotalRam
  12985.       say Rc Now WS Accessed TotalRam
  12986.     end
  12987.     StopReturn = RT2WSStop("ws_handle")
  12988.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  12989.     say Rc Intervals Minimum Recommended Accessed
  12990.   end
  12991.  
  12992.  
  12993. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  12994.  
  12995.  o RT2LoadFuncs 
  12996.  
  12997.  o RT2WSSystemTick 
  12998.  
  12999.  o RT2WSProcessTick 
  13000.  
  13001.  o RT2WSProcessTick2 
  13002.  
  13003.  o RT2WSStop 
  13004.  
  13005.  o RT2WSStop2 
  13006.  
  13007.  o Working Set of the Entire System? 
  13008.  
  13009.  o Working Set of a Single Process? 
  13010.  
  13011.  
  13012. ΓòÉΓòÉΓòÉ 12.3.3.2. RT2WSSystemTick ΓòÉΓòÉΓòÉ
  13013.  
  13014. Select an item: 
  13015.  
  13016.  Function Syntax 
  13017.  
  13018.  Parameters 
  13019.  
  13020.  Return Values 
  13021.  
  13022.  Notes 
  13023.  
  13024.  Example 
  13025.  
  13026.  Related Functions 
  13027.  
  13028.  
  13029. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  13030.  
  13031. RT2WSSystemTick is used to cause THESEUS0 to determine the amount of memory 
  13032. accessed since the last RT2WSSystemTick call or from the RT2WSStart call. 
  13033.  
  13034. TickReturn = RT2WSSystemTick("ws_handle", Intervals)
  13035.  
  13036. TickReturn contains: 
  13037.  
  13038. rc Now WS Accessed Free Idle ProcUsed ProcCount Resident TotalRam
  13039.  
  13040.  
  13041. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  13042.  
  13043.  ws_handle0 (string) 
  13044.            The name of the variable that was used in the RT2WSStart. 
  13045.  
  13046.  Intervals (number) 
  13047.            The number of intervals that constitute the working set. This value 
  13048.            must be less than 254 for the computations to work properly. 
  13049.  
  13050.  
  13051. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  13052.  
  13053.  rc (number) 
  13054.            return code 
  13055.  
  13056.     0  The RT2WSSystemTick call completed properly. 
  13057.  
  13058.     3  The ws_handle0 passed was not valid. 
  13059.  
  13060.  Now (number) 
  13061.            The number of pages of memory that was accessed during the last 
  13062.            interval. 
  13063.  
  13064.  WS (number) 
  13065.            The number of pages of memory in the working set. 
  13066.  
  13067.  Accessed (number) 
  13068.            The number of pages of memory accessed since the RT2WSStart was 
  13069.            issued. 
  13070.  
  13071.  Free (number) 
  13072.            The number of pages of free memory. 
  13073.  
  13074.  Idle (number) 
  13075.            The number of pages of idle memory. 
  13076.  
  13077.  ProcUsed (number) 
  13078.            The number of processes that had memory accessed during the 
  13079.            interval. This value indicates the number of processes which are 
  13080.            both running and touching non-system memory. 
  13081.  
  13082.  ProcCount (number) 
  13083.            The total number of processes found during the interval. This number 
  13084.            changes as processes are created or destroyed. 
  13085.  
  13086.  Resident (number) 
  13087.            The number of pages of resident memory. 
  13088.  
  13089.  TotalRam (number) 
  13090.            The total number of pages of RAM being used by OS/2*. 
  13091.  
  13092.  
  13093. ΓòÉΓòÉΓòÉ <hidden> Notes - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  13094.  
  13095. The interval between calls to RT2WSSystemTick should be chosen carefully. If 
  13096. the interval is too short, the processing could cause the rest of the system to 
  13097. have problems. However, if the interval is too long, dynamic memory allocated 
  13098. and freed will be missed. The overhead is dependent on the number of processes, 
  13099. more so than the amount of RAM in the machine. The interval should never be 
  13100. less than 1 second nor longer than 1 minute. 
  13101.  
  13102.  
  13103. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  13104.  
  13105. This example will cause THESEUS0 to collect working set data for the entire 
  13106. system. It will sample every 2 seconds and will take 5 samples. The working set 
  13107. interval is set as 3 intervals. The results are printed to the window. 
  13108.  
  13109. rc = RT2WSStart("ws_handle")
  13110. if rc = 0 then
  13111.   do
  13112.     do i = 1 to 5
  13113.       say "sleep for 2 seconds."
  13114.       call SysSleep 2
  13115.       parse value RT2WSSystemTick("ws_handle",3) with Rc,
  13116.                   Now WS Accessed Free Idle ProcUsed,
  13117.                   ProcCount Resident TotalRam
  13118.       say Rc Now WS Accessed Free Idle,
  13119.           ProcUsed ProcCount Resident TotalRam
  13120.     end
  13121.     StopReturn = RT2WSStop("ws_handle")
  13122.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  13123.     say Rc Intervals Minimum Recommended Accessed
  13124.   end
  13125.  
  13126.  
  13127. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  13128.  
  13129.  o RT2LoadFuncs 
  13130.  
  13131.  o RT2WSStart 
  13132.  
  13133.  o RT2WSStop 
  13134.  
  13135.  o Working Set of the Entire System? 
  13136.  
  13137.  o System Working Set 
  13138.  
  13139.  
  13140. ΓòÉΓòÉΓòÉ 12.3.3.3. RT2WSProcessTick ΓòÉΓòÉΓòÉ
  13141.  
  13142. Select an item: 
  13143.  
  13144.  Function Syntax 
  13145.  
  13146.  Parameters 
  13147.  
  13148.  Return Values 
  13149.  
  13150.  Notes 
  13151.  
  13152.  Example 
  13153.  
  13154.  Related Functions 
  13155.  
  13156.  
  13157. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  13158.  
  13159. RT2WSProcessTick is used to cause THESEUS0 to determine the amount of memory 
  13160. accessed since the last RT2WSProcessTick call or from the RT2WSStart call. 
  13161.  
  13162. TickReturn = RT2WSProcessTick("ws_handle", Intervals)
  13163.  
  13164. TickReturn contains: 
  13165.  
  13166. rc Now WS Accessed TotalRam
  13167.  
  13168.  
  13169. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  13170.  
  13171.  ws_handle0 (string) 
  13172.            The name of the variable that was used in the RT2WSStart. 
  13173.  
  13174.  Intervals (number) 
  13175.            The number of intervals that constitute the working set. This value 
  13176.            must be less than 254 for the computations to work properly. 
  13177.  
  13178.  
  13179. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  13180.  
  13181.  rc (number) 
  13182.            return code 
  13183.  
  13184.     0  The T2WSProcessTick call completed properly. 
  13185.  
  13186.     3  The ws_handle0 passed was not valid. 
  13187.  
  13188.     5  The requested process was not found as an active process. It was found 
  13189.        when the RT2WSStart was done, but has since terminated. 
  13190.  
  13191.  Now (number) 
  13192.            The number of pages of memory that was accessed during the last 
  13193.            interval. 
  13194.  
  13195.  WS (number) 
  13196.            The number of pages of memory in the working set. 
  13197.  
  13198.  Accessed (number) 
  13199.            The number of pages of memory accessed since the RT2WSStart was 
  13200.            issued. 
  13201.  
  13202.  TotalRam (number) 
  13203.            The total number of pages of RAM being used by OS/2*. 
  13204.  
  13205.  
  13206. ΓòÉΓòÉΓòÉ <hidden> Notes - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  13207.  
  13208. The interval between calls to RT2WSProcessTick should be chosen carefully. If 
  13209. the interval is too short, the processing could cause the rest of the system to 
  13210. have problems. However, if the interval is too long, dynamic memory allocated 
  13211. and freed will be missed. The overhead is dependent on the number of processes 
  13212. being monitored, more so than the amount of RAM in the machine. The interval 
  13213. should never be less than 1 second nor longer than 1 minute. 
  13214.  
  13215.  
  13216. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  13217.  
  13218. This example will cause THESEUS0 to collect working set data for process with 
  13219. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  13220. set interval is set as 3 intervals. The results are printed to the window. 
  13221.  
  13222. rc = RT2WSStart("ws_handle",2)
  13223. if rc = 0 then
  13224.   do
  13225.     do i = 1 to 5
  13226.       say "sleep for 2 seconds."
  13227.       call SysSleep 2
  13228.       parse value RT2WSProcessTick("ws_handle",3) with Rc,
  13229.                   Now WS Accessed TotalRam
  13230.       say Rc Now WS Accessed TotalRam
  13231.     end
  13232.     StopReturn = RT2WSStop("ws_handle")
  13233.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  13234.     say Rc Intervals Minimum Recommended Accessed
  13235.   end
  13236.  
  13237.  
  13238. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  13239.  
  13240.  o RT2LoadFuncs 
  13241.  
  13242.  o RT2WSStart 
  13243.  
  13244.  o RT2WSStop 
  13245.  
  13246.  o Working Set of a Single Process? 
  13247.  
  13248.  o Process Working Set 
  13249.  
  13250.  
  13251. ΓòÉΓòÉΓòÉ 12.3.3.4. RT2WSProcessTick2 ΓòÉΓòÉΓòÉ
  13252.  
  13253. Select an item: 
  13254.  
  13255.  Function Syntax 
  13256.  
  13257.  Parameters 
  13258.  
  13259.  Return Values 
  13260.  
  13261.  Notes 
  13262.  
  13263.  Example 
  13264.  
  13265.  Related Functions 
  13266.  
  13267.  
  13268. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSProcessTick2 ΓòÉΓòÉΓòÉ
  13269.  
  13270. RT2WSProcessTick2 is used to cause THESEUS0 to determine the amount of memory 
  13271. accessed since the last RT2WSProcessTick2 call or from the RT2WSStart call. 
  13272.  
  13273. TickReturn = RT2WSProcessTick2("ws_handle", Intervals)
  13274.  
  13275. TickReturn contains: 
  13276.  
  13277. rc Now WS Accessed DllNow DllWS DllAccessed TotalRam
  13278.  
  13279.  
  13280. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSProcessTick2 ΓòÉΓòÉΓòÉ
  13281.  
  13282.  ws_handle0 (string) 
  13283.            The name of the variable that was used in the RT2WSStart. 
  13284.  
  13285.  Intervals (number) 
  13286.            The number of intervals that constitute the working set. This value 
  13287.            must be less than 254 for the computations to work properly. 
  13288.  
  13289.  
  13290. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSProcessTick2 ΓòÉΓòÉΓòÉ
  13291.  
  13292.  rc (number) 
  13293.            return code 
  13294.  
  13295.     0  The T2WSProcessTick2 call completed properly. 
  13296.  
  13297.     3  The ws_handle0 passed was not valid. 
  13298.  
  13299.     5  The requested process was not found as an active process. It was found 
  13300.        when the RT2WSStart was done, but has since terminated. 
  13301.  
  13302.  Now (number) 
  13303.            The number of pages of memory that was accessed during the last 
  13304.            interval. 
  13305.  
  13306.  WS (number) 
  13307.            The number of pages of memory in the working set. 
  13308.  
  13309.  Accessed (number) 
  13310.            The number of pages of memory accessed since the RT2WSStart was 
  13311.            issued. 
  13312.  
  13313.  DllNow (number) 
  13314.            The number of pages of memory that was accessed by System DLLs 
  13315.            during the last interval. 
  13316.  
  13317.  DllWS (number) 
  13318.            The number of pages of memory in the working set of the System DLLs 
  13319.            is returned. 
  13320.  
  13321.  DllAccessed (number) 
  13322.            The number of pages of memory accessed by System DLLs since the 
  13323.            T2WSStart was issued is returned. 
  13324.  
  13325.  TotalRam (number) 
  13326.            The total number of pages of RAM being used by OS/2*. 
  13327.  
  13328.  
  13329. ΓòÉΓòÉΓòÉ <hidden> Notes - RT2WSProcessTick2 ΓòÉΓòÉΓòÉ
  13330.  
  13331. The interval between calls to RT2WSProcessTick2 should be chosen carefully. If 
  13332. the interval is too short, the processing could cause the rest of the system to 
  13333. have problems. However, if the interval is too long, dynamic memory allocated 
  13334. and freed will be missed. The overhead is dependent on the number of processes 
  13335. being monitored, more so than the amount of RAM in the machine. The interval 
  13336. should never be less than 1 second nor longer than 1 minute. 
  13337.  
  13338.  
  13339. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSProcessTick2 ΓòÉΓòÉΓòÉ
  13340.  
  13341. This example will cause THESEUS0 to collect working set data for process with 
  13342. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  13343. set interval is set as 3 intervals. The results are printed to the window. 
  13344.  
  13345. rc = RT2WSStart("ws_handle",2)
  13346. if rc = 0 then
  13347.   do
  13348.     do i = 1 to 5
  13349.       say "sleep for 2 seconds."
  13350.       call SysSleep 2
  13351.       parse value RT2WSProcessTick2("ws_handle",3) with Rc,
  13352.                   Now WS Accessed DllNow DllWS DllAccessed TotalRam
  13353.       say Rc Now WS Accessed DllNow DllWS DllAccessed TotalRam
  13354.     end
  13355.     StopReturn = RT2WSStop2("ws_handle")
  13356.     parse value StopReturn with Rc Intervals,
  13357.                 Minimum Recommended Accessed,
  13358.                 DllMinimum DllRecommended DllAccessed
  13359.     say Rc Intervals,
  13360.         Minimum Recommended Accessed,
  13361.         DllMinimum DllRecommended DllAccessed
  13362.   end
  13363.  
  13364.  
  13365. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  13366.  
  13367.  o RT2LoadFuncs 
  13368.  
  13369.  o RT2WSStart 
  13370.  
  13371.  o RT2WSStop2 
  13372.  
  13373.  o Working Set of a Single Process? 
  13374.  
  13375.  o Process Working Set 
  13376.  
  13377.  
  13378. ΓòÉΓòÉΓòÉ 12.3.3.5. RT2WSStop ΓòÉΓòÉΓòÉ
  13379.  
  13380. Select an item: 
  13381.  
  13382.  Function Syntax 
  13383.  
  13384.  Parameters 
  13385.  
  13386.  Return Values 
  13387.  
  13388.  System Example 
  13389.  
  13390.  Process Example 
  13391.  
  13392.  Related Functions 
  13393.  
  13394.  
  13395. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSStop ΓòÉΓòÉΓòÉ
  13396.  
  13397. RT2WSStop is used to cause THESEUS0 to terminate the Working Set computations 
  13398. and return summary information. 
  13399.  
  13400. StopReturn = RT2WSStop("ws_handle")
  13401.  
  13402. StopReturn contains: 
  13403.  
  13404. rc Intervals Minimum Recommended Accessed
  13405.  
  13406.  
  13407. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSStop ΓòÉΓòÉΓòÉ
  13408.  
  13409.  ws_handle0 (string) 
  13410.            The name of the variable that was used in the RT2WSStart. 
  13411.  
  13412.            Note:  The value of this variable is destroyed. (A DROP is done on 
  13413.            the variable by RT2WSStop.) 
  13414.  
  13415.  
  13416. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSStop ΓòÉΓòÉΓòÉ
  13417.  
  13418.  rc (number) 
  13419.            return code 
  13420.  
  13421.     0  The T2WSStop call completed properly. 
  13422.  
  13423.     3  The ws_handle0 passed was not valid. 
  13424.  
  13425.  Intervals (number) 
  13426.            The number of data collections cycles completed. 
  13427.  
  13428.  Minimum (number) 
  13429.            The maximum value from the now column. This is the amount of memory 
  13430.            absolutely required to run the application without "thrashing" 
  13431.            memory. 
  13432.  
  13433.  Recommended (number) 
  13434.            The maximum value from the ws column. This is the recommended amount 
  13435.            of memory for the application to run with minimum impact on paging. 
  13436.  
  13437.  Accessed (number) 
  13438.            The maximum value from the accessed column. This is the amount of 
  13439.            memory required to run the application with no paging activity. 
  13440.  
  13441.  
  13442. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStop System Working Set ΓòÉΓòÉΓòÉ
  13443.  
  13444. This example will cause THESEUS0 to collect working set data for the entire 
  13445. system. It will sample every 2 seconds and will take 5 samples. The working set 
  13446. interval is set as 3 intervals. The results are printed to the window. 
  13447.  
  13448. rc = RT2WSStart("ws_handle")
  13449. if rc = 0 then
  13450.   do
  13451.     do i = 1 to 5
  13452.       say "sleep for 2 seconds."
  13453.       call SysSleep 2
  13454.       parse value RT2WSSystemTick("ws_handle",3) with Rc,
  13455.                   Now WS Accessed Free Idle ProcUsed,
  13456.                   ProcCount Resident TotalRam
  13457.       say Rc Now WS Accessed Free Idle,
  13458.           ProcUsed ProcCount Resident TotalRam
  13459.     end
  13460.     StopReturn = RT2WSStop("ws_handle")
  13461.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  13462.     say Rc Intervals Minimum Recommended Accessed
  13463.   end
  13464.  
  13465.  
  13466. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStop Process Working Set ΓòÉΓòÉΓòÉ
  13467.  
  13468. This example will cause THESEUS0 to collect working set data for process with 
  13469. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  13470. set interval is set as 3 intervals. The results are printed to the window. 
  13471.  
  13472. rc = RT2WSStart("ws_handle",2)
  13473. if rc = 0 then
  13474.   do
  13475.     do i = 1 to 5
  13476.       say "sleep for 2 seconds."
  13477.       call SysSleep 2
  13478.       parse value RT2WSProcessTick("ws_handle",3) with Rc,
  13479.                   Now WS Accessed TotalRam
  13480.       say Rc Now WS Accessed TotalRam
  13481.     end
  13482.     StopReturn = RT2WSStop("ws_handle")
  13483.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  13484.     say Rc Intervals Minimum Recommended Accessed
  13485.   end
  13486.  
  13487.  
  13488. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  13489.  
  13490.  o RT2LoadFuncs 
  13491.  
  13492.  o RT2WSStart 
  13493.  
  13494.  
  13495. ΓòÉΓòÉΓòÉ 12.3.3.6. RT2WSStop2 ΓòÉΓòÉΓòÉ
  13496.  
  13497. Select an item: 
  13498.  
  13499.  Function Syntax 
  13500.  
  13501.  Parameters 
  13502.  
  13503.  Return Values 
  13504.  
  13505.  Process Example 
  13506.  
  13507.  Related Functions 
  13508.  
  13509.  
  13510. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSStop2 ΓòÉΓòÉΓòÉ
  13511.  
  13512. RT2WSStop2 is used to cause THESEUS0 to terminate the Working Set computations 
  13513. and return summary information. 
  13514.  
  13515. StopReturn = RT2WSStop2("ws_handle")
  13516.  
  13517. StopReturn contains: 
  13518.  
  13519. rc Intervals Minimum Recommended Accessed DllMinimum DllRecommended DllAccessed
  13520.  
  13521.  
  13522. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSStop2 ΓòÉΓòÉΓòÉ
  13523.  
  13524.  ws_handle0 (string) 
  13525.            The name of the variable that was used in the RT2WSStart. 
  13526.  
  13527.            Note:  The value of this variable is destroyed. (A DROP is done on 
  13528.            the variable by RT2WSStop2.) 
  13529.  
  13530.  
  13531. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSStop2 ΓòÉΓòÉΓòÉ
  13532.  
  13533.  rc (number) 
  13534.            return code 
  13535.  
  13536.     0  The T2WSStop2 call completed properly. 
  13537.  
  13538.     3  The ws_handle0 passed was not valid. 
  13539.  
  13540.  Intervals (number) 
  13541.            The number of data collections cycles completed. 
  13542.  
  13543.  Minimum (number) 
  13544.            The maximum value from the now column. This is the amount of memory 
  13545.            absolutely required to run the application without "thrashing" 
  13546.            memory. 
  13547.  
  13548.  Recommended (number) 
  13549.            The maximum value from the ws column. This is the recommended amount 
  13550.            of memory for the application to run with minimum impact on paging. 
  13551.  
  13552.  Accessed (number) 
  13553.            The maximum value from the accessed column. This is the amount of 
  13554.            memory required to run the application with no paging activity. 
  13555.  
  13556.  DllMinimum (number) 
  13557.            The maximum value from the now column for System DLLs is returned. 
  13558.            This is the amount of memory absolutely required to run the 
  13559.            application without "thrashing" memory. 
  13560.  
  13561.  DllRecommended (number) 
  13562.            The maximum value from the ws column for System DLLs is returned. 
  13563.            This is the recommended amount of memory for the application to run 
  13564.            with minimum impact on paging. 
  13565.  
  13566.  DllAccessed (number) 
  13567.            The maximum value from the accessed column for System DLLs is 
  13568.            returned. This is the amount of memory required to run the 
  13569.            application with no paging activity. 
  13570.  
  13571.  
  13572. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStop2 Process Working Set ΓòÉΓòÉΓòÉ
  13573.  
  13574. This example will cause THESEUS0 to collect working set data for process with 
  13575. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  13576. set interval is set as 3 intervals. The results are printed to the window. 
  13577.  
  13578. rc = RT2WSStart("ws_handle",2)
  13579. if rc = 0 then
  13580.   do
  13581.     do i = 1 to 5
  13582.       say "sleep for 2 seconds."
  13583.       call SysSleep 2
  13584.       parse value RT2WSProcessTick2("ws_handle",3) with Rc,
  13585.                   Now WS Accessed DllNow DllWS DllAccessed TotalRam
  13586.       say Rc Now WS Accessed DllNow DllWS DllAccessed TotalRam
  13587.     end
  13588.     StopReturn = RT2WSStop2("ws_handle")
  13589.     parse value StopReturn with Rc Intervals,
  13590.                 Minimum Recommended Accessed,
  13591.                 DllMinimum DllRecommended DllAccessed
  13592.     say Rc Intervals,
  13593.         Minimum Recommended Accessed,
  13594.         DllMinimum DllRecommended DllAccessed
  13595.   end
  13596.  
  13597.  
  13598. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  13599.  
  13600.  o RT2LoadFuncs 
  13601.  
  13602.  o RT2WSStart 
  13603.  
  13604.  o RT2WSProcessTick2 
  13605.  
  13606.  
  13607. ΓòÉΓòÉΓòÉ 13. Errors ΓòÉΓòÉΓòÉ
  13608.  
  13609. THESEUS2 displays errors in two different ways: 
  13610.  
  13611.  o in popup windows 
  13612.  o imbedded within output. 
  13613.  
  13614.  
  13615. ΓòÉΓòÉΓòÉ 13.1. Popup Window Errors ΓòÉΓòÉΓòÉ
  13616.  
  13617. THESEUS2 generates several popup windows: 
  13618.  
  13619.  o Cannot describe an HCO 
  13620.  o Clipboard error 
  13621.  o Dependent window error 
  13622.  o Error in decimal input 
  13623.  o Error in hex input 
  13624.  o Find text not entered 
  13625.  o Incorrect THESEUS2.SYS version 
  13626.  o Missing THESEUS2.SYS file 
  13627.  o No monospaced font 
  13628.  o Out of windows error 
  13629.  o Process ended 
  13630.  o PTDA size not determined 
  13631.  o MTE format not recognized 
  13632.  o File name not valid 
  13633.  
  13634.  
  13635. ΓòÉΓòÉΓòÉ 13.1.1. Cannot describe an HCO ΓòÉΓòÉΓòÉ
  13636.  
  13637.  Message text: 
  13638.       An HCO cannot be described. 
  13639.  
  13640.  Explanation: 
  13641.       The hco is the only one of the address/handle type of hypertext links 
  13642.       that THESEUS2 is not programmed to describe. 
  13643.  
  13644.  Corrective action: 
  13645.       Do not request a description of an hco. 
  13646.  
  13647.  
  13648. ΓòÉΓòÉΓòÉ 13.1.2. Clipboard error ΓòÉΓòÉΓòÉ
  13649.  
  13650.  Message text: 
  13651.       Could not allocate memory for Clipboard data.  Copy request cannot be 
  13652.       done. 
  13653.  
  13654.  Explanation: 
  13655.       An error was received while trying allocate shared memory. This memory is 
  13656.       required in order to copy the marked area into the clipboard. 
  13657.  
  13658.  Corrective action: 
  13659.       Free some memory and try the request again. 
  13660.  
  13661.  
  13662. ΓòÉΓòÉΓòÉ 13.1.3. Dependent Window Error ΓòÉΓòÉΓòÉ
  13663.  
  13664.  Message text: 
  13665.       This window cannot be closed before its dependent window is closed. 
  13666.  
  13667.  Explanation: 
  13668.       Several explanation detail windows are dependent on other windows for 
  13669.       their data. As long as the explanation detail window is present, the data 
  13670.       source window cannot be closed. 
  13671.  
  13672.  Corrective action: 
  13673.       The dependent window will have the focus when you close the pop-up. Close 
  13674.       the explanation detail window, then you can close the data source window. 
  13675.  
  13676.  
  13677. ΓòÉΓòÉΓòÉ 13.1.4. Error in decimal input ΓòÉΓòÉΓòÉ
  13678.  
  13679.  Message text: 
  13680.       Enter a valid decimal number in the 's' field. 
  13681.       s can be `Interval' or `Intervals per Working Set'. 
  13682.  
  13683.  Explanation: 
  13684.       An error was made when typing the desired decimal value into the dialog 
  13685.       field. 
  13686.  
  13687.  Corrective action: 
  13688.       When you press OK, the cursor is placed in the erroneous field in the 
  13689.       dialog. Type the correct decimal character and press Enter. 
  13690.  
  13691.  
  13692. ΓòÉΓòÉΓòÉ 13.1.5. Error in hex input ΓòÉΓòÉΓòÉ
  13693.  
  13694.  Message text: 
  13695.       Enter a valid hex number in the 's' field. 
  13696.       s can be `Address', `Length', `Width', `Selector', `or Offset'. 
  13697.  
  13698.  Explanation: 
  13699.       An error was made when typing the desired hexadecimal value into the 
  13700.       dialog field. 
  13701.  
  13702.  Corrective action: 
  13703.       When you press OK, the cursor is placed in the erroneous field in the 
  13704.       dialog. Type the correct hexadecimal character and press Enter. 
  13705.  
  13706.  
  13707. ΓòÉΓòÉΓòÉ 13.1.6. Find text not entered ΓòÉΓòÉΓòÉ
  13708.  
  13709.  Message text: 
  13710.       Text must be typed in the field. 
  13711.  
  13712.  Explanation: 
  13713.       You did not type a string to find. 
  13714.  
  13715.  Corrective action: 
  13716.       When you press OK, the cursor is placed in the erroneous field in the 
  13717.       dialog. Type the string you want to find and press Enter. 
  13718.  
  13719.  
  13720. ΓòÉΓòÉΓòÉ 13.1.7. Incorrect THESEUS2.SYS Version ΓòÉΓòÉΓòÉ
  13721.  
  13722.  Message text: 
  13723.       THESEUS2.SYS is not version nn. Please install the current version and 
  13724.       restart the computer. 
  13725.  
  13726.  Explanation: 
  13727.       The version of THESEUS2.SYS which is installed in CONFIG.SYS is not the 
  13728.       expected version. nn gives the version number that is expected. If the 
  13729.       correct device driver is not found, THESEUS2 cannot continue to run. 
  13730.  
  13731.  Corrective action: 
  13732.       Install the correct version of THESEUS2.SYS in your CONFIG.SYS file, then 
  13733.       restart your computer. 
  13734.  
  13735.  
  13736. ΓòÉΓòÉΓòÉ 13.1.8. Missing THESEUS2.SYS File ΓòÉΓòÉΓòÉ
  13737.  
  13738.  Message text: 
  13739.       THESEUS2.SYS is not installed in your CONFIG.SYS. Please install the 
  13740.       current version and restart the computer. 
  13741.  
  13742.  Explanation: 
  13743.       THESEUS2 is made up of several files. The device driver THESEUS2.SYS must 
  13744.       be installed in the CONFIG.SYS. If this device driver is not found, 
  13745.       THESEUS2 cannot continue to run. 
  13746.  
  13747.  Corrective action: 
  13748.       Install THESEUS2.SYS in your CONFIG.SYS file, then restart the computer. 
  13749.  
  13750.  
  13751. ΓòÉΓòÉΓòÉ 13.1.9. No Monospaced Font ΓòÉΓòÉΓòÉ
  13752.  
  13753.  Message text: 
  13754.       A monospaced font was not found.  Please install one. 
  13755.  
  13756.  Explanation: 
  13757.       THESEUS2 uses only monospaced Single Byte Character Set (SBCS) fonts. The 
  13758.       "System Monospaced - 8x12" font is used, if it is present. If it is not 
  13759.       present and another monospaced font is present, then the first monospaced 
  13760.       font found will be used. If a monospaced font is not found, THESEUS2 
  13761.       cannot continue to run. 
  13762.  
  13763.  Corrective action: 
  13764.       Install a monospaced font, then try THESEUS2 again. 
  13765.  
  13766.  
  13767. ΓòÉΓòÉΓòÉ 13.1.10. Out of Windows Error ΓòÉΓòÉΓòÉ
  13768.  
  13769.  Message text: 
  13770.       All THESEUS2 windows are in use. You must close one before another can be 
  13771.       created. 
  13772.  
  13773.  Explanation: 
  13774.       THESEUS2 can generate only 16 Detail windows. 
  13775.  
  13776.  Corrective action: 
  13777.       Close one or more of the open THESEUS2 Detail windows. The Windows 
  13778.       pull-down on the Process Hierarchy window contains a list of the Detail 
  13779.       windows currently open. 
  13780.  
  13781.  
  13782. ΓòÉΓòÉΓòÉ 13.1.11. Process Ended ΓòÉΓòÉΓòÉ
  13783.  
  13784.  Message text: 
  13785.       The selected process has ended.  The request cannot be performed. 
  13786.  
  13787.  Explanation: 
  13788.       You had previously selected a process on the Process Hierarchy window. 
  13789.       The process you had selected has ended and you have requested that a 
  13790.       display be generated from that process. 
  13791.  
  13792.  Corrective action: 
  13793.       Only active processes can be used for display generation. 
  13794.  
  13795.  
  13796. ΓòÉΓòÉΓòÉ 13.1.12. PTDA Size not Determined ΓòÉΓòÉΓòÉ
  13797.  
  13798.  Message text: 
  13799.       This version of OS/2 is not supported by THESEUS2. The size of the PTDA 
  13800.       cannot be determined. 
  13801.  
  13802.  Explanation: 
  13803.       Different levels of OS/2 2.x have different sizes of PTDAs. THESEUS2 must 
  13804.       "discover" the size of the PTDA during its initialization. The version of 
  13805.       OS/2 2.x that you have is so different from those THESEUS2 expects that 
  13806.       it could not determine the PTDA size. 
  13807.  
  13808.  Corrective action: 
  13809.       Either: 
  13810.  
  13811.     o Acquire a version of THESEUS2 that supports the installed version of OS/2 
  13812.       2.x, or 
  13813.     o Install a version of OS/2 2.x that THESEUS2 supports. 
  13814.  
  13815.  
  13816. ΓòÉΓòÉΓòÉ 13.1.13. MTE Format not Recognized ΓòÉΓòÉΓòÉ
  13817.  
  13818.  Message text: 
  13819.       This version of OS/2 is not supported by THESEUS2. The Module Table Entry 
  13820.       (MTE) format is unknown. 
  13821.  
  13822.  Explanation: 
  13823.       Different levels of OS/2 2.x have different formats of the MTEs. THESEUS2 
  13824.       must "discover" the format of the MTE during its initialization. The 
  13825.       version of OS/2 2.x that you have is so different from those THESEUS2 
  13826.       expects that it could not determine the MTE format. 
  13827.  
  13828.  Corrective action: 
  13829.       Either: 
  13830.  
  13831.     o Acquire a version of THESEUS2 that supports the installed version of OS/2 
  13832.       2.x, or 
  13833.     o Install a version of OS/2 2.x that THESEUS2 supports. 
  13834.  
  13835.  
  13836. ΓòÉΓòÉΓòÉ 13.1.14. File Name not Valid ΓòÉΓòÉΓòÉ
  13837.  
  13838.  Message text: 
  13839.       The file name is not valid for the file system on the specified disk. 
  13840.  
  13841.  Explanation: 
  13842.       The file name supplied in the SaveAs dialog was not accepted by the 
  13843.       operating system. You may have specified: 
  13844.  
  13845.     o An invalid path, or 
  13846.     o A long file name for a FAT disk. 
  13847.  
  13848.  Corrective action: 
  13849.       Specify a correct path and file name. 
  13850.  
  13851.  
  13852. ΓòÉΓòÉΓòÉ 13.2. Imbedded Errors ΓòÉΓòÉΓòÉ
  13853.  
  13854. THESEUS2 generates some errors imbedded within the output: 
  13855.  
  13856.  o Linear address: no Page Table 
  13857.  o Linear address+length: no Page Table 
  13858.  o Linear address: page not present 
  13859.  o Linear address+Length: page not present 
  13860.  o Linear address+Length: > 32 bits 
  13861.  o SystemArenaHeaderLinear was not properly located 
  13862.  o Unknown error to error_handler0 
  13863.  
  13864.  (When the low-level error routine cannot determine what window is generating 
  13865.  data, these messages may appear in a popup window. However, they will normally 
  13866.  appear in the output window text at the point that the error was detected.) 
  13867.  
  13868.  
  13869. ΓòÉΓòÉΓòÉ 13.2.1. Linear address: no Page Table ΓòÉΓòÉΓòÉ
  13870.  
  13871.  Message text: 
  13872.       >>> Linear address: no Page Table, linear=llllllll. 
  13873.  
  13874.  Explanation: 
  13875.       A "read linear" request was done in the program. The requested linear 
  13876.       address is not valid because there is no page table defined for that 
  13877.       linear address. 
  13878.  
  13879.       This is an internal error in the program. It is not caused by user input. 
  13880.       It is normally caused by the program improperly interpreting a value in 
  13881.       one of the OS/2 control blocks. It is presented for the program support 
  13882.       personnel's use. 
  13883.  
  13884.  
  13885. ΓòÉΓòÉΓòÉ 13.2.2. Linear address+length: no Page Table ΓòÉΓòÉΓòÉ
  13886.  
  13887.  Message text: 
  13888.       >>> Linear address+length: no Page Table, linear=llllllll, 
  13889.       length=hhhhhhhh. 
  13890.  
  13891.  Explanation: 
  13892.       A "read linear" request was done in the program. The linear address at 
  13893.       the end of the requested area is not valid because there is no page table 
  13894.       defined for that linear address. 
  13895.  
  13896.       This is an internal error in the program. It is not caused by user input. 
  13897.       It is normally caused by the program improperly interpreting a value in 
  13898.       one of the OS/2 control blocks. It is presented for the program support 
  13899.       personnel's use. 
  13900.  
  13901.  
  13902. ΓòÉΓòÉΓòÉ 13.2.3. Linear address: page not present ΓòÉΓòÉΓòÉ
  13903.  
  13904.  Message text: 
  13905.       >>> Linear address: page not present, linear=llllllll. 
  13906.  
  13907.  Explanation: 
  13908.       A "read linear" request was done in the program. The requested linear 
  13909.       address is not valid because the page at that linear address is not 
  13910.       present. 
  13911.  
  13912.       This is an internal error in the program. It is not caused by user input. 
  13913.       It is normally caused by the program improperly interpreting a value in 
  13914.       one of the OS/2 control blocks. It is presented for the program support 
  13915.       personnel's use. 
  13916.  
  13917.  
  13918. ΓòÉΓòÉΓòÉ 13.2.4. Linear address+Length: page not present ΓòÉΓòÉΓòÉ
  13919.  
  13920.  Message text: 
  13921.       >>> Linear address+Length: page not present, linear=llllllll, 
  13922.       length=hhhhhhhh. 
  13923.  
  13924.  Explanation: 
  13925.       A "read linear" request was done in the program. The linear address at 
  13926.       the end of the requested area is not valid because the page at that 
  13927.       linear address is not present. 
  13928.  
  13929.       This is an internal error in the program. It is not caused by user input. 
  13930.       It is normally caused by the program improperly interpreting a value in 
  13931.       one of the OS/2 control blocks. It is presented for the program support 
  13932.       personnel's use. 
  13933.  
  13934.  
  13935. ΓòÉΓòÉΓòÉ 13.2.5. Linear address+Length: > 32 bits ΓòÉΓòÉΓòÉ
  13936.  
  13937.  Message text: 
  13938.       >>> Linear address+Length: > 32 bits, linear=llllllll, length=hhhhhhhh. 
  13939.  
  13940.  Explanation: 
  13941.       A "read linear" request was done in the program. The requested linear 
  13942.       address is not valid because the address of the end of the area is 
  13943.       greater than 32 bits. 
  13944.  
  13945.       This is an internal error in the program. It is not caused by user input. 
  13946.       It is normally caused by the program improperly interpreting a value in 
  13947.       one of the OS/2 control blocks. It is presented for the program support 
  13948.       personnel's use. 
  13949.  
  13950.  
  13951. ΓòÉΓòÉΓòÉ 13.2.6. SystemArenaHeaderLinear was not properly located ΓòÉΓòÉΓòÉ
  13952.  
  13953.  Message text: 
  13954.       >>> SystemArenaHeaderLinear was not properly located at llllllll. 
  13955.  
  13956.  Explanation: 
  13957.       The "System Arena Header" was not found. 
  13958.  
  13959.       This is an internal error in the program. It is not caused by user input. 
  13960.       It is normally caused by the program improperly interpreting a value in 
  13961.       one of the OS/2 control blocks. It is presented for the program support 
  13962.       personnel's use. 
  13963.  
  13964.  
  13965. ΓòÉΓòÉΓòÉ 13.2.7. Unknown error to error_handler0 ΓòÉΓòÉΓòÉ
  13966.  
  13967.  Message text: 
  13968.       >>> Unknown error to error_handler0: error_code=i1, p1=i2, p2=i3. 
  13969.  
  13970.  Explanation: 
  13971.       An error was sent to the error handler which had an unknown error code. 
  13972.       The values printed (i1, i2, i3) are the inputs to the routine. 
  13973.  
  13974.       This is an internal error in the program. It is not caused by user input. 
  13975.       It is normally caused by the program improperly interpreting a value in 
  13976.       one of the OS/2 control blocks. It is presented for the program support 
  13977.       personnel's use. 
  13978.  
  13979.  
  13980. ΓòÉΓòÉΓòÉ <hidden> Enter Button ΓòÉΓòÉΓòÉ
  13981.  
  13982. When you press the Enter button, the action is performed. 
  13983.  
  13984.  
  13985. ΓòÉΓòÉΓòÉ <hidden> Find Button ΓòÉΓòÉΓòÉ
  13986.  
  13987. When you press the Find button, the search begins from the start of the window. 
  13988.  
  13989.  
  13990. ΓòÉΓòÉΓòÉ <hidden> OK Button ΓòÉΓòÉΓòÉ
  13991.  
  13992. When you press the OK button, the function is performed. 
  13993.  
  13994.  
  13995. ΓòÉΓòÉΓòÉ <hidden> Start Button ΓòÉΓòÉΓòÉ
  13996.  
  13997. When you press the Start button, the function is performed. Periodic updates 
  13998. are automatically started. 
  13999.  
  14000.  
  14001. ΓòÉΓòÉΓòÉ <hidden> Cancel Button ΓòÉΓòÉΓòÉ
  14002.  
  14003. When you press the Cancel button, the dialog is canceled and you are returned 
  14004. to the window.