home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: SysTools / SysTools.zip / spm2.zip / theseus2.inf (.txt) < prev    next >
OS/2 Help File  |  1993-11-23  |  349KB  |  11,821 lines

  1.  
  2. ΓòÉΓòÉΓòÉ <hidden> Arena ΓòÉΓòÉΓòÉ
  3.  
  4. An arena maps a linear address space by way of a doubly linked circular chain 
  5. of arena records. Each arena starts with a sentinel record. There are three 
  6. separate arenas associated with each process: 
  7.  
  8. private  Maps the linear address space unique to that process. This memory 
  9.          holds EXE files and memory objects allocated using the DosAllocMem 
  10.          function. 
  11. shared   Maps the linear address space shared by all the processes. This memory 
  12.          holds DLL files and memory objects allocated using the 
  13.          DosAllocSharedMem function. 
  14. system   Maps the linear address space which belongs to the OS/2 system. 
  15.  
  16.  
  17. ΓòÉΓòÉΓòÉ <hidden> Arena Record ΓòÉΓòÉΓòÉ
  18.  
  19. There is an arena record for each memory object that has linear address space 
  20. allocated to it. The handle of the arena record is a har. The arena records are 
  21. arranged in arenas. 
  22.  
  23.  
  24. ΓòÉΓòÉΓòÉ <hidden> Claimable Page ΓòÉΓòÉΓòÉ
  25.  
  26. A claimable page is one that is not marked present in a particular Page Table 
  27. Entry, however, the page is present. On the first reference to the page, the 
  28. page will simply be marked "present". 
  29.  
  30.  
  31. ΓòÉΓòÉΓòÉ <hidden> Clean Page ΓòÉΓòÉΓòÉ
  32.  
  33. A clean page is one that has not been written to in RAM since being loaded from 
  34. disk. 
  35.  
  36.  
  37. ΓòÉΓòÉΓòÉ <hidden> Committed Memory ΓòÉΓòÉΓòÉ
  38.  
  39. Committed memory is memory that has been both allocated and committed. 
  40. Committed memory has an entry in the Virtual Page Table and can be "backed" by: 
  41.  
  42. o A page of real RAM 
  43. o A page of DASD in the SWAPPER.DAT file 
  44. o A page of a program file 
  45. o Nothing. 
  46.  
  47.  
  48. ΓòÉΓòÉΓòÉ <hidden> Context ΓòÉΓòÉΓòÉ
  49.  
  50. Many memory objects are associated with a particular OS/2 process. The context 
  51. of a memory object refers to the process with which it is associated. 
  52.  
  53.  
  54. ΓòÉΓòÉΓòÉ <hidden> Context Record ΓòÉΓòÉΓòÉ
  55.  
  56. There is a context record for each process that can access a particular memory 
  57. object in the shared arena. The handle of the context record is a hco. 
  58.  
  59.  
  60. ΓòÉΓòÉΓòÉ <hidden> Dirty Page ΓòÉΓòÉΓòÉ
  61.  
  62. A dirty page is one that has been written to in RAM, but not yet written to the 
  63. SWAPPER.DAT file. 
  64.  
  65.  
  66. ΓòÉΓòÉΓòÉ <hidden> DTE ΓòÉΓòÉΓòÉ
  67.  
  68. A DTE, or Descriptor Table Entry, is an entry in a Descriptor Table (GDT, LDT, 
  69. or IDT). It includes the linear address and size of a segment. 
  70.  
  71.  
  72. ΓòÉΓòÉΓòÉ <hidden> Exit List ΓòÉΓòÉΓòÉ
  73.  
  74. The list of routines that are to be executed when a process ends. 
  75.  
  76.  
  77. ΓòÉΓòÉΓòÉ <hidden> File Handle ΓòÉΓòÉΓòÉ
  78.  
  79. The handle of a file. There are process handles which are unique for a process 
  80. and system handles which are common across the entire system. 
  81.  
  82.  
  83. ΓòÉΓòÉΓòÉ <hidden> Flat Address ΓòÉΓòÉΓòÉ
  84.  
  85. A flat address is a virtual offset. Because the selector registers (loaded by 
  86. the operating system) have a base address of 00000000, flat is equivalent to 
  87. linear. 
  88.  
  89.  
  90. ΓòÉΓòÉΓòÉ <hidden> Fonts ΓòÉΓòÉΓòÉ
  91.  
  92. Fonts control the shapes and sizes of the characters being displayed. Only 
  93. monospace fonts (all characters the same width) can be used by THESEUS2. Only 
  94. display fonts can be selected in THESEUS2. Printer fonts cannot be changed by 
  95. THESEUS2. 
  96.  
  97.  
  98. ΓòÉΓòÉΓòÉ <hidden> Free Page ΓòÉΓòÉΓòÉ
  99.  
  100. A free page is a page of RAM not currently in use. However, it may be allocated 
  101. by the Page Manager and associated with a memory object. 
  102.  
  103.  
  104. ΓòÉΓòÉΓòÉ <hidden> GDT ΓòÉΓòÉΓòÉ
  105.  
  106. The Global Descriptor Table contains the descriptor table entries for selectors 
  107. that can be accessed by any process. 
  108.  
  109.  
  110. ΓòÉΓòÉΓòÉ <hidden> Handle ΓòÉΓòÉΓòÉ
  111.  
  112. Within the OS/2 system, a handle is used to refer from one control block to 
  113. another, without using the actual address. A handle is normally a 16-bit word. 
  114.  
  115.  
  116. ΓòÉΓòÉΓòÉ <hidden> har ΓòÉΓòÉΓòÉ
  117.  
  118. The handle of an arena record is a har. 
  119.  
  120.  
  121. ΓòÉΓòÉΓòÉ <hidden> hco ΓòÉΓòÉΓòÉ
  122.  
  123. The handle of a context record is a hco. 
  124.  
  125.  
  126. ΓòÉΓòÉΓòÉ <hidden> hmte ΓòÉΓòÉΓòÉ
  127.  
  128. The handle of an MTE is a hmte. 
  129.  
  130.  
  131. ΓòÉΓòÉΓòÉ <hidden> hob ΓòÉΓòÉΓòÉ
  132.  
  133. The handle of an object record is a hob. 
  134.  
  135.  
  136. ΓòÉΓòÉΓòÉ <hidden> Hyperblock Links ΓòÉΓòÉΓòÉ
  137.  
  138. Hyperblock* links allow you to navigate from one control block to another by 
  139. using the mouse to select the address of the block to be viewed. A hyperblock 
  140. link is denoted by its different color. The color of the links can be changed 
  141. with the `Link' color option of the Misc menu in the Process Hierarchy window. 
  142.  
  143.  
  144. ΓòÉΓòÉΓòÉ <hidden> Idle Page ΓòÉΓòÉΓòÉ
  145.  
  146. An idle pages is a page that has not been recently used. The Page Ager program 
  147. runs when the number of free pages becomes small. Idle pages are placed on the 
  148. idle list before being removed from the system. 
  149.  
  150.  
  151. ΓòÉΓòÉΓòÉ <hidden> IDT ΓòÉΓòÉΓòÉ
  152.  
  153. The Interrupt Descriptor Table contains the descriptor table entries for 
  154. selectors used to execute the proper interrupt routine. 
  155.  
  156.  
  157. ΓòÉΓòÉΓòÉ <hidden> LDT ΓòÉΓòÉΓòÉ
  158.  
  159. The Local Descriptor Table contains the descriptor table entries for selectors 
  160. that can be accessed by a single process. There is one for each process. 
  161.  
  162.  
  163. ΓòÉΓòÉΓòÉ <hidden> Linear Address ΓòÉΓòÉΓòÉ
  164.  
  165. A linear address is the intermediate result when the CPU is resolving memory 
  166. addresses. They are represented by THESEUS2 as llllllll (in hexadecimal 
  167. notation). 
  168.  
  169.  
  170. ΓòÉΓòÉΓòÉ <hidden> Locked Page ΓòÉΓòÉΓòÉ
  171.  
  172. A locked page is a page of RAM that has been locked with the DevHlp_Lock... 
  173. function. It may be locked either long term or short term. 
  174.  
  175.  
  176. ΓòÉΓòÉΓòÉ <hidden> Memory Leak ΓòÉΓòÉΓòÉ
  177.  
  178. When a program allocates memory and then does not free it, that program is said 
  179. to be "leaking memory." 
  180.  
  181.  
  182. ΓòÉΓòÉΓòÉ <hidden> Memory Object ΓòÉΓòÉΓòÉ
  183.  
  184. A memory object is the logical allocation unit of memory. Applications allocate 
  185. memory objects using the DosAllocMem or DosAllocSharedMem functions. 
  186.  
  187.  
  188. ΓòÉΓòÉΓòÉ <hidden> MTE ΓòÉΓòÉΓòÉ
  189.  
  190. An MTE, or Module Table Entry, is an in-memory description of an executable 
  191. module. The handle of an MTE is an hmte. 
  192.  
  193.  
  194. ΓòÉΓòÉΓòÉ <hidden> Object Record ΓòÉΓòÉΓòÉ
  195.  
  196. There is an object record for each memory object in the system. Most objects 
  197. are real objects and associated with arena records, containing a linear 
  198. address. However, some objects are pseudo-objects, and the linear address is in 
  199. the object record. The handle of an object record is a hob. 
  200.  
  201.  
  202. ΓòÉΓòÉΓòÉ <hidden> Owner ΓòÉΓòÉΓòÉ
  203.  
  204. All allocated memory has an owner. For system memory, that owner is a 
  205. hexadecimal value, starting with hex FF. Each sub-system in the kernel has one 
  206. or more unique values for keeping track of allocated memory. For private 
  207. memory, the owner is the hob of a PTDA or MTE. For shared memory, the owner may 
  208. be either a system owner value, the hob of a PTDA, or the hob of an MTE. The 
  209. owner value is in the object record. 
  210.  
  211.  
  212. ΓòÉΓòÉΓòÉ <hidden> Page Directory ΓòÉΓòÉΓòÉ
  213.  
  214. The Page Directory is the first-level address translation table used by the 
  215. hardware to map a linear address to a physical address. The entries in the Page 
  216. Directory point to Page Tables. 
  217.  
  218.  
  219. ΓòÉΓòÉΓòÉ <hidden> Page Frame Table ΓòÉΓòÉΓòÉ
  220.  
  221. The Page Frame Table has an entry for each page in the physical address space. 
  222. This space includes all the real RAM in the machine, the I/O RAM space, and the 
  223. ROM space. This table keeps track of the contents of each physical page. 
  224.  
  225.  
  226. ΓòÉΓòÉΓòÉ <hidden> Page Table ΓòÉΓòÉΓòÉ
  227.  
  228. The Page Table is the second-level address translation table used by the 
  229. hardware to map a linear address to a physical address. The entries in the Page 
  230. Directory point to Page Tables, which in turn point to pages of physical RAM. 
  231.  
  232.  
  233. ΓòÉΓòÉΓòÉ <hidden> PDE ΓòÉΓòÉΓòÉ
  234.  
  235. A PDE, or Page Directory Entry, contains the physical address of a particular 
  236. Page Table. 
  237.  
  238.  
  239. ΓòÉΓòÉΓòÉ <hidden> Physical Address ΓòÉΓòÉΓòÉ
  240.  
  241. A physical address is the final result when the CPU is resolving memory 
  242. addresses. They are used to address the memory chips. They are represented by 
  243. THESEUS2 as pppppppp (in hexadecimal notation). 
  244.  
  245.  
  246. ΓòÉΓòÉΓòÉ <hidden> Physical Memory ΓòÉΓòÉΓòÉ
  247.  
  248. The physical memory in the machine is referenced by a physical address. (As 
  249. opposed to virtual memory.) 
  250.  
  251.  
  252. ΓòÉΓòÉΓòÉ <hidden> PID ΓòÉΓòÉΓòÉ
  253.  
  254. The process ID is a 16-bit number that uniquely identifies an OS/2 process. 
  255.  
  256.  
  257. ΓòÉΓòÉΓòÉ <hidden> Popup Menu ΓòÉΓòÉΓòÉ
  258.  
  259. A popup menu is activated by a single-click of mouse button 2 or by pressing 
  260. the Shift-F10 key sequence. A popup menu appears next to the item selected. 
  261.  
  262.  
  263. ΓòÉΓòÉΓòÉ <hidden> Present Pages ΓòÉΓòÉΓòÉ
  264.  
  265. Present pages are those pages currently in RAM. 
  266.  
  267.  
  268. ΓòÉΓòÉΓòÉ <hidden> Process ΓòÉΓòÉΓòÉ
  269.  
  270. In the OS/2 system, processes are the owners of resources. One or more 
  271. cooperating processes make up each application. Each process takes its name 
  272. from EXE file it is associated with. Each process is uniquely identified within 
  273. the OS/2 system by its PID. 
  274.  
  275. (In other systems, processes are called "tasks.") 
  276.  
  277.  
  278. ΓòÉΓòÉΓòÉ <hidden> Process Page Directory ΓòÉΓòÉΓòÉ
  279.  
  280. Each process is associated with a Process Page Directory. This directory 
  281. contains the PDEs for the first 512MB of linear address space. The Process Page 
  282. Directory is copied into the first 128 entries of the System Page Directory 
  283. when the process is dispatched. 
  284.  
  285.  
  286. ΓòÉΓòÉΓòÉ <hidden> Pseudo-Objects ΓòÉΓòÉΓòÉ
  287.  
  288. Pseudo-objects are areas of memory allocated from kernel heap space. Because 
  289. they have hobs, they can be accessed the same way as normal memory objects. 
  290. MTEs and PTDAs are pseudo-objects. 
  291.  
  292.  
  293. ΓòÉΓòÉΓòÉ <hidden> PTDA ΓòÉΓòÉΓòÉ
  294.  
  295. The PTDA, or Per Task Data Area, describes the resources owned by a process. 
  296.  
  297.  
  298. ΓòÉΓòÉΓòÉ <hidden> PTE ΓòÉΓòÉΓòÉ
  299.  
  300. The PTE, or Page Table Entry, contains the physical address of a page. 
  301.  
  302.  
  303. ΓòÉΓòÉΓòÉ <hidden> RAM ΓòÉΓòÉΓòÉ
  304.  
  305. RAM, or Random Access Memory, is the modifiable memory in the computer used by 
  306. programs. See Physical Memory. 
  307.  
  308.  
  309. ΓòÉΓòÉΓòÉ <hidden> Resident Pages ΓòÉΓòÉΓòÉ
  310.  
  311. Resident pages are pages of RAM that cannot be swapped.  They must remain in 
  312. RAM at all times until freed. 
  313.  
  314.  
  315. ΓòÉΓòÉΓòÉ <hidden> ROM ΓòÉΓòÉΓòÉ
  316.  
  317. ROM, or Read Only Memory, is the unchangeable memory in the computer used by 
  318. permanent programs. See Physical Memory. 
  319.  
  320.  
  321. ΓòÉΓòÉΓòÉ <hidden> SFT ΓòÉΓòÉΓòÉ
  322.  
  323. The System File Table entry contains information about each unique instance of 
  324. an open file. 
  325.  
  326.  
  327. ΓòÉΓòÉΓòÉ <hidden> Swappable Pages ΓòÉΓòÉΓòÉ
  328.  
  329. Swappable pages are pages of RAM that can be swapped. They may be in RAM or on 
  330. disk. 
  331.  
  332.  
  333. ΓòÉΓòÉΓòÉ <hidden> Swapped Pages ΓòÉΓòÉΓòÉ
  334.  
  335. Swapped pages are those pages currently in the SWAPPER.DAT file. 
  336.  
  337.  
  338. ΓòÉΓòÉΓòÉ <hidden> SWAPPER.DAT ΓòÉΓòÉΓòÉ
  339.  
  340. The SWAPPER.DAT file is the disk file where pages are kept after being swapped 
  341. out. 
  342.  
  343.  
  344. ΓòÉΓòÉΓòÉ <hidden> TCB ΓòÉΓòÉΓòÉ
  345.  
  346. The TCB, or Thread Control Block, contains information unique to a thread. 
  347.  
  348.  
  349. ΓòÉΓòÉΓòÉ <hidden> Thread ΓòÉΓòÉΓòÉ
  350.  
  351. A thread is the dispatchable entity within the OS/2 system. A thread is 
  352. identified within a process by its TID. It is uniquely identified within the 
  353. OS/2 system by a thread number. 
  354.  
  355.  
  356. ΓòÉΓòÉΓòÉ <hidden> Thread Number ΓòÉΓòÉΓòÉ
  357.  
  358. A thread number is the system wide unique identifier for a thread. A thread 
  359. number is used within the OS/2 dispatcher, for example. Do not confuse the 
  360. thread number with thread ID. 
  361.  
  362.  
  363. ΓòÉΓòÉΓòÉ <hidden> TIB ΓòÉΓòÉΓòÉ
  364.  
  365. The TIB, or Thread Information Block, contains information about the currently 
  366. running thread and is accessible by the application program. 
  367.  
  368.  
  369. ΓòÉΓòÉΓòÉ <hidden> TID ΓòÉΓòÉΓòÉ
  370.  
  371. The TID, or Thread ID, is a 16-bit number that uniquely identifies a thread 
  372. within a process. 
  373.  
  374.  
  375. ΓòÉΓòÉΓòÉ <hidden> TSD ΓòÉΓòÉΓòÉ
  376.  
  377. The TSD, or Thread Swappable Data, is the portion of a thread control block 
  378. that is swappable. 
  379.  
  380.  
  381. ΓòÉΓòÉΓòÉ <hidden> TSS ΓòÉΓòÉΓòÉ
  382.  
  383. The TSS, or Task State Segment, is a 386 control block used by the processor to 
  384. control its multi-tasking functions. 
  385.  
  386.  
  387. ΓòÉΓòÉΓòÉ <hidden> UVirt Page ΓòÉΓòÉΓòÉ
  388.  
  389. A UVirt page is a page that has been defined by a device driver or the kernel 
  390. by using one of their special functions. The device driver function is 
  391. DevHlp_PhysToUVirt. The "physical address" in the Page Table Entry may not 
  392. point to a real page of RAM. It may point to an I/O adapter card or some other 
  393. "pseudo-memory." 
  394.  
  395.  
  396. ΓòÉΓòÉΓòÉ <hidden> Virtual Address ΓòÉΓòÉΓòÉ
  397.  
  398. Virtual addresses have both selectors and offsets. They are represented by 
  399. THESEUS2 as ssss:oooo or ssss:oooooooo (selector:offset) (all in hexadecimal 
  400. notation). 
  401.  
  402.  
  403. ΓòÉΓòÉΓòÉ <hidden> Virtual Memory ΓòÉΓòÉΓòÉ
  404.  
  405. Virtual memory is memory as seen by the program. It is referenced by a virtual 
  406. address or a flat address. (As opposed to physical memory.) 
  407.  
  408.  
  409. ΓòÉΓòÉΓòÉ <hidden> Virtual Page Table ΓòÉΓòÉΓòÉ
  410.  
  411. The Virtual Page Table keeps track of committed memory. This table contains an 
  412. entry for each page of committed memory. 
  413.  
  414.  
  415. ΓòÉΓòÉΓòÉ <hidden> Working Set ΓòÉΓòÉΓòÉ
  416.  
  417. The working set is the set of memory (pages) referenced in the last n time 
  418. intervals. The working set includes both resident and locked pages. 
  419.  
  420.  
  421. ΓòÉΓòÉΓòÉ 1. Notices ΓòÉΓòÉΓòÉ
  422.  
  423. References in this publication to IBM products, programs, or services do not 
  424. imply that IBM intends to make these available in all countries in which IBM 
  425. operates. 
  426.  
  427. Any reference to an IBM product, program, or service is not intended to state 
  428. or imply that only IBM's product, program, or service may be used. 
  429.  
  430. Any functionally equivalent product, program, or service that does not infringe 
  431. any of IBM's intellectual property rights or other legally protectible rights 
  432. may be used instead of the IBM product, program, or service. 
  433.  
  434. Evaluation and verification of operation in conjunction with other products, 
  435. programs, or services, except those expressly designated by IBM, are the user's 
  436. responsibility. 
  437.  
  438. IBM may have patents or pending patent applications covering subject matter in 
  439. this document.  The furnishing of this document does not give you any rights to 
  440. these patents. 
  441.  
  442. You can inquire, in writing, to the IBM Director of Commercial Relations, IBM 
  443. Corporation, Purchase, NY 10577 - USA, or to the IBM Director of Commercial 
  444. Relations, IBM World Trade Asia Corporation, IBM Kamiya-cho Building, 4-3-9 
  445. Toranomon, Minato-ku, Tokyo, Japan. 
  446.  
  447. The following terms, denoted by an asterisk (*) in this reference, are 
  448. trademarks of the IBM Corporation in the United States and/or other countries: 
  449.  
  450. IBM   THESEUS2    Operating System/2    System Performance Monitor/2
  451. Hyperblock   OS/2   SystemView   Presentation Manager   CSet/2
  452.  
  453. The following terms, denoted by a double asterisk (**) in this reference, are 
  454. trademarks of other companies as follows: 
  455.  
  456. Microsoft   Microsoft Corporation
  457.  
  458. The following paragraph does not apply to the United Kingdom or any country 
  459. where such provisions are inconsistent with local law. 
  460.  
  461. INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS INFORMATION "AS IS" 
  462. WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT 
  463. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A 
  464. PARTICULAR PURPOSE. 
  465.  
  466. Some states do not allow disclaimer of express or implied warranties in certain 
  467. transactions; therefore, this statement may not apply to you. 
  468.  
  469. This information could include technical inaccuracies or typographical errors. 
  470. Changes are periodically made to the information herein; these changes will be 
  471. incorporated in new editions of the information.  IBM may make improvements 
  472. and/or changes in the product(s) and/or the program(s) described in this 
  473. information at any time. 
  474.  
  475. It is possible that this information may contain reference to, or information 
  476. about, IBM products (machines and programs), programming, or services that are 
  477. not announced in your country.  Such references or information must not be 
  478. construed to mean that IBM intends to announce such IBM products, programming, 
  479. or services in your country. 
  480.  
  481. Requests for copies of this information and for technical information about IBM 
  482. products should be made to your IBM Authorized Dealer or your IBM Marketing 
  483. Representative. 
  484.  
  485. (C) Copyright International Business Machines Corporation 1992.  All rights 
  486. reserved. 
  487.  
  488. Note to U.S. Government Users:  Documentation and programs related to 
  489. restricted rights.  Use, duplication, or disclosure is subject to restrictions 
  490. set forth in GSA ADP Schedule Contract with IBM Corp. 
  491.  
  492.  
  493. ΓòÉΓòÉΓòÉ 2. Introduction ΓòÉΓòÉΓòÉ
  494.  
  495. THESEUS2* is a memory analysis program for the OS/2* 2.x system to: 
  496.  
  497.  1. look at selected machine registers and control blocks (formatted) 
  498.  2. look at selected OS/2 system control blocks (formatted) 
  499.  3. look at application memory (in hexadecimal notation) 
  500.  4. determine the amount of memory consumed by each active process. 
  501.  
  502. THESEUS2 uses two classes of windows: 
  503.  
  504. Process Hierarchy     Shows the hierarchy of processes as they currently exist 
  505.                       in memory. There is only 1 window of this class. 
  506. Detail                Shows information about specific areas in either the OS/2 
  507.                       system or application memory. There can be up to 16 
  508.                       windows of this class. 
  509.  
  510. Other topics include: 
  511.  
  512. Demonstration               demonstrating some of THESEUS2's functions 
  513. How to use THESEUS2         understanding how to use THESEUS2 
  514. Memory Explanations         understanding how memory is managed in OS/2 2.x 
  515. Glossary                    meanings of terms. 
  516.  
  517.  
  518. ΓòÉΓòÉΓòÉ 3. Who Was Theseus? ΓòÉΓòÉΓòÉ
  519.  
  520. Theseus (pronounced Thee'-see-us) was one of the Attic heroes of Greek 
  521. mythology. According to legend, he was one of the young Greeks chosen to be 
  522. sacrificed to the Minotaur, the mythical half man/half bull confined in the 
  523. Labyrinth. Instead, Theseus killed the Minotaur. One of the local girls, 
  524. Ariadne, gave him a thread, which he used to mark his trail into and out of the 
  525. Labyrinth. He then married Ariadne and they sailed off into the sunset. 
  526.  
  527. The analogy of the labyrinth is appropriate, because assigning memory to a user 
  528. in the OS/2 environment is quite complex, much like the Labyrinth of old. 
  529. However, this program knows its way through the labyrinth and can assist you in 
  530. determining the amount of memory used by your programs. 
  531.  
  532.  
  533. ΓòÉΓòÉΓòÉ 4. A Short Demonstration ΓòÉΓòÉΓòÉ
  534.  
  535. THESEUS2 is totally different from THESEUS*. THESEUS2 is a PM windowed 
  536. application with hyperblock linking between the OS/2 control blocks. To try it 
  537. out: 
  538.  
  539.  1. Bring up THESEUS2. 
  540.  2. Select the Registers pull-down. 
  541.  3. Select Control Registers. 
  542.  4. Double-click mouse button 1 while pointing at the GDT base value (which is 
  543.     in green). 
  544.  5. What you are seeing is the formatted GDT. 
  545.  6. Close that window. 
  546.  7. Double-click mouse button 2 while pointing at the GDT base value (which is 
  547.     in green). 
  548.  8. What you are seeing is a "description" of the GDT memory object. 
  549.  9. Press the F1 key to obtain a help panel that explains what you are looking 
  550.     at. 
  551.  
  552.  
  553. ΓòÉΓòÉΓòÉ 5. Glossary ΓòÉΓòÉΓòÉ
  554.  
  555. Word       Definition 
  556. Arena      An arena maps a linear address space by way of a doubly linked 
  557.            circular chain of arena records. Each arena starts with a sentinel 
  558.            record. There are three separate arenas associated with each 
  559.            process: 
  560.  
  561.    private  Maps the linear address space unique to that process. This memory 
  562.             holds EXE files and memory objects allocated using the DosAllocMem 
  563.             function. 
  564.    shared   Maps the linear address space shared by all the processes. This 
  565.             memory holds DLL files and memory objects allocated using the 
  566.             DosAllocSharedMem function. 
  567.    system   Maps the linear address space which belongs to the OS/2 system. 
  568. Arena Record There is an arena record for each memory object that has linear 
  569.            address space allocated to it. The handle of the arena record is a 
  570.            har. The arena records are arranged in arenas. 
  571. Claimable Page A claimable page is one that is not marked present in a 
  572.            particular Page Table Entry, however, the page is present. On the 
  573.            first reference to the page, the page will simply be marked 
  574.            "present". 
  575. Clean Page A clean page is one that has not been written to in RAM since being 
  576.            loaded from disk. 
  577. Committed Memory Committed memory is memory that has been both allocated and 
  578.            committed. Committed memory has an entry in the Virtual Page Table 
  579.            and can be "backed" by: 
  580.  
  581.    o A page of real RAM 
  582.    o A page of DASD in the SWAPPER.DAT file 
  583.    o A page of a program file 
  584.    o Nothing. 
  585. Context    Many memory objects are associated with a particular OS/2 process. 
  586.            The context of a memory object refers to the process with which it 
  587.            is associated. 
  588. Context Record There is a context record for each process that can access a 
  589.            particular memory object in the shared arena. The handle of the 
  590.            context record is a hco. 
  591. Dirty Page A dirty page is one that has been written to in RAM, but not yet 
  592.            written to the SWAPPER.DAT file. 
  593. DTE        A DTE, or Descriptor Table Entry, is an entry in a Descriptor Table 
  594.            (GDT, LDT, or IDT). It includes the linear address and size of a 
  595.            segment. 
  596. Exit List  The list of routines that are to be executed when a process ends. 
  597. File Handle The handle of a file. There are process handles which are unique 
  598.            for a process and system handles which are common across the entire 
  599.            system. 
  600. Flat Address A flat address is a virtual offset. Because the selector registers 
  601.            (loaded by the operating system) have a base address of 00000000, 
  602.            flat is equivalent to linear. 
  603. Fonts      Fonts control the shapes and sizes of the characters being 
  604.            displayed. Only monospace fonts (all characters the same width) can 
  605.            be used by THESEUS2. Only display fonts can be selected in THESEUS2. 
  606.            Printer fonts cannot be changed by THESEUS2. 
  607. Free Page  A free page is a page of RAM not currently in use. However, it may 
  608.            be allocated by the Page Manager and associated with a memory 
  609.            object. 
  610. GDT        The Global Descriptor Table contains the descriptor table entries 
  611.            for selectors that can be accessed by any process. 
  612. Handle     Within the OS/2 system, a handle is used to refer from one control 
  613.            block to another, without using the actual address. A handle is 
  614.            normally a 16-bit word. 
  615. har        The handle of an arena record is a har. 
  616. hco        The handle of a context record is a hco. 
  617. hmte       The handle of an MTE is a hmte. 
  618. hob        The handle of an object record is a hob. 
  619. Hyperblock Links Hyperblock* links allow you to navigate from one control block 
  620.            to another by using the mouse to select the address of the block to 
  621.            be viewed. A hyperblock link is denoted by its different color. The 
  622.            color of the links can be changed with the `Link' color option of 
  623.            the Misc menu in the Process Hierarchy window. 
  624. Idle Page  An idle pages is a page that has not been recently used. The Page 
  625.            Ager program runs when the number of free pages becomes small. Idle 
  626.            pages are placed on the idle list before being removed from the 
  627.            system. 
  628. IDT        The Interrupt Descriptor Table contains the descriptor table entries 
  629.            for selectors used to execute the proper interrupt routine. 
  630. LDT        The Local Descriptor Table contains the descriptor table entries for 
  631.            selectors that can be accessed by a single process. There is one for 
  632.            each process. 
  633. Linear Address A linear address is the intermediate result when the CPU is 
  634.            resolving memory addresses. They are represented by THESEUS2 as 
  635.            llllllll (in hexadecimal notation). 
  636. Link       see Hyperblock Link. 
  637. Locked Page A locked page is a page of RAM that has been locked with the 
  638.            DevHlp_Lock... function. It may be locked either long term or short 
  639.            term. 
  640. Memory Leak When a program allocates memory and then does not free it, that 
  641.            program is said to be "leaking memory." 
  642. Memory Object A memory object is the logical allocation unit of memory. 
  643.            Applications allocate memory objects using the DosAllocMem or 
  644.            DosAllocSharedMem functions. 
  645. MTE        An MTE, or Module Table Entry, is an in-memory description of an 
  646.            executable module. The handle of an MTE is an hmte. 
  647. Object Record There is an object record for each memory object in the system. 
  648.            Most objects are real objects and associated with arena records, 
  649.            containing a linear address. However, some objects are 
  650.            pseudo-objects, and the linear address is in the object record. The 
  651.            handle of an object record is a hob. 
  652. Owner      All allocated memory has an owner. For system memory, that owner is 
  653.            a hexadecimal value, starting with hex FF. Each sub-system in the 
  654.            kernel has one or more unique values for keeping track of allocated 
  655.            memory. For private memory, the owner is the hob of a PTDA or MTE. 
  656.            For shared memory, the owner may be either a system owner value, the 
  657.            hob of a PTDA, or the hob of an MTE. The owner value is in the 
  658.            object record. 
  659. Page Directory The Page Directory is the first-level address translation table 
  660.            used by the hardware to map a linear address to a physical address. 
  661.            The entries in the Page Directory point to Page Tables. 
  662. Page Frame Table The Page Frame Table has an entry for each page in the 
  663.            physical address space. This space includes all the real RAM in the 
  664.            machine, the I/O RAM space, and the ROM space. This table keeps 
  665.            track of the contents of each physical page. 
  666. Page Table The Page Table is the second-level address translation table used by 
  667.            the hardware to map a linear address to a physical address. The 
  668.            entries in the Page Directory point to Page Tables, which in turn 
  669.            point to pages of physical RAM. 
  670. PDE        A PDE, or Page Directory Entry, contains the physical address of a 
  671.            particular Page Table. 
  672. Physical Address A physical address is the final result when the CPU is 
  673.            resolving memory addresses. They are used to address the memory 
  674.            chips. They are represented by THESEUS2 as pppppppp (in hexadecimal 
  675.            notation). 
  676. Physical Memory The physical memory in the machine is referenced by a physical 
  677.            address. (As opposed to virtual memory.) 
  678. PID        The process ID is a 16-bit number that uniquely identifies an OS/2 
  679.            process. 
  680. Popup Menu A popup menu is activated by a single-click of mouse button 2 or by 
  681.            pressing the Shift-F10 key sequence. A popup menu appears next to 
  682.            the item selected. 
  683. Present Pages Present pages are those pages currently in RAM. 
  684. Process    In the OS/2 system, processes are the owners of resources. One or 
  685.            more cooperating processes make up each application. Each process 
  686.            takes its name from EXE file it is associated with. Each process is 
  687.            uniquely identified within the OS/2 system by its PID. (In other 
  688.            systems, processes are called "tasks.") 
  689. Process Page Directory Each process is associated with a Process Page 
  690.            Directory. This directory contains the PDEs for the first 512MB of 
  691.            linear address space. The Process Page Directory is copied into the 
  692.            first 128 entries of the System Page Directory when the process is 
  693.            dispatched. 
  694. Pseudo-Object Pseudo-objects are areas of memory allocated from kernel heap 
  695.            space. Because they have hobs, they can be accessed the same way as 
  696.            normal memory objects. MTEs and PTDAs are pseudo-objects. 
  697. PTDA       The PTDA, or Per Task Data Area, describes the resources owned by a 
  698.            process. 
  699. PTE        The PTE, or Page Table Entry, contains the physical address of a 
  700.            page. 
  701. RAM        RAM, or Random Access Memory, is the modifiable memory in the 
  702.            computer used by programs. See Physical Memory. 
  703. Resident Pages Resident pages are pages of RAM that cannot be swapped.  They 
  704.            must remain in RAM at all times until freed. 
  705. ROM        ROM, or Read Only Memory, is the unchangeable memory in the computer 
  706.            used by permanent programs. See Physical Memory. 
  707. SFT        The System File Table entry contains information about each unique 
  708.            instance of an open file. 
  709. Swappable Pages Swappable pages are pages of RAM that can be swapped. They may 
  710.            be in RAM or on disk. 
  711. Swapped Pages Swapped pages are those pages currently in the SWAPPER.DAT file. 
  712. SWAPPER.DAT The SWAPPER.DAT file is the disk file where pages are kept after 
  713.            being swapped out. 
  714. TCB        The TCB, or Thread Control Block, contains information unique to a 
  715.            thread. 
  716. Thread     A thread is the dispatchable entity within the OS/2 system. A thread 
  717.            is identified within a process by its TID. It is uniquely identified 
  718.            within the OS/2 system by a thread number. 
  719. Thread Number A thread number is the system wide unique identifier for a 
  720.            thread. A thread number is used within the OS/2 dispatcher, for 
  721.            example. Do not confuse the thread number with thread ID. 
  722. TIB        The TIB, or Thread Information Block, contains information about the 
  723.            currently running thread and is accessible by the application 
  724.            program. 
  725. TID        The TID, or Thread ID, is a 16-bit number that uniquely identifies a 
  726.            thread within a process. 
  727. TSD        The TSD, or Thread Swappable Data, is the portion of a thread 
  728.            control block that is swappable. 
  729. TSS        The TSS, or Task State Segment, is a 386 control block used by the 
  730.            processor to control its multi-tasking functions. 
  731. UVirt Page A UVirt page is a page that has been defined by a device driver or 
  732.            the kernel by using one of their special functions. The device 
  733.            driver function is DevHlp_PhysToUVirt. The "physical address" in the 
  734.            Page Table Entry may not point to a real page of RAM. It may point 
  735.            to an I/O adapter card or some other "pseudo-memory." 
  736. Virtual Address Virtual addresses have both selectors and offsets. They are 
  737.            represented by THESEUS2 as ssss:oooo or ssss:oooooooo 
  738.            (selector:offset) (all in hexadecimal notation). 
  739. Virtual Memory Virtual memory is memory as seen by the program. It is 
  740.            referenced by a virtual address or a flat address. (As opposed to 
  741.            physical memory.) 
  742. Virtual Page Table The Virtual Page Table keeps track of committed memory. This 
  743.            table contains an entry for each page of committed memory. 
  744. Working Set The working set is the set of memory (pages) referenced in the last 
  745.            n time intervals. The working set includes both resident and locked 
  746.            pages. 
  747.  
  748.  
  749. ΓòÉΓòÉΓòÉ 6. How to use THESEUS2 ΓòÉΓòÉΓòÉ
  750.  
  751. The following aspects of using THESEUS2 are explored: 
  752.  
  753. o Hyperblock Links 
  754. o Mouse Usage 
  755. o Memory Analysis Using THESEUS2 
  756. o How to Do Things with THESEUS2 
  757.  
  758.  
  759. ΓòÉΓòÉΓòÉ 6.1. Hyperblock (tm) links ΓòÉΓòÉΓòÉ
  760.  
  761. Hyperblock* links allow you to navigate from one control block to another by 
  762. using the mouse to select the address of the block to be viewed. A hyperblock 
  763. link is denoted by its different color. The color of the links can be changed 
  764. with the `Link' color option of the Misc menu in the Process Hierarchy window. 
  765.  
  766.  
  767. ΓòÉΓòÉΓòÉ 6.2. Mouse usage and item selection ΓòÉΓòÉΓòÉ
  768.  
  769. The usage of the Mouse is dependent on the context, as follows: 
  770.  
  771. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  772. ΓöéItem\Context  ΓöéMain Window   ΓöéDetail Window       ΓöéDetail Window Γöé
  773. Γöé              Γöé              Γöé(normal usage)      Γöé(selecting an Γöé
  774. Γöé              Γöé              Γöé                    Γöéarea)         Γöé
  775. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  776. ΓöéPointer       ΓöéPoints to the ΓöéPoints to the       ΓöéMarks off     Γöé
  777. Γöé              Γöédesired       Γöédesired hyperblock  Γöéopposite      Γöé
  778. Γöé              Γöéprocess.      Γöélink.               Γöécorners of theΓöé
  779. Γöé              Γöé              Γöé                    Γöéarea to be    Γöé
  780. Γöé              Γöé              Γöé                    Γöéselected.     Γöé
  781. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  782. ΓöéButton 1      ΓöéSelects the   ΓöéSelects the         ΓöéStarts/stops  Γöé
  783. Γöé(single-click)Γöéprocess that  Γöéhyperblock link thatΓöéselecting the Γöé
  784. Γöé              Γöéthe pointer isΓöéthe pointer is over.Γöéarea.         Γöé
  785. Γöé              Γöéover.         Γöé                    Γöé              Γöé
  786. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  787. ΓöéButton 1      ΓöéDisplays      ΓöéDisplays the linked Γöé              Γöé
  788. Γöé(double-click)Γöégeneral       Γöémemory object that  Γöé              Γöé
  789. Γöé              Γöéinformation   Γöéthe pointer is over.Γöé              Γöé
  790. Γöé              Γöéabout the     Γöé                    Γöé              Γöé
  791. Γöé              Γöéprocess that  Γöé                    Γöé              Γöé
  792. Γöé              Γöéthe pointer isΓöé                    Γöé              Γöé
  793. Γöé              Γöéover.         Γöé                    Γöé              Γöé
  794. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  795. ΓöéButton 2      Γöé              ΓöéDisplays a popup    Γöé              Γöé
  796. Γöé(single-click)Γöé              Γöémenu customized for Γöé              Γöé
  797. Γöé              Γöé              Γöéthe hyperblock link Γöé              Γöé
  798. Γöé              Γöé              Γöéwhich is selected.  Γöé              Γöé
  799. Γöé              Γöé              ΓöéIf there is not a   Γöé              Γöé
  800. Γöé              Γöé              Γöéhyperblock link     Γöé              Γöé
  801. Γöé              Γöé              Γöéselected, then      Γöé              Γöé
  802. Γöé              Γöé              Γöédisplays a general  Γöé              Γöé
  803. Γöé              Γöé              Γöépopup menu.         Γöé              Γöé
  804. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  805. ΓöéButton 2      Γöé              ΓöéDescribes the linkedΓöé              Γöé
  806. Γöé(double-click)Γöé              Γöémemory object that  Γöé              Γöé
  807. Γöé              Γöé              Γöéthe pointer is over.Γöé              Γöé
  808. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  809.  
  810. There is a pause between releasing mouse button 2 and the display of the popup 
  811. menu. As a result, the program can distinguish between a single-click and a 
  812. double-click. The time used is the system-maintained time for double-clicks 
  813. (SV_DBLCLKTIME). 
  814.  
  815.  
  816. ΓòÉΓòÉΓòÉ 6.3. Memory Analysis Using THESEUS2 ΓòÉΓòÉΓòÉ
  817.  
  818. We have found it necessary to look at memory usage in several different ways. 
  819. Sometimes we need to see how much memory has been allocated, sometimes we need 
  820. to see how much has been committed, sometimes we need to see how much is in 
  821. use. The various memory analysis functions of THESEUS2 were created to satisfy 
  822. these needs. 
  823.  
  824. Analysis of memory usage can be done by THESEUS2 as follows: 
  825.  
  826. o Memory Usage for the Entire System 
  827. o Kernel Memory Usage 
  828. o Memory Usage by a Single Process 
  829. o Working Set of the Entire System 
  830. o Working Set of a Single Process 
  831.  
  832.  
  833. ΓòÉΓòÉΓòÉ 6.3.1. Memory Usage for the Entire System ΓòÉΓòÉΓòÉ
  834.  
  835. The amount of memory (RAM) consumed by each process is determined and then a 
  836. summary of consumption by all processes is displayed by the RAM Usage by 
  837. Process function. Memory is considered consumed if it is allocated and marked 
  838. present in the Page Table Entry. 
  839.  
  840. This is done for the entire system and the display includes data for all 
  841. processes. 
  842.  
  843. This gives an overall indication of memory consumption. However, since this 
  844. does not consider which pages are being used, only present, the actual amount 
  845. of memory needed by each process may be less than the amount shown. 
  846.  
  847.  
  848. ΓòÉΓòÉΓòÉ 6.3.2. Kernel Memory Usage ΓòÉΓòÉΓòÉ
  849.  
  850. The amount of memory consumed by the operating system is determined by system 
  851. owner code by the Kernel Memory Usage function. The information is displayed 
  852. sorted by system owner code. 
  853.  
  854. This is useful to determine how much memory is consumed by: 
  855.  
  856. o Device driver allocated (owner = FF6B - allocated via devhlp AllocPhys), 
  857.   which includes any "RAM disk" allocated 
  858. o Kernel code (owner = FFAA - os2krnl load image) 
  859. o Any object allocated by the kernel, device drivers and IFSs. 
  860.  
  861.  
  862. ΓòÉΓòÉΓòÉ 6.3.3. Memory Usage by a Single Process ΓòÉΓòÉΓòÉ
  863.  
  864. Details about the memory usage by the selected process is displayed by the 
  865. Memory Utilization function. This data is computed as if there were no other 
  866. processes in the system. When multiple copies of a particular program are 
  867. running, each of them would show the EXE file as being consumed by that 
  868. process. 
  869.  
  870. This is done for only the selected process. Some detail for the process is 
  871. shown. 
  872.  
  873. This is useful for determining if a process is accumulating memory. See Is a 
  874. Process Accumulating Memory? (method 1) for a description of how to do this. 
  875.  
  876.  
  877. ΓòÉΓòÉΓòÉ 6.3.4. Working Set of the Entire System ΓòÉΓòÉΓòÉ
  878.  
  879. The working set memory utilization of the entire system can be determined by 
  880. the Working Set for the Entire System function. 
  881.  
  882. This is most useful if the working set of all the programs you normally run can 
  883. be held in RAM at the same time. 
  884.  
  885. To see how to use this function, please see: 
  886.  
  887. o Working Set of the Entire System? 
  888. o Working Set When it does not all fit? 
  889.  
  890.  
  891. ΓòÉΓòÉΓòÉ 6.3.5. Working Set of a Single Process ΓòÉΓòÉΓòÉ
  892.  
  893. The working set memory utilization of a single process can be determined by the 
  894. Working Set for a Single Process function. 
  895.  
  896. This is useful if you are only interested in a single process or if all of your 
  897. the programs you normally run do not fit in RAM. 
  898.  
  899. To see how to use this function, please see: 
  900.  
  901. o Working Set of a Single Process? 
  902. o Working Set When it does not all fit? 
  903.  
  904.  
  905. ΓòÉΓòÉΓòÉ 6.4. How to Do Things with THESEUS2 ΓòÉΓòÉΓòÉ
  906.  
  907. It is possible to do a number of different program analysis functions in 
  908. addition to the memory analysis functions. Some of them are: 
  909.  
  910. o What is at an Address? 
  911. o Valid Contexts for a Shared Linear Address? 
  912. o Where is Code Loaded? 
  913. o Is a Process Accumulating Memory? (programatic method) 
  914. o Is a Process Accumulating Memory? (old method 1) 
  915. o Is a Process Accumulating Memory? (old method 2) 
  916. o Working Set of the Entire System? 
  917. o Working Set of a Single Process? 
  918. o Working Set When it does not all fit? 
  919.  
  920.  
  921. ΓòÉΓòÉΓòÉ 6.4.1. What is at an Address? ΓòÉΓòÉΓòÉ
  922.  
  923. To determine what memory object is at a specific address: 
  924.  
  925.  1. Select the process in whose context the address lies. 
  926.  2. Select the General Process Information option of the Process pull-down. 
  927.  3. Select the Show Description option of the Functions pull-down. 
  928.  4. Enter the desired address type and value. 
  929.  5. The object description is shown. 
  930.  
  931.  
  932. ΓòÉΓòÉΓòÉ 6.4.2. Valid Contexts for a Shared Linear Address? ΓòÉΓòÉΓòÉ
  933.  
  934. To determine what processes have access to a shared linear address: 
  935.  
  936.  1. Select the `sysinit' process. 
  937.  2. Select the Shared Object Summary option of the Process pull-down. 
  938.  3. Select the Show Description option. 
  939.  4. Enter the desired address type and value. 
  940.  5. The object description is shown, including all the processes' Page Table 
  941.     Entries for the object. The Context Records also show which processes have 
  942.     access and the type of access allowed. 
  943.  
  944.  
  945. ΓòÉΓòÉΓòÉ 6.4.3. Where is Code Loaded? ΓòÉΓòÉΓòÉ
  946.  
  947. To determine where code objects are loaded (so you can program a tool like the 
  948. "Intel In-Circuit Analyzer" (ICE): 
  949.  
  950.  1. Select the process in whose context the program is running. 
  951.  2. Select the Modules option of the System pull-down. 
  952.  3. Find the module you are interested in. (You can use the Find dialog to have 
  953.     THESEUS2 find the module for you.) 
  954.  4. Double-click the left mouse button while pointing at the MTE @ (first 
  955.     column) value. This will display the formatted MTE. 
  956.  5. Move to the Object/Segment Table, at the bottom of the display. 
  957.  6. Double-click the right mouse button while pointing at the address of the 
  958.     particular object/segment you want to map. The Page Table Entries map the 
  959.     virtual/logical address of the module into the physical addresses needed. 
  960.  
  961.  
  962. ΓòÉΓòÉΓòÉ 6.4.4. Is a Process Accumulating Memory? (programatic method) ΓòÉΓòÉΓòÉ
  963.  
  964. To determine which process is accumulating memory, use the Memory Leak 
  965. Detection option on the System pull-down. 
  966.  
  967. To determine which memory object is accumulating memory for a specific process, 
  968. use the Memory Leak Detection option on the Process pull-down. 
  969.  
  970.  
  971. ΓòÉΓòÉΓòÉ 6.4.5. Is a Process Accumulating Memory? (old method 1) ΓòÉΓòÉΓòÉ
  972.  
  973. To determine if a process is accumulating memory: 
  974.  
  975.  1. Select the process you wish to examine. 
  976.  2. Perform the function that you wish to examine. (This will cause all the 
  977.     related pages of program and data to be loaded.) 
  978.  3. Select the Memory Utilization option of the Process pull-down. Do not close 
  979.     this window. 
  980.  4. Perform the function that you wish to examine. 
  981.  5. Select the Memory Utilization option of the Process pull-down, again. 
  982.  6. Compare the results in the two Memory Utilization displays. Look at the 
  983.     Total Shared originated and the Total Private lines, as these are the ones 
  984.     that will change if accumulation is taking place. (If you forget which 
  985.     display is which, the time and date of display generation are displayed on 
  986.     the last line of the display.) 
  987.  
  988.  
  989. ΓòÉΓòÉΓòÉ 6.4.6. Is a Process Accumulating Memory? (old method 2) ΓòÉΓòÉΓòÉ
  990.  
  991. To determine if a process is accumulating memory, when the SWAPPER.DAT file is 
  992. growing: 
  993.  
  994.  1. Select the Swapper display. 
  995.  2. Look at the entries at the bottom of the display. If a process is 
  996.     accumulating memory, it will usually have a lot of pages in the SWAPPER.DAT 
  997.     file which are the same type of  memory object as the one which is being 
  998.     accumulated. 
  999.  
  1000.  
  1001. ΓòÉΓòÉΓòÉ 6.4.7. Working Set of the Entire System? ΓòÉΓòÉΓòÉ
  1002.  
  1003. To determine the working set of the entire system: 
  1004.  
  1005.  1. Select the Working Set option of the System pull-down. 
  1006.  2. Select the Working Set Parameters option of the Functions pull-down. 
  1007.  3. Make any changes that you want to the default data collection parameters. 
  1008.  4. Select the Working Set Start option of the Functions pull-down. 
  1009.  5. Perform the functions (in your application) that you want measured. 
  1010.  6. Return to THESEUS2's working set window and select the Working Set Stop 
  1011.     option of the Functions pull-down. 
  1012.  7. A summary of the working set for the entire system is displayed. 
  1013.  8. Detail working set information may be obtained by: 
  1014.  
  1015.    o Selecting the Show Detail by Page option of the Functions pull-down 
  1016.    o Selecting the Show Detail by Object option of the Functions pull-down 
  1017.  
  1018. If you want to know the working sets of individual processes, see the section 
  1019. Working Set of a Single Process. 
  1020.  
  1021.  
  1022. ΓòÉΓòÉΓòÉ 6.4.8. Working Set of a Single Process? ΓòÉΓòÉΓòÉ
  1023.  
  1024. To determine the working set of memory for a particular process: 
  1025.  
  1026.  1. Select the process you wish to measure. 
  1027.  2. Select the Working Set option of the Process pull-down. 
  1028.  3. Select the Working Set Parameters option of the Functions pull-down. 
  1029.  4. Make any changes that you want to the default data collection parameters. 
  1030.  5. Select the Working Set Start option of the Functions pull-down. 
  1031.  6. Perform the functions (in your application) that you want measured. 
  1032.  7. Return to THESEUS2's working set window and select the Working Set Stop 
  1033.     option of the Functions pull-down. 
  1034.  8. A summary of the working set for the specified process is displayed. 
  1035.  9. Detail working set information may be obtained by: 
  1036.  
  1037.    o Selecting the Show Detail by Page option of the Functions pull-down 
  1038.    o Selecting the Show Detail by Object option of the Functions pull-down 
  1039.  
  1040. If you want to know the working set of the entire system, see the section 
  1041. Working Set of the Entire System. 
  1042.  
  1043.  
  1044. ΓòÉΓòÉΓòÉ 6.4.9. Working Set When it does not all fit? ΓòÉΓòÉΓòÉ
  1045.  
  1046. To determine the working set of memory of a group of processes that do not all 
  1047. fit into RAM at the same time: 
  1048.  
  1049.  1. Start your system without any of your applications. 
  1050.  2. Do Working Set of the Entire System to determine the working set of the 
  1051.     base system with your configuration. 
  1052.  3. Do Working Set of a Single Process for each of your applications, one at a 
  1053.     time. 
  1054.  4. Do the following calculation: 
  1055.  
  1056.       Recommended amount of memory from step 2 
  1057.    +  Recommended amount of memory from each case of step 3 
  1058.    -  188K (THESEUS2's working set while taking the measurement) 
  1059.    =  Total working set for your case. 
  1060.  
  1061.  
  1062. ΓòÉΓòÉΓòÉ 7. Memory Explanations ΓòÉΓòÉΓòÉ
  1063.  
  1064. The following aspects of memory under the OS/2 2.x system are explored: 
  1065.  
  1066. o Memory Addressing in the OS/2 2.x System 
  1067. o Memory States 
  1068. o Memory Management Control Blocks 
  1069. o Cost of Memory Objects 
  1070.  
  1071.  
  1072. ΓòÉΓòÉΓòÉ 7.1. Memory Addressing in the OS/2 2.x System ΓòÉΓòÉΓòÉ
  1073.  
  1074. The OS/2 2.x system uses four types of addresses: 
  1075.  
  1076. Virtual    Virtual addresses have both selectors and offsets. They are 
  1077.            represented by THESEUS2 as ssss:oooo or ssss:oooooooo 
  1078.            (selector:offset) (all in hexadecimal notation). These are sometimes 
  1079.            referred to as "16:16" addresses. This is the address type that 
  1080.            "16-bit / segmented" programs use. The system uses the Global and 
  1081.            Local Descriptor Tables to convert a virtual address to a linear 
  1082.            address. 
  1083.  
  1084. Flat       A flat address is a virtual offset. Because the selector registers 
  1085.            (loaded by the operating system) have a base address of 00000000, 
  1086.            flat is equivalent to linear. These are sometimes referred to as 
  1087.            "0:32" addresses. This is the address type that "32-bit / flat" 
  1088.            programs use. 
  1089.  
  1090. Linear     A linear address is the intermediate result when the CPU is 
  1091.            resolving memory addresses. They are represented by THESEUS2 as 
  1092.            llllllll (in hexadecimal notation). 
  1093.  
  1094. Physical   A physical address is the final result when the CPU is resolving 
  1095.            memory addresses. They are used to address the memory chips. They 
  1096.            are represented by THESEUS2 as pppppppp (in hexadecimal notation). 
  1097.  
  1098. See the Thunking Addresses section for conversion of "16:16" and "0:32" 
  1099. addresses. 
  1100.  
  1101. Because linear and physical addresses are both presented by THESEUS2 as eight 
  1102. hexadecimal digits, the particular type must be deduced from context. However, 
  1103. if THESEUS2 presents the address as a hyperblock link, it will do the proper 
  1104. processing if the link is used. 
  1105.  
  1106. Refer to the Intel 80386 Programmer's Reference Manual, Chapter 5 for more 
  1107. information about how the processor handles addressing. 
  1108.  
  1109.  
  1110. ΓòÉΓòÉΓòÉ 7.1.1. Thunking Addresses ΓòÉΓòÉΓòÉ
  1111.  
  1112. The process of converting virtual addresses from one form to another is 
  1113. referred to as thunking. 
  1114.  
  1115. Addresses can be converted from the "0:32" flat address form to the "16:16" 
  1116. virtual address form by: 
  1117.  
  1118. selector = ((flat >> 16) << 3) | 7;
  1119. offset = flat & 0x0000FFFF;
  1120.  
  1121. Addresses can be converted from the "16:16" virtual address form to the "0:32" 
  1122. flat address form by: 
  1123.  
  1124. flat = ((selector >> 3) << 16) | offset;
  1125.  
  1126. Where: 
  1127.  
  1128. Symbol    Meaning 
  1129. >> n      Right shift n bits, filling on the left with zeros. 
  1130. << n      Left shift n bits, filling on the right with zeros. 
  1131. |         Bitwise or. 
  1132. &         Bitwise and. 
  1133.  
  1134.  
  1135. ΓòÉΓòÉΓòÉ 7.1.2. Translation Lookaside Buffer ΓòÉΓòÉΓòÉ
  1136.  
  1137. The 80386 and i486 processors use a Translation Lookaside Buffer (TLB) to 
  1138. improve the instruction execution rate when doing paging. The TLB is a four-way 
  1139. set-associative memory which maps linear addresses to physical addresses. 
  1140.  
  1141. Each time a linear address without a TLB entry is translated, the appropriate 
  1142. TLB entry is loaded and this "...will add 13, 21 or 28 clocks to the 
  1143. instruction depending on whether the Accessed and/or Dirty bit in neither, one 
  1144. or both of the page entries needs to be set in memory" (Intel i486 
  1145. Microprocessor Programmer's Reference Manual, 1990, page E-2). 
  1146.  
  1147. The bottom three bits of the linear address page number (bits 12-14 of the 
  1148. linear address) are used to select the set of four data entries. Because most 
  1149. memory objects start on 64K boundaries, these bits are zeros and the same set 
  1150. of data entries is used for all address translation. TLB "thrashing" can occur 
  1151. if the first page of more than four memory objects are being referenced by the 
  1152. program. This causes the program execution time to substantially increase. 
  1153. Because the programmer has little control over where the variables used in 
  1154. high-level languages are stored, this problem is likely to occur. 
  1155.  
  1156.  
  1157. ΓòÉΓòÉΓòÉ <hidden> page entries ΓòÉΓòÉΓòÉ
  1158.  
  1159. Page Directory or Page Table 
  1160.  
  1161.  
  1162. ΓòÉΓòÉΓòÉ 7.2. Memory States ΓòÉΓòÉΓòÉ
  1163.  
  1164. Memory in OS/2* 2.x has several states. The states are explored: 
  1165.  
  1166. o Physical Memory States 
  1167. o Physical Memory State Change Table 
  1168. o Virtual Memory States 
  1169. o Virtual Memory State Change Table 
  1170. o Memory State Venn Diagram 
  1171.  
  1172.  
  1173. ΓòÉΓòÉΓòÉ 7.2.1. Physical Memory States ΓòÉΓòÉΓòÉ
  1174.  
  1175. Physical memory pages have three states: 
  1176.  
  1177. State      Explanation 
  1178. Free       A page that is not in use.  A free page can be attached to a virtual 
  1179.            page. 
  1180. Attached   A page that is in use. The physical page is attached to a virtual 
  1181.            page, and one or more Page Table Entries point directly to it. 
  1182. Idle       A page that has not been used recently. The Page Table Entry is not 
  1183.            connected directly to the physical page. Instead, the Page Table 
  1184.            Entry is connected to the physical page by way of the Virtual Page 
  1185.            Table. 
  1186.  
  1187. Attached pages have three substates: 
  1188.  
  1189. State        Explanation 
  1190. Swappable    The page is swappable or discardable. 
  1191. Locked       The memory has been locked by a Device Driver. The lock may be 
  1192.              either long-term or short-term. 
  1193. Resident     The page must remain in RAM at all times and cannot be swapped or 
  1194.              discarded. 
  1195.  
  1196. Idle pages have two substates: 
  1197.  
  1198. State   Explanation 
  1199. Dirty   The page contents have been modified and must be written to the swap 
  1200.         file before attaching the page to another virtual page. 
  1201. Clean   The page contents have not been modified. The page can, therefore, be 
  1202.         given to another virtual page without the Page Manager writing the 
  1203.         contents to disk. 
  1204.  
  1205. (Attached pages have the substates of Dirty and Clean, also. However, the 
  1206. Dirty/Clean substate is interesting only if the page is in the Idle state.) 
  1207.  
  1208. Physical Memory State Change Table 
  1209.  
  1210.  
  1211. ΓòÉΓòÉΓòÉ 7.2.2. Physical Memory State Change Table ΓòÉΓòÉΓòÉ
  1212.  
  1213. Following are the primary physical page state transitions: 
  1214.  
  1215. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1216. ΓöéFrom StateΓöéTo State ΓöéReason                                      Γöé
  1217. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1218. ΓöéFree      ΓöéAttached ΓöéA virtual page is referenced that has no    Γöé
  1219. Γöé          Γöé         Γöéphysical page attached to it. The page is   Γöé
  1220. Γöé          Γöé         Γöézeroed before being given to the            Γöé
  1221. Γöé          Γöé         Γöéapplication.                                Γöé
  1222. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1223. ΓöéAttached  ΓöéFree     ΓöéThe application performs a DosFreeMem       Γöé
  1224. Γöé          Γöé         Γöéfunction on the memory object.              Γöé
  1225. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1226. ΓöéAttached  ΓöéIdle     ΓöéThe page ager "idles" the page if it has notΓöé
  1227. Γöé          Γöé         Γöébeen accessed recently.                     Γöé
  1228. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1229. ΓöéIdle      ΓöéAttached ΓöéEither: 1. the application references the   Γöé
  1230. Γöé          Γöé         Γöépage, or 2. another application needs a     Γöé
  1231. Γöé          Γöé         Γöépage, so this one is paged out and then     Γöé
  1232. Γöé          Γöé         Γöéattached. The page is zeroed before being   Γöé
  1233. Γöé          Γöé         Γöégiven to the application.                   Γöé
  1234. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1235. ΓöéIdle      ΓöéFree     ΓöéThe application performs a DosFreeMem       Γöé
  1236. Γöé          Γöé         Γöéfunction on the memory object.              Γöé
  1237. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1238.  
  1239. Following are the substate transitions: 
  1240.  
  1241. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1242. ΓöéFrom StateΓöéTo State ΓöéReason                                      Γöé
  1243. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1244. ΓöéSwappable ΓöéLocked   ΓöéA device driver performs a DevHlp_Lock      Γöé
  1245. Γöé          Γöé         Γöéfunction on the page.                       Γöé
  1246. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1247. ΓöéLocked    ΓöéSwappableΓöéA device driver performs a DevHlp_Unlock    Γöé
  1248. Γöé          Γöé         Γöéfunction on the page.                       Γöé
  1249. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1250. ΓöéResident  Γöé         ΓöéSubstate changes not allowed for resident   Γöé
  1251. Γöé          Γöé         Γöépages.                                      Γöé
  1252. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1253. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1254. ΓöéClean     ΓöéDirty    ΓöéThe page is modified by a program.          Γöé
  1255. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1256. ΓöéDirty     ΓöéClean    ΓöéThe page is written to disk by the Memory   Γöé
  1257. Γöé          Γöé         ΓöéManager.                                    Γöé
  1258. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1259.  
  1260.  
  1261. ΓòÉΓòÉΓòÉ 7.2.3. Virtual Memory States ΓòÉΓòÉΓòÉ
  1262.  
  1263. Virtual memory pages have three states: 
  1264.  
  1265. State           Explanation 
  1266. Free            The virtual memory is not allocated to the application. 
  1267. Decommitted     Linear address space is allocated, but it is not valid for the 
  1268.                 program to reference the page. 
  1269. Committed       Linear address space is allocated, and it is valid for the 
  1270.                 program to reference the page. 
  1271.  
  1272. Committed pages have six substates: 
  1273.  
  1274. State       Explanation 
  1275. Guard       Guard pages are used to manage stacks, linearly expanding objects 
  1276.             or sparse objects. When referenced, a `guard page entered' 
  1277.             condition is raised. 
  1278. AOD         (Allocate On Demand)  The page has not been referenced and does not 
  1279.             have a page of physical memory attached. This is the normal state 
  1280.             of a page after being committed and before being referenced. When 
  1281.             referenced, a physical page is zeroed and attached to the virtual 
  1282.             page. 
  1283. TBL         (To Be Loaded)  The page has not been referenced and does not have 
  1284.             a page of physical memory attached. This page was created by the 
  1285.             loader. When referenced, the page is retrieved from the appropriate 
  1286.             disk file. 
  1287. Present     A physical page is attached to the virtual page, and the 
  1288.             appropriate Page Table Entry points directly to it. This is the 
  1289.             state of a page that is in active use. 
  1290. Idle        A page which has not been used recently. The Page Table Entry is 
  1291.             not connected directly to the physical page. Instead, the Page 
  1292.             Table Entry is connected to the physical page by way of the Virtual 
  1293.             Page Table. When referenced, the page is returned to the present 
  1294.             state. 
  1295. Swapped     The contents of the page have been swapped to disk. When 
  1296.             referenced, the page is loaded from disk and returned to the 
  1297.             present state. 
  1298.  
  1299. Present pages have the same substates as attached physical memory. See the 
  1300. Physical Memory States section for an explanation. 
  1301.  
  1302. Virtual Memory State Change Table 
  1303.  
  1304.  
  1305. ΓòÉΓòÉΓòÉ 7.2.4. Virtual Memory State Change Table ΓòÉΓòÉΓòÉ
  1306.  
  1307. Following are the primary virtual page state transitions: 
  1308.  
  1309. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1310. ΓöéFrom State ΓöéTo State   ΓöéReason                                   Γöé
  1311. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1312. ΓöéFree       ΓöéDecommittedΓöéDosAllocMem or DosAllocSharedMem w/o     Γöé
  1313. Γöé           Γöé           ΓöéPAG_COMMIT                               Γöé
  1314. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1315. ΓöéFree       ΓöéCommitted  ΓöéDosAllocMem or DosAllocSharedMem w/      Γöé
  1316. Γöé           Γöé           ΓöéPAG_COMMIT                               Γöé
  1317. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1318. ΓöéDecommittedΓöéFree       ΓöéDosFreeMem                               Γöé
  1319. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1320. ΓöéDecommittedΓöéCommitted  ΓöéDosSetMem w/ PAG_GUARD or PAG_COMMIT     Γöé
  1321. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1322. ΓöéCommitted  ΓöéFree       ΓöéDosFreeMem or the program terminates     Γöé
  1323. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1324. ΓöéCommitted  ΓöéDecommittedΓöéDosSetMem w/ PAG_DECOMMIT. If a page is  Γöé
  1325. Γöé           Γöé           Γöéattached, it is freed.                   Γöé
  1326. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1327.  
  1328. Following are the substate transitions within the committed state: 
  1329.  
  1330. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1331. ΓöéFrom StateΓöéTo StateΓöéReason                                       Γöé
  1332. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1333. ΓöéGuard     ΓöéAOD     ΓöéDosSetMem w/ PAG_COMMIT                      Γöé
  1334. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1335. ΓöéAOD       ΓöéGuard   ΓöéDosSetMem w/ PAG_GUARD                       Γöé
  1336. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1337. ΓöéAOD       ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1338. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1339. ΓöéTBL       ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1340. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1341. ΓöéPresent   ΓöéTBL     ΓöéThe page is discarded by the Swapper.        Γöé
  1342. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1343. ΓöéPresent   ΓöéIdle    ΓöéThe Page Ager "idles" the page if it has not Γöé
  1344. Γöé          Γöé        Γöébeen accessed recently.                      Γöé
  1345. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1346. ΓöéIdle      ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1347. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1348. ΓöéIdle      ΓöéSwapped ΓöéThe Swapper writes the page contents to disk Γöé
  1349. Γöé          Γöé        Γöébecause it needs the physical page.          Γöé
  1350. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1351. ΓöéSwapped   ΓöéPresent ΓöéThe page is referenced.                      Γöé
  1352. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1353.  
  1354.  
  1355. ΓòÉΓòÉΓòÉ 7.2.5. Memory State Venn Diagram ΓòÉΓòÉΓòÉ
  1356.  
  1357. The Venn diagram for the states of physical and virtual memory is: 
  1358.  
  1359.  
  1360. ΓòÉΓòÉΓòÉ 7.3. Memory Management Control Blocks ΓòÉΓòÉΓòÉ
  1361.  
  1362. The memory management control blocks are presented in three methods: 
  1363.  
  1364. o The Different Views of Memory 
  1365. o Table of Memory Management Control Blocks 
  1366. o Pictures of Memory Control Blocks 
  1367.  
  1368.  
  1369. ΓòÉΓòÉΓòÉ 7.3.1. The Different Views of Memory ΓòÉΓòÉΓòÉ
  1370.  
  1371. The Memory Manager uses several control blocks to keep track of all the 
  1372. different views of memory. The views are: 
  1373.  
  1374. View       Control Blocks 
  1375. Virtual    The GDT and LDT are used to convert virtual addresses to linear 
  1376.            addresses. 
  1377. Linear     The arena is used to manage the linear address space. 
  1378. Physical   The Page Directory and Page Tables are used to convert linear 
  1379.            addresses to physical addresses. 
  1380. Modules    The MTE is used to manage modules. 
  1381.  
  1382. For a tabular summary, see Table of Memory Management Control Blocks. 
  1383.  
  1384.  
  1385. ΓòÉΓòÉΓòÉ 7.3.1.1. Virtual View Control Blocks ΓòÉΓòÉΓòÉ
  1386.  
  1387. The GDT and LDT are used to convert virtual addresses to linear addresses. 
  1388.  
  1389. GDT   (Global Descriptor Table) The GDT has selectors which are valid in any 
  1390.       process context. These include selectors for device drivers, system 
  1391.       tables, kernel code, and the flat selectors that are loaded by the system 
  1392.       for 32-bit flat programs. 
  1393. LDT   (Local Descriptor Table) Each process has an LDT, which is used only for 
  1394.       16-bit segmented applications. 
  1395.  
  1396.  
  1397. ΓòÉΓòÉΓòÉ 7.3.1.2. Linear View Control Blocks ΓòÉΓòÉΓòÉ
  1398.  
  1399. The arena is used to manage the linear address space. 
  1400.  
  1401. arena           The arena keeps track of what linear addresses are being used. 
  1402.                 The arena contains arena records, object records, and context 
  1403.                 records. See sections starting with Arenas with Arena Records 
  1404.                 for a pictorial representation of their relationships of these 
  1405.                 control blocks. See section Arena Relationships for a pictorial 
  1406.                 representation of the relationships between the various types 
  1407.                 of arenas. 
  1408. arena header    There is an arena header for each arena. They are doubly 
  1409.                 linked. The Arena Header picture shows this graphically. 
  1410. private arena   The PTDA contains the arena header for the private arena for 
  1411.                 that process. The arena header has a pointer to the sentinel 
  1412.                 arena record for the private arena for that Process. The 
  1413.                 private arena is usable only in the context of that process. 
  1414.                 The Arena Header picture shows this graphically. 
  1415. shared arena    The shared arena tracks all of the shared memory objects in the 
  1416.                 system. The shared arena is context-sensitive, because the 
  1417.                 backing memory (pages of real RAM) may be process-unique. (This 
  1418.                 is the case for the instance data in a DLL file.) The context 
  1419.                 records keep track of which processes can access each memory 
  1420.                 object. 
  1421. system arena    The system arena maps the linear address space which belongs to 
  1422.                 the OS/2 system. The system memory objects are not addressable 
  1423.                 by application programs. 
  1424. VPT             (Virtual Page Table) The Virtual Page Table has an entry for 
  1425.                 each committed page. Each entry also includes the hob of the 
  1426.                 memory object that is attached to the page. 
  1427.  
  1428.  
  1429. ΓòÉΓòÉΓòÉ 7.3.1.3. Physical View Control Blocks ΓòÉΓòÉΓòÉ
  1430.  
  1431. The Page Directory and Page Tables are used to convert linear addresses to 
  1432. physical addresses. 
  1433.  
  1434. PD    (Page Directory) The Page Directory is the first-level address 
  1435.       translation table used by the hardware to map a linear address to a 
  1436.       physical address. The entries in the Page Directory point to Page Tables. 
  1437. PT    (Page Table) The Page Table is the second-level address translation table 
  1438.       used by the hardware to map a linear address to a physical address. The 
  1439.       entries in the Page Directory point to Page Tables, which in turn point 
  1440.       to pages of physical RAM. 
  1441. PPD   (Process Page Directory) Each PTDA contains a pointer to a Process Page 
  1442.       Directory which points to Page Tables that track the physical pages that 
  1443.       may be referenced by that Process. The PPD maps the area for both the 
  1444.       private and shared arenas. 
  1445. PFT   (Page Frame Table) The Page Frame Table keeps track of physical memory. 
  1446.       There is an entry for each addressable page of RAM in the machine. Each 
  1447.       in-use entry in this table has a pointer to an entry in the Virtual Page 
  1448.       Table, which effectively links physical and linear memory. 
  1449. PRT   (Page Range Table) The Page Range Table tells which pages are 
  1450.       addressable. 
  1451.  
  1452.  
  1453. ΓòÉΓòÉΓòÉ 7.3.1.4. Module View Control Blocks ΓòÉΓòÉΓòÉ
  1454.  
  1455. The MTE is used to manage modules. 
  1456.  
  1457. MTE   (Module Table Entry) Each module that is loaded has an MTE that is used 
  1458.       to manage the memory objects that make up the module. The MTEs are linked 
  1459.       together. The PTDA points to the MTE for the EXE file for that process. 
  1460.  
  1461.       The MTE is split into resident and swappable portions. There are several 
  1462.       subtates in each category, including the object/segment table that has 
  1463.       the actual object/segment information for the module. 
  1464.  
  1465.  
  1466. ΓòÉΓòÉΓòÉ 7.3.2. Table of Memory Management Control Blocks ΓòÉΓòÉΓòÉ
  1467.  
  1468. A summary of how the various Memory Management Control Blocks refer to each 
  1469. other: 
  1470.  
  1471. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1472. ΓöéControl Block ----->ΓöéPointer Type ------>ΓöéControl Block       Γöé
  1473. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1474. Γöéarena record        Γöéhar                 Γöénext arena record inΓöé
  1475. Γöé                    Γöé                    Γöéthe arena           Γöé
  1476. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1477. Γöéarena record        Γöéhob                 Γöéobject record       Γöé
  1478. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1479. Γöéarena record        Γöéhco                 Γöécontext record      Γöé
  1480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1481. Γöéobject record       Γöéhar                 Γöéarena record        Γöé
  1482. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1483. Γöéobject record       Γöéhob                 Γöéowner               Γöé
  1484. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1485. Γöéobject record       Γöéhob                 Γöéthe EXE or DLL file Γöé
  1486. Γöé                    Γöé                    Γöéwhich allocated the Γöé
  1487. Γöé                    Γöé                    Γöémemory              Γöé
  1488. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1489. Γöécontext record      Γöéhob                 ΓöéPTDA with access to Γöé
  1490. Γöé                    Γöé                    Γöéthe shared object   Γöé
  1491. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1492. Γöécontext record      Γöéhco                 Γöénext context record Γöé
  1493. Γöé                    Γöé                    Γöéin the access chain Γöé
  1494. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1495. Γöéarena header        Γöélinear address      Γöéarena sentinel      Γöé
  1496. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1497. ΓöéPTDA                Γöélinear address and  ΓöéLDT                 Γöé
  1498. Γöé                    Γöéhob                 Γöé                    Γöé
  1499. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1500. ΓöéPTDA                Γöélinear address      ΓöéProcess Page        Γöé
  1501. Γöé                    Γöé                    ΓöéDirectory           Γöé
  1502. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1503. ΓöéPTDA                Γöéhob                 ΓöéMTE of the EXE file Γöé
  1504. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1505. ΓöéMTE                 Γöélinear address      Γöénext MTE in the listΓöé
  1506. Γöé                    Γöé                    Γöéof MTEs             Γöé
  1507. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1508. ΓöéPage Directory      Γöéphysical address    ΓöéPage Table          Γöé
  1509. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1510. ΓöéPage Table Entry    ΓöéImplied by the      ΓöéPage Frame Entry    Γöé
  1511. Γöé                    Γöéphysical address    Γöé                    Γöé
  1512. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1513. ΓöéPage Frame Entry    ΓöéLinear address      ΓöéVirtual Page Entry  Γöé
  1514. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1515. ΓöéVirtual Page Entry  Γöéhob                 ΓöéObject Record       Γöé
  1516. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1517. ΓöéVirtual Page Entry  Γöéframeid             ΓöéPhysical page       Γöé
  1518. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1519.  
  1520. This is all the information that is gathered together by: 
  1521.  
  1522. o Description of Linear Object, 
  1523. o Description of Segment, and 
  1524. o Description of Physical Object. 
  1525.  
  1526.  
  1527. ΓòÉΓòÉΓòÉ 7.3.3. Pictures of Memory Control Blocks ΓòÉΓòÉΓòÉ
  1528.  
  1529. The memory manager control block pictures are: 
  1530.  
  1531. o Arena Header picture 
  1532. o Arena Relationships 
  1533. o Arenas with Arena Records 
  1534. o Arenas with Object Records 
  1535. o Arenas with Context Records 
  1536.  
  1537.  
  1538. ΓòÉΓòÉΓòÉ 7.3.3.1. Arena Header picture ΓòÉΓòÉΓòÉ
  1539.  
  1540. Most arena headers are within PTDAs and all are linked together: 
  1541.  
  1542. Next picture: Arena Relationships. 
  1543.  
  1544.  
  1545. ΓòÉΓòÉΓòÉ 7.3.3.2. Arena Relationships ΓòÉΓòÉΓòÉ
  1546.  
  1547. The arenas are related by linear address: 
  1548.  
  1549. Adjacent pictures: Arenas with Arena Records, Arena Headers. 
  1550.  
  1551.  
  1552. ΓòÉΓòÉΓòÉ 7.3.3.3. Arenas with Arena Records ΓòÉΓòÉΓòÉ
  1553.  
  1554. The arenas are made up of doubly linked arena records: 
  1555.  
  1556. Adjacent pictures: Arenas with Object Records, Arena Relationships. 
  1557.  
  1558.  
  1559. ΓòÉΓòÉΓòÉ 7.3.3.4. Arenas with Object Records ΓòÉΓòÉΓòÉ
  1560.  
  1561. All the arena records, except the sentinel, have object records: 
  1562.  
  1563. Adjacent pictures: Arenas with Context Records, Arenas with Arena Records. 
  1564.  
  1565.  
  1566. ΓòÉΓòÉΓòÉ 7.3.3.5. Arenas with Context Records ΓòÉΓòÉΓòÉ
  1567.  
  1568. The arena records in the shared arena have context records: 
  1569.  
  1570. Previous picture: Arenas with Object Records. 
  1571.  
  1572.  
  1573. ΓòÉΓòÉΓòÉ 7.4. Cost of Memory Objects ΓòÉΓòÉΓòÉ
  1574.  
  1575. The cost of a memory object can be summarized as follows: 
  1576.  
  1577. Item                    Cost in bytes (decimal) 
  1578. DTE                     8 
  1579. PTE                     4 * total number of pages 
  1580. Arena Record            22 
  1581. Object Record           16 
  1582. Context Record          5 * number of Processes that have access to the object 
  1583. Page Frame Record       12 * number of pages in RAM 
  1584. Virtual Page Record     12 * number of committed pages 
  1585.  
  1586. If the object is loaded from a 32-bit EXE/DLL file, then add: 
  1587.  
  1588. Item                    Cost in bytes (decimal) 
  1589. MTE object entry        24 
  1590.  
  1591. If the object is loaded from a 16-bit EXE/DLL file, then add: 
  1592.  
  1593. Item                    Cost in bytes (decimal) 
  1594. MTE segment entry       16 
  1595.  
  1596. Remember that this is a per-object/segment cost. Each object/segment loaded 
  1597. from the module must be included. 
  1598.  
  1599.  
  1600. ΓòÉΓòÉΓòÉ 8. Changes ΓòÉΓòÉΓòÉ
  1601.  
  1602. Version 2.0 is the initial product version of THESEUS2. 
  1603.  
  1604. o Changes between v2.0 and v2.0.1: 
  1605.  
  1606.  
  1607. ΓòÉΓòÉΓòÉ 8.1. Changes between v2.0 and v2.0.1 ΓòÉΓòÉΓòÉ
  1608.  
  1609.  1. Added a second section on memory accumulation determination, using the 
  1610.     SWAPPER.DAT contents to determine the problem. 
  1611.  
  1612.  2. Added the locked memory state to the Memory State Venn Diagram. 
  1613.  
  1614.  3. Fixed an error in the Virtual Memory Display dialog for expand down 
  1615.     segments. 
  1616.  
  1617.  4. Made the program work correctly with OS/2 2.1 beta 1 (6.479). The mte 
  1618.     format changed. The data displayed has not been changed. 
  1619.  
  1620.  5. Added some decoding of flag fields in the MTE display. 
  1621.  
  1622.  6. Added file flags to Open Files portion of the General Process Information 
  1623.     display. 
  1624.  
  1625.  7. Fixed a trap when there was more than about 70 processes. 
  1626.  
  1627.  8. Generated separate totals for the private and owned shared columns on the 
  1628.     RAM Usage by Process display. 
  1629.  
  1630.  9. Fixed a loop caused when the program was started with a minimized window. 
  1631.  
  1632. 10. Changed the values shown in the type column of the Modules display from 
  1633.     16/32 to NE/LX. This was done because LX modules are not all 32-bit, some 
  1634.     are 16-bit and some are mixed 16 & 32-bit. 
  1635.  
  1636. 11. Fixed a Hyperblock link error on the SFT entry display. 
  1637.  
  1638. 12. Fixed an error which caused the last entry to not show on the Open Files 
  1639.     display. 
  1640.  
  1641. 13. Added "memory" of following functions from one invocation to the next: 
  1642.  
  1643.    o Process Hierarchy window position, size, and state 
  1644.    o Font for Process Hierarchy window 
  1645.    o Default font for Detail windows 
  1646.    o `Link' color 
  1647.  
  1648. 14. Fixed an error which caused a trap when entering an invalid file name in 
  1649.     the SaveAs dialog. 
  1650.  
  1651. 15. Enabled long file names for the program. 
  1652.  
  1653. 16. Fixed an error in the column summations on the RAM Usage by Process display 
  1654.     which was introduced with the changes for item 8 above. 
  1655.  
  1656. 17. Made the program work correctly with OS/2 2.1 (6.488+). The mte format 
  1657.     changed, again. 
  1658.  
  1659. 18. Fixed an error which caused the top of the `link' list to not be 
  1660.     "unchecked" which was introduced with the changes for item 13 above. 
  1661.  
  1662. 19. Changed the window trailer line to include the program name and version and 
  1663.     deleted the hundredths of seconds value. 
  1664.  
  1665. 20. Changed where the program version is picked up. It was picked up from the 
  1666.     dialog DLL and is now picked up from the EXE file. 
  1667.  
  1668. 21. Fixed an error in the RAM Usage by Process display which was caused by 
  1669.     trying to assign pages which are not valid (pages not in the Page Range 
  1670.     Table). 
  1671.  
  1672. 22. Removed diagnostic lines from the RAM Usage by Process display. The only 
  1673.     information remaining is the summary. 
  1674.  
  1675. 23. Fixed an error which caused memory accumulation when using pop up menus. 
  1676.  
  1677. 24. Added the total machine run time in hours, minutes, and seconds to the 
  1678.     General System Information display.  This is a formatted version of the 
  1679.     QSV_MS_COUNT value. 
  1680.  
  1681. 25. Fixed an error in GDT selector validation caused when the GDT segment was 
  1682.     expanded during the run. 
  1683.  
  1684. 26. Fixed an error on the Memory Utilization display that was caused when 
  1685.     analyzing a process that does not have an LDT, such as a VDM process. 
  1686.  
  1687. 27. Changed the order of the output on the General System Information display 
  1688.     to make it more usable. 
  1689.  
  1690. 28. Modified the working set algorithm description to better explain how the 
  1691.     calculations occur. 
  1692.  
  1693. 29. Added Memory Leak Detection to the System and Process pull-downs. 
  1694.  
  1695. 30. Made the program work correctly with OS/2 2.1 (6.504+). The mte format 
  1696.     changed, again. 
  1697.  
  1698. 31. Added the process environment to the General Process Information display. 
  1699.  
  1700. 32. Fixed an error in the Detail of Working Set (by Object) report which caused 
  1701.     incorrect values to be shown (sometimes negative) in the accessed - no 
  1702.     column in the Objects from the `shared' arena section. 
  1703.  
  1704. 33. Added an Illustration section to the Working Set panels. 
  1705.  
  1706. 34. Changed the avg. time values on the Detail of Working Set (by Object) 
  1707.     report to make it easier to tell if all the pages were accessed at the same 
  1708.     time. 
  1709.  
  1710. 35. Added logic to detect that the process requested for periodic update has 
  1711.     terminated. 
  1712.  
  1713. 36. Added additional thread states to the General Process Information displays 
  1714.     thread status area. 
  1715.  
  1716. 37. Changed the behavior of the single click of mouse button 2 so that it no 
  1717.     longer will do an "item selection." 
  1718.  
  1719. 38. Added code to the initialization phase to try to make the program less 
  1720.     prone to killing the whole system when the version of OS/2 is not 
  1721.     recognized. 
  1722.  
  1723. 39. Reworded some of the initialization failure error messages. 
  1724.  
  1725. 40. Added Memory Object Leak Detection to the Functions pull-down. 
  1726.  
  1727. 41. Fixed a memory leak in the General Process Information display. 
  1728.  
  1729. 42. Fixed a memory leak in the T2FreeMemory API function. 
  1730.  
  1731. 43. Added an interface for REXX for some of the API functions. 
  1732.  
  1733. 44. Fixed a problem with the Memory displays which occurred when crossing page 
  1734.     boundaries. 
  1735.  
  1736. 45. Added an output of the source of the base information in the Leak Detector 
  1737.     displays. 
  1738.  
  1739. 46. Fixed a problem with the time interval output when starting working set 
  1740.     after changing the time interval. 
  1741.  
  1742. 47. Made it work with 2.0's Service Pak2. 
  1743.  
  1744. 48. Fixed an error in the T2AnalyzeSwapper API which caused incorrect results 
  1745.     to be returned. 
  1746.  
  1747. 49. Fixed errors in the Open Files display when there are more than 500 files 
  1748.     open. 
  1749.  
  1750. 50. Fixed errors in the disassembler. 
  1751.  
  1752. 51. Removed the Environment output from the General Process Information display 
  1753.     for VDM processes. (The environment hob which is in the PTDA is not valid 
  1754.     and caused problems when trying to display the environment.) 
  1755.  
  1756. 52. Added display of the requested Arena Record to the Har Description display. 
  1757.  
  1758. 53. Added display of the requested Object Record and its referenced Arena 
  1759.     Record to the Hob Description display. 
  1760.  
  1761. 54. Added allocated memory to the System Leak Detection and Process Leak 
  1762.     Detection displays. 
  1763.  
  1764. 55. Added the Trace control flags to the Global Info Seg display. 
  1765.  
  1766. 56. Fixed an error during initialization on an OS/2 2.0 GA machine. 
  1767.  
  1768. 57. Fixed an error which was caused in opening the sixteenth window. 
  1769.  
  1770. 58. Changed the pointer management during periodic updates, because it was 
  1771.     causing a leak in PMGRE memory. 
  1772.  
  1773. 59. Fixed a problem which caused the segment number of 16-bit objects to be 
  1774.     reported as 0000 in the object description. 
  1775.  
  1776. 60. Added a code or data indicator to the shared part of an object description. 
  1777.  
  1778. 61. Fixed a problem which caused a trap in Working Set calculations when a 
  1779.     process terminated during the data collection processing. This caused a 
  1780.     change in the device driver THESEUS2.SYS. The change causes the device 
  1781.     driver to disable interrupts during part of its processing and validate all 
  1782.     the addresses it uses for data collection each time it goes disabled. 
  1783.  
  1784. 62. Fixed a problem with the code changed in the previous fix, which caused a 
  1785.     trap in a user of THESEUS0.DLL. 
  1786.  
  1787. 63. Added total threads to the Process List display. 
  1788.  
  1789. 64. Fixed an error in the Swapper display which caused the number of used disk 
  1790.     frames to be underreported. 
  1791.  
  1792. 65. Added code to load certain system pages which might be swapped out. 
  1793.  
  1794. 66. Changed RT2LoadFuncs so that multiple calls to it will not cause multiple 
  1795.     initializations of the underlying functions. 
  1796.  
  1797. 67. Added a column for the number of pages in the working set to the Detail of 
  1798.     Working Set (by Object) display. 
  1799.  
  1800. 68. Added a summary line for each arena and each process on the Detail of 
  1801.     Working Set (by Object) display. 
  1802.  
  1803. 69. Added a Summary by Process display for System Working Set information. 
  1804.  
  1805. 70. Fixed a memory leak in RT2WSSystemTick and RT2WSProcessTick REXX API 
  1806.     functions. 
  1807.  
  1808. 71. Deleted the code in RT2FindProcesses and RT2RamUseByProcess which attempted 
  1809.     to drop the stem variable before constructing the new values. SysFileTree 
  1810.     (part of the RexxUtil package) does not drop the stem, so it was decided 
  1811.     that THESEUS0.DLL should not, either. 
  1812.  
  1813. 72. Fixed an error in the Memory Utilization display which did not properly 
  1814.     count TSD pages when running on a machine with Kernel Debugger installed. 
  1815.  
  1816. 73. Fixed an error in several displays when processing a private arena which 
  1817.     had only a sentinel. 
  1818.  
  1819. 74. Changed the method of specifying the update interval for Detail windows. 
  1820.     There was a problem when specifying an interval of longer than 65 seconds. 
  1821.  
  1822. 75. Fixed an error in the Swapper window processing which occurred when a page 
  1823.     is swapped out and no longer has a copy in RAM. 
  1824.  
  1825.  
  1826. ΓòÉΓòÉΓòÉ 9. Process Hierarchy Window ΓòÉΓòÉΓòÉ
  1827.  
  1828. The Process Hierarchy window shows the parent/child relationships of processes 
  1829. as they currently exist in memory. 
  1830.  
  1831. After a process has been selected, you may then move on to a Detail window. 
  1832.  
  1833. Options available on the Process Hierarchy window are: 
  1834.  
  1835. System      Lists the displays applicable to the system as a whole. 
  1836. Process     Lists the displays applicable to the selected process. 
  1837. Registers   Lists the displays applicable to the processor. 
  1838. Misc        Lists the miscellaneous functions. 
  1839. Window      Lists the existing THESEUS2 Detail windows. 
  1840. Help        Lists the help functions. 
  1841.  
  1842.  
  1843. ΓòÉΓòÉΓòÉ 9.1. Selecting a Process ΓòÉΓòÉΓòÉ
  1844.  
  1845. You may select a process in either of two ways: 
  1846.  
  1847. o Place the mouse pointer over a process name, then press mouse button 1. 
  1848.  
  1849. o Use the arrow keys: 
  1850.  
  1851.    Left    Moves to the parent of the current process. 
  1852.    Right   Moves to the oldest child of the current process. 
  1853.    Up      Moves to the next younger sibling of the current process. 
  1854.    Down    Moves to the next older sibling of the current process. 
  1855.  
  1856. If no process is selected, pressing any arrow key makes "sysinit" the selected 
  1857. process. 
  1858.  
  1859.  
  1860. ΓòÉΓòÉΓòÉ 9.2. Keys ΓòÉΓòÉΓòÉ
  1861.  
  1862. The key usage in the Process Hierarchy window is: 
  1863.  
  1864. Left            Moves to the parent of the current process. 
  1865. Right           Moves to the oldest child of the current process. 
  1866. Up              Moves to the next younger sibling of the current process. 
  1867. Down            Moves to the next older sibling of the current process. 
  1868. Alt+Left        Scrolls the window information left. 
  1869. Alt+Right       Scrolls the window information right. 
  1870. Alt+Up          Scrolls the window information up. 
  1871. Alt+Down        Scrolls the window information down. 
  1872. Page Up         Scrolls the window information up 1/2 the screen height. 
  1873. Page Down       Scrolls the window information down 1/2 the screen height. 
  1874. Print Screen    Prints the contents of the window. 
  1875. F1              Requests contextual help. 
  1876. F3              Exits THESEUS2. 
  1877. Enter           Displays General Process Information for the selected process. 
  1878.                 (This is the same as double-clicking mouse button 1.) 
  1879.  
  1880.  
  1881. ΓòÉΓòÉΓòÉ 9.3. System ΓòÉΓòÉΓòÉ
  1882.  
  1883. The System pull-down contains displays applicable to the system as a whole. A 
  1884. process does not have to be selected in order to select one of these displays. 
  1885.  
  1886. Functions available are: 
  1887.  
  1888. Working Set 
  1889.           Displays the working set of memory for the entire system. 
  1890. RAM Usage by Process 
  1891.           First determines and then displays the amount of RAM consumed my each 
  1892.           process. 
  1893. Memory Leak Detection 
  1894.           Displays the number of pages of memory that each process is 
  1895.           accumulating. 
  1896. Free, Idle and Locked Memory 
  1897.           Generates the summary information about free, idle and locked pages. 
  1898. Swapper 
  1899.           Displays information about the contents of the SWAPPER.DAT file. 
  1900. General System 
  1901.           A set of displays containing general system information. 
  1902. Kernel Information 
  1903.           A set of displays containing kernel information. 
  1904.  
  1905.  
  1906. ΓòÉΓòÉΓòÉ 9.3.1. Working Set ΓòÉΓòÉΓòÉ
  1907.  
  1908. Select one: 
  1909.  
  1910. Selecting 
  1911.  
  1912. Example Output 
  1913.  
  1914. Contents of Display 
  1915.  
  1916. Algorithm 
  1917.  
  1918. Illustration 
  1919.  
  1920. Related Topics 
  1921.  
  1922.  
  1923. ΓòÉΓòÉΓòÉ <hidden> Selecting the Working Set Display ΓòÉΓòÉΓòÉ
  1924.  
  1925. When you select the Working Set option of the System pull-down on the Process 
  1926. Hierarchy window, the memory working set of the entire System is computed and 
  1927. displayed. 
  1928.  
  1929. There are optional values that can be shown in realtime. 
  1930.  
  1931.  
  1932. ΓòÉΓòÉΓòÉ <hidden> Example of the Working Set Display ΓòÉΓòÉΓòÉ
  1933.  
  1934. Working Set for the entire System:
  1935. Use the 'Functions' pull-down or the 'Popup Menu'
  1936.   to start and stop the data collection.
  1937. Collection started: interval = 5, Working Set is 3 intervals.
  1938. current time  --------- Total ----------   ------   ------ ---- Process -----
  1939. hh:mm:ss.tt      now       ws   accessed     Free     Idle contributed  total
  1940. 10:49:02.84    4.789M   4.789M     4.789M   3.191M   0.008M          7      7
  1941. 10:49:07.84    4.664M   4.828M     4.828M   3.191M   0.008M          7      7
  1942. 10:49:12.84    4.664M   4.828M     4.828M   3.191M   0.008M          7      7
  1943. 10:49:17.84    4.664M   4.664M     4.828M   3.191M   0.008M          7      7
  1944. 10:49:22.84    4.664M   4.664M     4.828M   3.191M   0.008M          7      7
  1945. 10:49:27.84    4.664M   4.664M     4.828M   3.191M   0.008M          7      7
  1946. 10:49:32.84    4.734M   4.734M     4.898M   3.191M   0.008M          7      7
  1947. 10:49:37.87    5.172M   5.184M     5.199M   3.180M   0.008M          7      7
  1948.  
  1949. 8 samples collected.
  1950.                                     Total
  1951. Absolute minimum amount of memory:  5.172M
  1952. Recommended amount of memory:       5.184M
  1953. Total amount of accessed memory:    5.199M
  1954.  
  1955.  
  1956. ΓòÉΓòÉΓòÉ <hidden> Contents of the Working Set Display ΓòÉΓòÉΓòÉ
  1957.  
  1958. The following values are computed and optionally presented in realtime. 
  1959.  
  1960. Column      Meaning 
  1961.  
  1962. current time The time of the sample, presented in 
  1963.             hours:minutes:seconds.hundredths. 
  1964.  
  1965. now         The amount of memory referenced in the current interval. 
  1966.  
  1967. ws          The working set, which is the amount of memory referenced in the 
  1968.             past n intervals. 
  1969.  
  1970. accessed    The total amount of memory accessed since the start of the 
  1971.             collection run. 
  1972.  
  1973. Free        The amount of free memory. 
  1974.  
  1975. Idle        The amount of idle memory. 
  1976.  
  1977. Process contributed The number of processes that had memory accessed during the 
  1978.             interval. This value indicates the number of processes which are 
  1979.             both running and touching non-system memory. 
  1980.  
  1981. Process total The total number of processes found during the interval. This 
  1982.             number changes as processes are created or destroyed. 
  1983.  
  1984. When the Stop option is selected: 
  1985.  
  1986. ii samples collected. 
  1987.           The number of samples collected is reported (in decimal notation). 
  1988. Absolute minimum amount of memory 
  1989.           The maximum value from the now column. This is the amount of memory 
  1990.           absolutely required to run the application without "thrashing" 
  1991.           memory. 
  1992. Recommended amount of memory 
  1993.           The maximum value from the ws column. This is the recommended amount 
  1994.           of memory for the application to run with minimum impact on paging. 
  1995. Total amount of accessed memory 
  1996.           The maximum value from the accessed column. This is the amount of 
  1997.           memory required to run the application with no paging activity. 
  1998.  
  1999.  
  2000. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2001.  
  2002. o Memory addressing 
  2003.  
  2004. o Memory Management Control Blocks 
  2005.  
  2006. o Memory Analysis Techniques 
  2007.  
  2008. o Detail of Working Set (by Page) 
  2009.  
  2010. o Detail of Working Set (by Object) 
  2011.  
  2012. o Summary by Process 
  2013.  
  2014.  
  2015. ΓòÉΓòÉΓòÉ <hidden> System Working Set Algorithm ΓòÉΓòÉΓòÉ
  2016.  
  2017. To compute the working set for the entire OS/2 system, you need to know: 
  2018.  
  2019. o Which pages have been referenced 
  2020. o When the pages were touched. 
  2021.  
  2022. The algorithm is: 
  2023.  
  2024.  1. The accessed flags are cleared from the Page Tables of all processes 
  2025.     running in the system. 
  2026.  
  2027.  2. A timer is started, and on each timer tick: 
  2028.  
  2029.     a. The pages which have been accessed are noted. 
  2030.     b. The accessed flags are cleared. 
  2031.     c. The number of pages which have been accessed anytime within the 
  2032.        specified number of intervals is counted. 
  2033.     d. Summary information for the interval is generated. 
  2034.     e. The interval information is displayed, if requested. 
  2035.  
  2036.  3. When the Stop option is selected: 
  2037.  
  2038.     a. Summary numbers for the entire run are generated. They are: 
  2039.  
  2040.       Absolute minimum amount of memory 
  2041.                 The maximum of all the now entries. 
  2042.       Recommended amount of memory 
  2043.                 The maximum of all the ws entries. 
  2044.       Total amount of accessed memory 
  2045.                 The maximum of all the accessed entries. 
  2046.  
  2047.     b. The results are displayed. 
  2048.  
  2049.  
  2050. ΓòÉΓòÉΓòÉ <hidden> Working Set Illustration ΓòÉΓòÉΓòÉ
  2051.  
  2052. To illustrate how the working set algorithm works, the follow table will be 
  2053. used: 
  2054.  
  2055. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2056. Γöétick  Γöéwhich pagesΓöépage 1Γöépage 2Γöépage 3Γöénow   Γöéws    ΓöéaccessedΓöé
  2057. Γöé      Γöéaccessed   Γöé      Γöé      Γöé      Γöé      Γöé      Γöé        Γöé
  2058. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2059. Γöé 0    Γöé           Γöé 255  Γöé 255  Γöé 255  Γöé      Γöé      Γöé        Γöé
  2060. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2061. Γöé 1    Γöé 1         Γöé 1    Γöé 255  Γöé 255  Γöé 1    Γöé 1    Γöé 1      Γöé
  2062. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2063. Γöé 2    Γöé 2         Γöé 2    Γöé 1    Γöé 255  Γöé 1    Γöé 2    Γöé 2      Γöé
  2064. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2065. Γöé 3    Γöé 1 3       Γöé 1    Γöé 2    Γöé 1    Γöé 2    Γöé 3    Γöé 3      Γöé
  2066. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2067. Γöé 4    Γöé 1         Γöé 1    Γöé 3    Γöé 2    Γöé 1    Γöé 3    Γöé 3      Γöé
  2068. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2069. Γöé 5    Γöé 1         Γöé 1    Γöé 4    Γöé 3    Γöé 1    Γöé 2    Γöé 3      Γöé
  2070. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2071. Γöé 6    Γöé 1         Γöé 1    Γöé 5    Γöé 4    Γöé 1    Γöé 1    Γöé 3      Γöé
  2072. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2073.  
  2074. The number of intervals in the working set is 3 for this illustration. 
  2075.  
  2076. The meanings of the columns are: 
  2077.  
  2078. Column            Meaning 
  2079. tick              The interval number. 
  2080. pages accessed    Indicates which page numbers were accessed during this 
  2081.                   interval. 
  2082. page n            The number of intervals since the page was accessed. (255 
  2083.                   indicates the page has never been accessed. The value is not 
  2084.                   allowed to be incremented above 254, so that value simply 
  2085.                   means that the page was accessed "a long time ago.") This 
  2086.                   corresponds to the time column in the detail displays. 
  2087. now               The number of pages accessed in this interval. This 
  2088.                   corresponds to the now column in the displays. 
  2089. ws                The number of pages considered to be in the working set. This 
  2090.                   corresponds to the ws column in the displays. 
  2091. accessed          The number of pages which have been accessed since the run 
  2092.                   began. This corresponds to the accessed column in the 
  2093.                   displays. 
  2094.  
  2095. Explanation at each tick: 
  2096.  
  2097. 0  At initialization all pages are marked as "never been accessed." 
  2098. 1  Page 1 was accessed. Since it was the only page accessed in the last 
  2099.    interval, the now column has 1. Page 1 has been accessed within the last 3 
  2100.    intervals, so the ws column has 1. 
  2101. 2  Page 2 was accessed. Since it was the only page accessed in the last 
  2102.    interval, the now column has 1. Pages 1 and 2 have been accessed within the 
  2103.    last 3 intervals, so the ws column has 2. 
  2104. 3  Pages 1 and 3 were accessed. They were the only pages accessed in the last 
  2105.    interval, so the now column has 2. Pages 1, 2 and 3 have been accessed 
  2106.    within the last 3 intervals, so the ws column has 3. 
  2107. 4  Page 1 was accessed. Since it was the only page accessed in the last 
  2108.    interval, the now column has 1. Pages 1, 2 and 3 have been accessed within 
  2109.    the last 3 intervals, so the ws column has 3. 
  2110. 5  Page 1 was accessed. Since it was the only page accessed in the last 
  2111.    interval, the now column has 1. Pages 1 and 3 have been accessed within the 
  2112.    last 3 intervals, so the ws column has 2. (Page 2 was accessed 4 intervals 
  2113.    ago.) 
  2114. 6  Page 1 was accessed. Since it was the only page accessed in the last 
  2115.    interval, the now column has 1. Page 1 has been accessed within the last 3 
  2116.    intervals, so the ws column has 1. (Page 2 was accessed 5 intervals ago and 
  2117.    page 3 was accessed 4 intervals ago.) 
  2118.  
  2119.  
  2120. ΓòÉΓòÉΓòÉ 9.3.2. RAM Usage by Process ΓòÉΓòÉΓòÉ
  2121.  
  2122. Select one: 
  2123.  
  2124. Selecting 
  2125.  
  2126. Example Output 
  2127.  
  2128. Contents of Display 
  2129.  
  2130. Algorithm 
  2131.  
  2132. Related Topics 
  2133.  
  2134.  
  2135. ΓòÉΓòÉΓòÉ <hidden> Selecting the RAM Usage by Process Display ΓòÉΓòÉΓòÉ
  2136.  
  2137. When you select the RAM Usage by Process option of the System pull-down on the 
  2138. Process Hierarchy window, information about RAM utilization for the entire 
  2139. system is computed and displayed. All pages of RAM are assigned to a process, 
  2140. after which summaries are provided. 
  2141.  
  2142. The display generation takes about 7 seconds on an 8MB 20Mhz P70. 
  2143.  
  2144.  
  2145. ΓòÉΓòÉΓòÉ <hidden> Example of the RAM Usage by Process Display ΓòÉΓòÉΓòÉ
  2146.  
  2147. RAM Usage by Process:
  2148. --------- private --------   ------ owned shared ------
  2149.    bytes   Kbytes   Mbytes      bytes   Kbytes   Mbytes   who
  2150. 00409000     4132    4.035   0026A000     2472    2.414   system
  2151. 00000000        0    0.000                                sysinit
  2152. 00031000      196    0.191   000D5000      852    0.832   PMSHL32
  2153. 00009000       36    0.035   00005000       20    0.020   HARDERR
  2154. 000BE000      760    0.742   00047000      284    0.277   PMSHL32
  2155. 00018000       96    0.094   0000A000       40    0.039   PULSE
  2156. 00061000      388    0.379                                VDM
  2157. 00025000      148    0.145   00008000       32    0.031   CMD
  2158. 0004B000      300    0.293   00008000       32    0.031   THESEUS2
  2159. --------   ------   ------   --------   ------   ------
  2160. 001E1000     1924    1.879   0013B000     1260    1.230   total RAM in use
  2161. 00611000     6212    6.066   free RAM
  2162. --------   ------   ------
  2163. 00FA0000    16000   15.625   total of all RAM pages found
  2164.  
  2165.  
  2166. ΓòÉΓòÉΓòÉ <hidden> Contents of the RAM Usage by Process Display ΓòÉΓòÉΓòÉ
  2167.  
  2168. The information presented on the RAM Usage by Process display is as follows, 
  2169. with one line displayed for each process: 
  2170.  
  2171. Column           Meaning 
  2172. private          Memory from the private arena of this process. If multiple 
  2173.                  processes have the same page in their private arenas, the 
  2174.                  process with the lowest PID value is charged with the memory. 
  2175. owned shared     Memory from the shared arena that is owned by this process. 
  2176. bytes            The amount of memory in bytes. 
  2177. Kbytes           The amount of memory in kilobytes. 
  2178. Mbytes           The amount of memory in megabytes. 
  2179. who              Name of the process whose data appears on the line. 
  2180.  
  2181.  
  2182. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2183.  
  2184. o Memory addressing 
  2185.  
  2186. o Memory Management Control Blocks 
  2187.  
  2188. o Memory Analysis Using THESEUS2 
  2189.  
  2190.  
  2191. ΓòÉΓòÉΓòÉ <hidden> RAM Usage by Process Algorithm ΓòÉΓòÉΓòÉ
  2192.  
  2193.  1. An array having an entry for each page in the machine is allocated, and 
  2194.     backing RAM is forced for it. This array is called PF-parallel. This array 
  2195.     keeps track of the state of each page and which process is charged with the 
  2196.     page. 
  2197.  
  2198.  2. Memory for a private copy of the Page Frame Table is allocated, and the 
  2199.     Page Frame Table is copied into it. This table is called private-PF. 
  2200.  
  2201.  3. The free pages (as indicated in private-PF) are marked in PF-parallel and 
  2202.     counted. 
  2203.  
  2204.  4. The idle pages (as indicated in private-PF) are marked in PF-parallel and 
  2205.     counted. 
  2206.  
  2207.  5. For each process: 
  2208.  
  2209.     a. For each arena record in its private arena: 
  2210.  
  2211.        1. Execute the MarkPresentPages routine (below). 
  2212.  
  2213.  6. For each arena record in the shared arena: 
  2214.  
  2215.     a. If there is an hco in the arena record: 
  2216.  
  2217.        1. Determine the process indicated as the originator by looking at the 
  2218.           context records. 
  2219.  
  2220.        2. Execute the MarkPresentPages routine for the originator process. 
  2221.  
  2222.     b. If there is no hco in the arena record: 
  2223.  
  2224.        1. For each process: 
  2225.  
  2226.           a. Execute the MarkPresentPages routine for the non-shared DLL 
  2227.              object. 
  2228.  
  2229.  7. For each arena record in the system arena: 
  2230.  
  2231.     a. Execute the MarkPresentPages routine. 
  2232.  
  2233.  8. For each entry in PF-parallel that has not been assigned or that is marked 
  2234.     idle: 
  2235.  
  2236.     a. Get the hob from private-PF. 
  2237.  
  2238.     b. The object record and the linear address (from the arena record) can be 
  2239.        used to determine which process should be charged with the page. The 
  2240.        method used is similar to what occurred in preceding steps for normal 
  2241.        objects. 
  2242.  
  2243.  9. For each entry in PF-parallel: 
  2244.  
  2245.     a. Add a page to the proper counter being charged. This will either be the 
  2246.        free counter or a process counter. 
  2247.  
  2248. 10. Display the counters, showing both private and shared memory. 
  2249.  
  2250. The MarkPresentPages routine is passed a range of pages and a thing to assign 
  2251. them to. The algorithm is: 
  2252.  
  2253.  1. For each page in the object which is present and not UVirt: 
  2254.  
  2255.     a. If the page has not been assigned to something and this is a shared 
  2256.        page, then assign it to this thing. 
  2257.  
  2258.     b. If the page is a shared page and is already assigned to something and 
  2259.        the linear addresses do not match, there is a conflict. 
  2260.  
  2261.     c. If the page is not a shared page and is already assigned to something or 
  2262.        the linear addresses do not match, there is a conflict. 
  2263.  
  2264.     d. If system pages are being assigned and if the owner code indicates 
  2265.        INFOSEGOWNER, then assign the page to the system. 
  2266.  
  2267.     e. If system pages are being assigned and if the owner code indicates 
  2268.        VDMALIASOWNER or VDHOWNER, do not assign the page. It will be assigned 
  2269.        to the VDM that really owns it when the VDM is processed. 
  2270.  
  2271.     f. If a conflict was detected, print out both the old and new information 
  2272.        about the page. 
  2273.  
  2274.     g. If there was no conflict, modify PF-parallel to indicate what the page 
  2275.        was assigned to and the type of memory (shared, private, or system). 
  2276.  
  2277.  
  2278. ΓòÉΓòÉΓòÉ 9.3.3. Memory Leak Detection ΓòÉΓòÉΓòÉ
  2279.  
  2280. Select one: 
  2281.  
  2282. Selecting 
  2283.  
  2284. Example Output 
  2285.  
  2286. Contents of Display 
  2287.  
  2288. Related Topics 
  2289.  
  2290.  
  2291. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  2292.  
  2293. When you select the Memory Leak Detection option of the System pull-down on the 
  2294. Process Hierarchy window, information about memory accumulation for each 
  2295. process in the system is computed and shown. 
  2296.  
  2297. This can be done either on a periodic basis or under user control. See Related 
  2298. Topics for the references for specifying control. 
  2299.  
  2300.  
  2301. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  2302.  
  2303. Memory leak detection:
  2304. < End of THESEUS2 (v 2.0s) output @ 13:21:01 on 8/5/1993 >
  2305. Use the 'Function' pull-down to start and stop the data collection.
  2306. Leak data captured.
  2307. Periodic update started with interval of 10 seconds.
  2308. Previous sample will be used as the base.
  2309. < End of THESEUS2 (v 2.0s) output @ 13:21:10 on 8/5/1993 >
  2310. ----------Private-----------  -----------Shared-----------
  2311. Allocated  Committed  Actual  Allocated  Committed  Actual   PID   Name
  2312.       +16        +17     +17         +0         +0      +0  0000   System
  2313.        +0         +0      +0        +64         +0      +0  0001   sysinit
  2314.        +0         +0      +0        +64         +0      +0  0002   LOGDAEM
  2315.        +0         +0      +0        +64         +0      +0  0003   SPMNBL
  2316.       +16         +1      +1        +64         +0      +0  0004   PMSHL32
  2317.        +0         +0      +0        +64         +0      +0  0005   HARDERR
  2318.        +0         +0      +0        +64         +0      +0  0006   SPMSNAPL
  2319.        +0         +0      +0        +64         +0      +0  0007   PMSHL32
  2320.        +0         +0      +0        +64         +0      +0  0008   PULSE
  2321.        +0         +0      +0        +64         +0      +0  0009   VDM
  2322.        +0         +0      +0        +64         +0      +0  004F   VIEWDOC
  2323.        +0         +0      +0        +64         +0      +0  0053   CMD
  2324.        +0         +0      +0        +64         +0      +0  0060   THESEUS2
  2325.      +160        +56     +39     +16000      +1540    +774  0061  +CMD
  2326. < End of THESEUS2 (v 2.0s) output @ 13:21:21 on 8/5/1993 >
  2327. ----------Private-----------  -----------Shared-----------
  2328. Allocated  Committed  Actual  Allocated  Committed  Actual   PID   Name
  2329.       -16        -17     -17         +0         +0      +0  0000   System
  2330.        +0         +0      +0        -64         +0      +0  0001   sysinit
  2331.        +0         +0      +0        -64         +0      +0  0002   LOGDAEM
  2332.        +0         +0      +0        -64         +0      +0  0003   SPMNBL
  2333.       -16         -1      -1        -64         +0      +0  0004   PMSHL32
  2334.        +0         +0      +0        -64         +0      +0  0005   HARDERR
  2335.        +0         +0      +0        -64         +0      +0  0006   SPMSNAPL
  2336.        +0         +0      +0        -64         +0      +0  0007   PMSHL32
  2337.        +0         +0      +0        -64         +0      +0  0008   PULSE
  2338.        +0         +0      +0        -64         +0      +0  0009   VDM
  2339.        +0         +0      +0        -64         +0      +0  004F   VIEWDOC
  2340.        +0         +0      +0        -64         +0      +0  0053   CMD
  2341.        +0         +0      +0        -64         +0      +0  0060   THESEUS2
  2342.      -160        -56     -39     -16000      -1540    -774  0061  -CMD
  2343. < End of THESEUS2 (v 2.0s) output @ 13:21:31 on 8/5/1993 >
  2344. Periodic updated stopped.
  2345. < End of THESEUS2 (v 2.0s) output @ 13:21:32 on 8/5/1993 >
  2346.  
  2347.  
  2348. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  2349.  
  2350. One line is displayed for each process whose allocated, committed, or actual 
  2351. (present + swapped) memory values have changed: 
  2352.  
  2353. Column      Meaning 
  2354. Private Allocated The change in the number of pages of allocated (virtual) 
  2355.             memory in the private arena. 
  2356. Private Committed The change in the number of pages of committed memory in the 
  2357.             private arena. 
  2358. Private Actual The change in the number of pages of actual memory in the 
  2359.             private arena. 
  2360. Shared Allocated The change in the number of pages of allocated (virtual) 
  2361.             memory in the shared arena. 
  2362. Shared Committed The change in the number of pages of committed memory in the 
  2363.             shared arena. 
  2364. Shared Actual The change in the number of pages of actual memory in the shared 
  2365.             arena. 
  2366. PID         The PID of the process for this line. 
  2367. Name        The name of the process on this line. If the process is new (not 
  2368.             present in the base data), then a prefix '+' is shown. If the 
  2369.             process has terminated, then a prefix '-' is shown. 
  2370.  
  2371.  
  2372. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2373.  
  2374. o Memory addressing 
  2375.  
  2376. o Memory states 
  2377.  
  2378. o Leak detection control 
  2379.  
  2380. o Manual data capture 
  2381.  
  2382. o Manual data compare 
  2383.  
  2384.  
  2385. ΓòÉΓòÉΓòÉ 9.3.4. Free, Idle, and Locked Memory ΓòÉΓòÉΓòÉ
  2386.  
  2387. Select one: 
  2388.  
  2389. Selecting 
  2390.  
  2391. Example Output 
  2392.  
  2393. Contents of Display 
  2394.  
  2395. Related Topics 
  2396.  
  2397.  
  2398. ΓòÉΓòÉΓòÉ <hidden> Selecting the Free, Idle, and Locked Memory display ΓòÉΓòÉΓòÉ
  2399.  
  2400. When you select the Free, Idle, and Locked Memory option of the System 
  2401. pull-down on the Process Hierarchy window, information about free, idle, and 
  2402. locked memory is displayed. 
  2403.  
  2404. If the list of pages making up a category is desired, double-click mouse button 
  2405. 1 with the pointer over the page count. (This procedure is similar to "display 
  2406. a control block" processing.) 
  2407.  
  2408.  
  2409. ΓòÉΓòÉΓòÉ <hidden> Example of the Free, Idle, and Locked Memory Display ΓòÉΓòÉΓòÉ
  2410.  
  2411. Free, Idle, and Locked Memory:
  2412. Free                RAM = 000BD000 bytes (  756K) ( 0.738M).
  2413. Idle                RAM = 00076000 bytes (  472K) ( 0.461M).
  2414.         (Dirty idle RAM = 00068000 bytes (  416K) ( 0.406M)).
  2415. Long  Term Locked   RAM = 0001C000 bytes (  112K) ( 0.109M).
  2416. Short Term Locked   RAM = 00000000 bytes (    0K) ( 0.000M).
  2417. Short & Long Locked RAM = 00000000 bytes (    0K) ( 0.000M).
  2418.  
  2419.  
  2420. ΓòÉΓòÉΓòÉ <hidden> Contents of the Free, Idle, and Locked Memory Display ΓòÉΓòÉΓòÉ
  2421.  
  2422. The information presented on the Free, Idle, and Locked Memory display is as 
  2423. follows: 
  2424.  
  2425. Free RAM = xxxxxxxx 
  2426.           Amount of free memory. 
  2427. Idle RAM = xxxxxxxx 
  2428.           Amount of idle memory. 
  2429. Dirty idle RAM 
  2430.           Amount of idle memory which is marked dirty. 
  2431. Long  Term Locked RAM = xxxxxxxx 
  2432.           Amount of Long Term Locked memory. 
  2433. Short Term Locked RAM = xxxxxxxx 
  2434.           Amount of Short Term Locked memory. 
  2435. Short & Long Locked RAM = xxxxxxxx 
  2436.           Amount of memory that is both Long Term and Short Term Locked. This 
  2437.           memory is not included in the Short and Long values on the previous 
  2438.           lines. (There are three separate counts of locked memory.) 
  2439.  
  2440.  
  2441. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2442.  
  2443. o Memory addressing 
  2444.  
  2445. o Physical addresses 
  2446.  
  2447.  
  2448. ΓòÉΓòÉΓòÉ 9.3.5. Swapper ΓòÉΓòÉΓòÉ
  2449.  
  2450. Select one: 
  2451.  
  2452. Selecting 
  2453.  
  2454. Example Output 
  2455.  
  2456. Contents of Display 
  2457.  
  2458. Related Topics 
  2459.  
  2460.  
  2461. ΓòÉΓòÉΓòÉ <hidden> Selecting the Swapper Display ΓòÉΓòÉΓòÉ
  2462.  
  2463. When you select the Swapper option of the System pull-down on the Process 
  2464. Hierarchy window, information about the contents of the SWAPPER.DAT file will 
  2465. be displayed. 
  2466.  
  2467.  
  2468. ΓòÉΓòÉΓòÉ <hidden> Example of the Swapper Display ΓòÉΓòÉΓòÉ
  2469.  
  2470. Analysis of the SWAPPER.DAT file:
  2471. There are 1152 disk frames in SWAPPER.DAT (each is 4K bytes).
  2472. There are  715 frames used.  (2860K => 2.793M)
  2473. There are  437 frames free.  (1748K => 1.707M)
  2474. There are 1152 frames total. (4608K => 4.500M)
  2475.  
  2476.  
  2477. ΓòÉΓòÉΓòÉ <hidden> Contents of the Swapper Display ΓòÉΓòÉΓòÉ
  2478.  
  2479. The information presented on the Swapper display is as follows: 
  2480.  
  2481. There are iiii disk frames in SWAPPER.DAT (each is 4K bytes). 
  2482.           The number of 4KB disk frames currently allocated for the SWAPPER.DAT 
  2483.           file. 
  2484. There are iiii frames used. 
  2485.           The number of 4KB disk frames that are currently being used. The 
  2486.           amount is also given in kilobytes and megabytes of space. 
  2487. There are iiii frames free. 
  2488.           The number of 4KB disk frames that are currently free. The amount is 
  2489.           also given in kilobytes and megabytes of space. 
  2490. There are iiii frames total. 
  2491.           The total number of 4KB disk frames that were found. (The sum of the 
  2492.           previous two lines.) The amount is also given in kilobytes and 
  2493.           megabytes of space. 
  2494.  
  2495.  
  2496. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2497.  
  2498. o Memory addressing 
  2499.  
  2500. o SWAPPER.DAT contents (by page) 
  2501.  
  2502.  
  2503. ΓòÉΓòÉΓòÉ 9.3.6. General System ΓòÉΓòÉΓòÉ
  2504.  
  2505. The General System option contains: 
  2506.  
  2507. General System Information 
  2508.           Displays selected general system information. 
  2509. Device Drivers 
  2510.           Displays information about all Device Drivers currently loaded. 
  2511. GDT 
  2512.           Displays the Global Descriptor Table. 
  2513. Modules 
  2514.           Displays information about all modules currently loaded. 
  2515. System Anchor Segment 
  2516.           Displays the System Anchor Segment. 
  2517. Global Info Seg 
  2518.           Displays the Global Information Segment. 
  2519. Open Files 
  2520.           Displays information about the files that are open. 
  2521. Process List 
  2522.           Displays a list of all processes that are running. 
  2523.  
  2524.  
  2525. ΓòÉΓòÉΓòÉ 9.3.6.1. General System Information ΓòÉΓòÉΓòÉ
  2526.  
  2527. Select one: 
  2528.  
  2529. Selecting 
  2530.  
  2531. Example Output 
  2532.  
  2533. Contents of Display 
  2534.  
  2535. Related Topics 
  2536.  
  2537.  
  2538. ΓòÉΓòÉΓòÉ <hidden> Selecting the General System Information Display ΓòÉΓòÉΓòÉ
  2539.  
  2540. When you select the General System Information option of the General System 
  2541. option of the System pull-down on the Process Hierarchy window, information 
  2542. that THESEUS2 discovers during its initialization is displayed. The values 
  2543. returned by DosQuerySysInfo are displayed, also. 
  2544.  
  2545.  
  2546. ΓòÉΓòÉΓòÉ <hidden> Example of the General System Information Display ΓòÉΓòÉΓòÉ
  2547.  
  2548. General System Information:
  2549. OS/2 version = 2.0, revision = 0.
  2550.   This looks like the 2.0 Service Pak.
  2551. BIOS date = 01/30/91.
  2552. RAM available to OS/2 = 00FA0000 bytes (15.625M).
  2553.  
  2554. Following are the values from DosQuerySysInfo:
  2555.  1. QSV_MAX_PATH_LENGTH   = 260.
  2556.  2. QSV_MAX_TEXT_SESSIONS = 16.
  2557.  3. QSV_MAX_PM_SESSIONS   = 16.
  2558.  4. QSV_MAX_VDM_SESSIONS  = 4096.
  2559.  5. QSV_BOOT_DRIVE        = 3.
  2560.  6. QSV_DYN_PRI_VARIATION = 1.
  2561.  7. QSV_MAX_WAIT          = 3.
  2562.  8. QSV_MIN_SLICE         = 32.
  2563.  9. QSV_MAX_SLICE         = 32.
  2564. 10. QSV_PAGE_SIZE         = 4096.
  2565. 11. QSV_VERSION_MAJOR     = 20.
  2566. 12. QSV_VERSION_MINOR     = 0.
  2567. 13. QSV_VERSION_REVISION  = 0.
  2568. 14. QSV_MS_COUNT          = 17602280 (4:53:22).
  2569. 15. QSV_TIME_LOW          = 732892760.
  2570. 16. QSV_TIME_HIGH         = 0.
  2571. 17. QSV_TOTPHYSMEM        = 16384000 (16000K -> 15.625M).
  2572. 18. QSV_TOTRESMEM         = 3780608 (3692K -> 3.605M).
  2573. 19. QSV_TOTAVAILMEM       = 52428800 (51200K -> 50.000M).
  2574. 20. QSV_MAXPRMEM          = 267976704 (261696K -> 255.563M).
  2575. 21. QSV_MAXSHMEM          = 406585344 (397056K -> 387.750M).
  2576. 22. QSV_TIMER_INTERVAL    = 310.
  2577. 23. QSV_MAX_COMP_LENGTH   = 255.
  2578.  
  2579. System Anchor Segment (SAS) selector = 0070.
  2580. Size of PTDA                 = 0824 bytes.
  2581. Size of Arena        record  = 0016 bytes.
  2582. Size of Object       record  = 0010 bytes.
  2583. Size of Context      record  = 0005 bytes.
  2584. Size of Page Frame   record  = 000C bytes.
  2585. Size of Virtual Page record  = 000A bytes.
  2586. har of System Arena Sentinel = 0004.
  2587. har of Shared Arena Sentinel = 0005.
  2588. har of Page Frame table      = 0019.
  2589. har of Virtual Page table    = 001C.
  2590.  
  2591.  
  2592. ΓòÉΓòÉΓòÉ <hidden> Contents of the General System Information display ΓòÉΓòÉΓòÉ
  2593.  
  2594. The following information appears on the General System Information display: 
  2595.  
  2596. The first group of values is "discovered" by THESEUS2 during its 
  2597. initialization: 
  2598.  
  2599. OS/2 version = i.i, revision = i. 
  2600.           The major and minor version numbers, followed by the revision. 
  2601. This looks like... 
  2602.           Based on several parameters, THESEUS2 determines which level of OS/2 
  2603.           2.x you are running. 
  2604. BIOS date = mm/dd/yy. 
  2605.           The date from the ROM BIOS chip at physical memory location 0xFFFF5. 
  2606. RAM available to OS/2 = hhhhhhhh bytes (dd.dddM). 
  2607.           The amount of RAM available to the OS/2 system. This may be less than 
  2608.           the total RAM in your system by 128KB (.125MB), because, on some 
  2609.           systems, 128KB is used to copy the BIOS from ROM into RAM. This is 
  2610.           because ROM is too slow to keep the processor running at full speed. 
  2611.  
  2612.           Note:  This is presented as a cross-check. If the amount is different 
  2613.           than what you expect, then OS/2 may not be using memory on a memory 
  2614.           board installed in your machine. 
  2615.  
  2616. The second group is retrieved from DosQuerySysInfo. The following QSV_ 
  2617. descriptions come from the on-line documentation of the DosQuerySysInfo system 
  2618. call. 
  2619.  
  2620. QSV_MAX_PATH_LENGTH 
  2621.           Maximum length, in bytes, of a path name. 
  2622. QSV_MAX_TEXT_SESSIONS 
  2623.           Maximum number of text sessions. 
  2624. QSV_MAX_PM_SESSIONS 
  2625.           Maximum number of PM sessions. 
  2626. QSV_MAX_VDM_SESSIONS 
  2627.           Maximum number of DOS sessions. 
  2628. QSV_BOOT_DRIVE 
  2629.           Drive from which the system was started (1 means drive A, 2 means 
  2630.           drive B, and so on). 
  2631. QSV_DYN_PRI_VARIATION 
  2632.           Dynamic priority variation flag (0 means absolute priority, 1 means 
  2633.           dynamic priority). 
  2634. QSV_MAX_WAIT 
  2635.           Maximum wait in seconds. 
  2636. QSV_MIN_SLICE 
  2637.           Minimum time slice in milliseconds. 
  2638. QSV_MAX_SLICE 
  2639.           Maximum time slice in milliseconds. 
  2640. QSV_PAGE_SIZE 
  2641.           Memory page size in bytes.  This value is 4096 for the 80386 
  2642.           processor. 
  2643. QSV_VERSION_MAJOR 
  2644.           Major version number. 
  2645. QSV_VERSION_MINOR 
  2646.           Minor version number. 
  2647. QSV_VERSION_REVISION 
  2648.           Revision letter. 
  2649. QSV_MS_COUNT 
  2650.           Value of a 32-bit, free-running millisecond counter. This value is 
  2651.           zero when the system is started. This value does not reflect the 
  2652.           "suspended" time for Thinkpads; it is only that time that the 
  2653.           processor is running. It is also formatted as hours, minutes, and 
  2654.           seconds. 
  2655. QSV_TIME_LOW 
  2656.           Low-order 32 bits of the time in seconds since January 1, 1970 at 
  2657.           0:00:00. 
  2658. QSV_TIME_HIGH 
  2659.           High-order 32 bits of the time in seconds since January 1, 1970 at 
  2660.           0:00:00. 
  2661. QSV_TOTPHYSMEM 
  2662.           Total amount of physical memory in the system. 
  2663. QSV_TOTRESMEM 
  2664.           Total amount of resident memory in the system. 
  2665. QSV_TOTAVAILMEM 
  2666.           Maximum amount of memory that can be allocated by all processes in 
  2667.           the system. This number is advisory and is not guaranteed, since 
  2668.           system conditions change constantly. 
  2669. QSV_MAXPRMEM 
  2670.           Maximum amount of memory that this process can allocate in its 
  2671.           private arena. This number is advisory and is not guaranteed, since 
  2672.           system conditions change constantly. 
  2673. QSV_MAXSHMEM 
  2674.           Maximum amount of memory that this process can allocate in the shared 
  2675.           arena. This number is advisory and is not guaranteed, since system 
  2676.           conditions change constantly. 
  2677. QSV_TIMER_INTERVAL 
  2678.           Timer interval in tenths of a millisecond. 
  2679. QSV_MAX_COMP_LENGTH 
  2680.           Maximum length, in bytes, of one component in a path name. 
  2681.  
  2682. The last group of values is also "discovered" by THESEUS2 during its 
  2683. initialization: 
  2684.  
  2685. System Anchor Segment (SAS) selector = ssss. 
  2686.           The selector that points to the System Anchor Segment is located from 
  2687.           the GDT. 
  2688. Size of PTDA = hhhh bytes. 
  2689.           The PTDA is different sizes on different systems. 
  2690. Size of Arena record = hhhh bytes. 
  2691.           The size of the Arena record, as mapped by a .H file. 
  2692. Size of Object record = hhhh bytes. 
  2693.           The size of the Object record, as mapped by a .H file. 
  2694. Size of Context record = hhhh bytes. 
  2695.           The size of the Context record, as mapped by a .H file. 
  2696. Size of Page Frame record = hhhh bytes. 
  2697.           The size of the Page Frame record, as mapped by a .H file. 
  2698. Size of Virtual Page record = hhhh bytes. 
  2699.           The size of the Virtual Page record, as mapped by a .H file. 
  2700. har of System Arena Sentinel = hhhh. 
  2701.           The System Arena's Sentinel is not pointed to by anything and must be 
  2702.           discovered. 
  2703. har of Shared Arena Sentinel = hhhh. 
  2704.           The Shared Arena's Sentinel is pointed to from the process's 
  2705.           sentinel. 
  2706. har of Page Frame table = hhhh. 
  2707.           The Page Frame table's har is discovered, based on its address. 
  2708. har of Virtual Page table = hhhh. 
  2709.           The Virtual Page Table's har is discovered, based on its owner value. 
  2710.  
  2711.  
  2712. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2713.  
  2714. o Memory addressing 
  2715.  
  2716. o Handles 
  2717.  
  2718.  
  2719. ΓòÉΓòÉΓòÉ 9.3.6.2. Device Drivers ΓòÉΓòÉΓòÉ
  2720.  
  2721. Select one: 
  2722.  
  2723. Selecting 
  2724.  
  2725. Example Output 
  2726.  
  2727. Contents of Display 
  2728.  
  2729. Related Topics 
  2730.  
  2731.  
  2732. ΓòÉΓòÉΓòÉ <hidden> Selecting the Device Drivers display ΓòÉΓòÉΓòÉ
  2733.  
  2734. When you select the Device Drivers option of the General System option of the 
  2735. System pull-down on the Process Hierarchy window, information about all Device 
  2736. Drivers currently loaded is displayed. Device Drivers defined in the CONFIG.SYS 
  2737. file, but which did not load are not shown. 
  2738.  
  2739.  
  2740. ΓòÉΓòÉΓòÉ <hidden> Example of the Device Drivers Display ΓòÉΓòÉΓòÉ
  2741.  
  2742. Device Drivers:
  2743. Header addr Limit  Strategy   Limit  Name/Units Attr ...
  2744.  0070:08EC  06A4C  0F00:06A0  09A0F  NUL        8084 CHR NUL LVL=OS/2
  2745.  0400:0908  06A4C  0F00:06A8  09A0F  CON        8083 CHR SCR KBD LVL=OS/2
  2746.  0778:0000  00040  0798:0000  0022A  THESEU2$   8080 CHR LVL=OS/2
  2747.  0550:0000  01CD7  0558:0E00  02603         5   2080 IBM LVL=OS/2
  2748.  04D0:0000  0010A  04D8:0002  00790  CLOCK$     8188 CHR CLK LVL=3 ??
  2749.  
  2750.  
  2751. ΓòÉΓòÉΓòÉ <hidden> Contents of the Device Drivers Display ΓòÉΓòÉΓòÉ
  2752.  
  2753. One line is displayed for each Device Driver: 
  2754.  
  2755. Column          Meaning 
  2756. Header addr     The virtual address (selector:offset) of the header for the 
  2757.                 Device Driver. 
  2758. Limit           Limit value for the header segment. (This value is 1 less than 
  2759.                 the size of the segment.) 
  2760. Strategy        The virtual address (selector:offset) of the Strategy Routine 
  2761.                 of the Device Driver. 
  2762. Limit           Limit value for the Strategy Routine segment. (This value is 1 
  2763.                 less than the size of the segment.) 
  2764. Name/Units      For character devices, the name of the device. 
  2765.                 For block devices, the number of units supported by the device. 
  2766. Attr            The device attributes in hexadecimal notation. 
  2767. ...             The device attributes decoded and presented in English: 
  2768.  
  2769.    CHR       Bit 15 - The device is a "character" device. Otherwise, it is a 
  2770.              "block" device. 
  2771.    IDC       Bit 14 - The device supports "Inter-device Driver Communication". 
  2772.              If this option is set, the IDC Entry Point must be valid. 
  2773.    IBM       Bit 13 - The device is non-IBM block format. 
  2774.    SHR       Bit 12 - The device supports "shared device access checking." 
  2775.    OPN       Bit 11 - The device supports removable media (block devices) or 
  2776.              device open/close (character devices). 
  2777.    LVL       Bits 9-7 - Function level of support. 
  2778.  
  2779.       PC/DOS    000 - PC/DOS device driver.  (This should never be seen in OS/2 
  2780.                 2.0.) 
  2781.       OS/2      001 - OS/2 device driver, that does not support DosDevIOCTL2 
  2782.                 packets. 
  2783.       IOCTL2    010 - OS/2 device driver, that supports DosDevIOCTL2 and 
  2784.                 SHUTDOWN request packets. 
  2785.       BitStrip  011 - OS/2 device driver, with a Capabilities Bit Strip in the 
  2786.                 header. 
  2787.       ??        Level was not one of the above. The level value is printed. 
  2788.    CLK       Bit 3 - The device is the CLOCK device. 
  2789.    NUL       Bit 2 - The device is the NULL device. 
  2790.    SCR       Bit 1 - The device is the SCREEN (STDOUT). 
  2791.    KBD       Bit 0 - The device is the KEYBOARD (STDIN). 
  2792.  
  2793.  
  2794. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2795.  
  2796. o Memory addressing 
  2797.  
  2798. o Virtual addresses 
  2799.  
  2800.  
  2801. ΓòÉΓòÉΓòÉ 9.3.6.3. GDT ΓòÉΓòÉΓòÉ
  2802.  
  2803. Select one: 
  2804.  
  2805. Selecting 
  2806.  
  2807. Example Output 
  2808.  
  2809. Contents of Display 
  2810.  
  2811. Descriptor Table Entry Description 
  2812.  
  2813. Related Topics 
  2814.  
  2815.  
  2816. ΓòÉΓòÉΓòÉ <hidden> Selecting the GDT Display ΓòÉΓòÉΓòÉ
  2817.  
  2818. When you select the GDT option of the General System option of the System 
  2819. pull-down on the Process Hierarchy window, the contents of the GDT is 
  2820. displayed. 
  2821.  
  2822. The display generation takes about 3 seconds on an 8MB 20Mhz P70. 
  2823.  
  2824.  
  2825. ΓòÉΓòÉΓòÉ <hidden> Example of the GDT Display ΓòÉΓòÉΓòÉ
  2826.  
  2827. Global Descriptor Table:
  2828. GDT(0010) BTSS32  Base=FFE42DC8 Limit=00067 DPL=0               P=1 G=0
  2829. GDT(0018) Data    Base=FFE42966 Limit=003FF DPL=0 ED=0  W=1 A=1 P=1 G=0 B=0 Alias
  2830. GDT(0020) Data    Base=FFEDA000 Limit=003FF DPL=0 ED=0  W=1 A=1 P=1 G=0 B=0 Alias
  2831. GDT(0028) LDT     Base=7C6D5000 Limit=0FFFF DPL=0               P=1
  2832. ┬╖┬╖┬╖
  2833. GDT(0038) Data    Base=7CAD5DAC Limit=000F3 DPL=3 ED=0  W=1 A=0 P=1 G=0 B=0
  2834. ┬╖┬╖┬╖
  2835. GDT(0058) Code    Base=00000000 Limit=1BFFF DPL=2 CF=1  R=1 A=1 P=1 G=1 D=1 Alias
  2836. ┬╖┬╖┬╖
  2837. GDT(05B8) CallG   Selector=DFEE Offset=0292 DPL=3 WordCount=03  P=1
  2838. ┬╖┬╖┬╖
  2839. GDT(07A8) CallG32 Selector=07C0 Offset=01A0 DPL=3 WordCount=00  P=1
  2840. ┬╖┬╖┬╖
  2841.  
  2842.  
  2843. ΓòÉΓòÉΓòÉ <hidden> Contents of the GDT Display ΓòÉΓòÉΓòÉ
  2844.  
  2845. One line is displayed for each valid entry in the GDT. 
  2846.  
  2847. Please see the Descriptor Table Entry for the format of an entry. 
  2848.  
  2849.  
  2850. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2851.  
  2852. o Memory addressing 
  2853.  
  2854. o Virtual addresses 
  2855.  
  2856.  
  2857. ΓòÉΓòÉΓòÉ 9.3.6.4. Modules ΓòÉΓòÉΓòÉ
  2858.  
  2859. Select one: 
  2860.  
  2861. Selecting 
  2862.  
  2863. Example Output 
  2864.  
  2865. Contents of Display 
  2866.  
  2867. Related Topics 
  2868.  
  2869.  
  2870. ΓòÉΓòÉΓòÉ <hidden> Selecting the Modules Display ΓòÉΓòÉΓòÉ
  2871.  
  2872. When you select the Modules option of the General System option of the System 
  2873. pull-down on the Process Hierarchy window, information about all modules 
  2874. currently loaded is displayed. 
  2875.  
  2876.  
  2877. ΓòÉΓòÉΓòÉ <hidden> Example of the Modules Display ΓòÉΓòÉΓòÉ
  2878.  
  2879. Modules currently loaded:
  2880.   MTE @    hob    Name    type  Full Path
  2881. FEB63770  0252  THESEUS2   LX   D:\THESEUS2\THESEUS2.EXE
  2882. FEB43AC0  026E  VIEWDOC    LX   C:\OS2\VIEWDOC.EXE
  2883. FEB3BB34  0220  CMD        LX   C:\OS2\CMD.EXE
  2884. FEB60584  01F8  PMEXEC     LX   C:\OS2\PMEXEC.EXE
  2885. FEB5ABB0  014B  HARDERR    NE   C:\OS2\SYSTEM\HARDERR.EXE
  2886. ┬╖┬╖┬╖
  2887.  
  2888.  
  2889. ΓòÉΓòÉΓòÉ <hidden> Contents of the Modules Display ΓòÉΓòÉΓòÉ
  2890.  
  2891. One line is displayed for each module currently loaded: 
  2892.  
  2893. Column          Meaning 
  2894. MTE @           Linear address of the Module Table Entry (MTE) of the module. 
  2895. hob             The hob of the MTE. 
  2896. Name            The name of the module. 
  2897. type            Specifies the type of module: 
  2898.  
  2899.    NE  The module was generated by the linker on the OS/2 1.x system. The 
  2900.        module is all 16-bit. 
  2901.    LX  The module was generated by the linker on the OS/2 2.x system. The 
  2902.        module may be any combination of 16 & 32-bit. 
  2903. Full Path       The fully qualified path name of the file. 
  2904.  
  2905.  
  2906. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  2907.  
  2908. o Memory addressing 
  2909.  
  2910. o Handles 
  2911.  
  2912.  
  2913. ΓòÉΓòÉΓòÉ 9.3.6.5. System Anchor Segment ΓòÉΓòÉΓòÉ
  2914.  
  2915. Select one: 
  2916.  
  2917. Selecting 
  2918.  
  2919. Example Output 
  2920.  
  2921. Contents of Display 
  2922.  
  2923. Related Topics 
  2924.  
  2925.  
  2926. ΓòÉΓòÉΓòÉ <hidden> Selecting the System Anchor Segment Display ΓòÉΓòÉΓòÉ
  2927.  
  2928. When you select the System Anchor Segment option of the General System option 
  2929. of the System pull-down on the Process Hierarchy window, the contents of the 
  2930. System Anchor Segment are displayed. 
  2931.  
  2932. Many of the tables and control block chains used by the OS/2 system have their 
  2933. anchors in the System Anchor Segment. 
  2934.  
  2935.  
  2936. ΓòÉΓòÉΓòÉ <hidden> Example of the System Anchor Segment Display ΓòÉΓòÉΓòÉ
  2937.  
  2938. System Anchor Segment (SAS), selector = 0070
  2939. tables_area @ 0016
  2940.                   GDT      = 0008 (selector) - ERROR
  2941.                   LDT      = 0000 (selector) - ERROR
  2942.                   IDT      = 0018 (selector)
  2943.                   GDT pool = 0100 (starting selector)
  2944. flat_sel    = 0158 (selector) (this is for the Kernel Data)
  2945. config_area @ 001E
  2946.                   Config table @ 09D6 (offset into SAS) (?)
  2947. dd_area     @ 0020
  2948.                   bimodal chain          @ 094F (offset into SAS)
  2949.                   real    chain          @ 0000 (offset into SAS)
  2950.                   Drive Parameter Block  = 04E8 (selector) (?)
  2951.                   ABIOS Common Data Area = 0430 (selector) (?)
  2952.                   ABIOS Common Data Area = 6A00 (segment) (?)
  2953.                   FSC Common Data Area   = 00C8 (selector) (?)
  2954. vm_area     @ 002C
  2955.                   arena records      @ FEF29020 (flat)
  2956.                   object records     @ FF08A020 (flat)
  2957.                   context records    @ FFEC8020 (flat)
  2958.                   kernel MTE records @ FFF2F46C (flat)
  2959.                   linked MTE list    @ FFF2E9A8 (flat)
  2960.                   page frame table   @ FFE20000 (flat)
  2961.                   page range table   @ FFE1F000 (flat)
  2962.                   swap frame table   @ 7C7C3144 (flat), length = 512
  2963.                   idle head          @ FFE2078C (flat) (within 'page frame table')
  2964.                   free head          @ FFE20780 (flat) (within 'page frame table')
  2965.                   heap array         @ 00000000 (flat) (?)
  2966. task_area   @ 0058
  2967.                   PTDA           = 0030 (selector)
  2968.                   Process tree   @ FFE518DC (flat)
  2969.                   Thread array   @ FFE318B9 (flat) (array of TCB linears)
  2970.                   Current Thread @ FFE2B802 -> 002E
  2971.                   Thread Count   @ FFE2B806 -> 0031
  2972. ras_area    @ 006A
  2973.                   System Trace Data area = 0000 (selector) (?)
  2974.                   System Trace Data area = 0000 (segment) (?)
  2975.                   Trace enable table     @ 07CC (offset into SAS) (?)
  2976. file_area   @ 0070
  2977.                   Master File Table           = FEB30FC0 (flat) (?)
  2978.                   System File Table           = 00C0 (selector)
  2979.                   Volume Parameter Block      = 03E8 (selector) (?)
  2980.                   Current Directory Structure = 0608 (selector)
  2981.                   Buffer Segment              = 00A8 (selector) (?)
  2982. info_area   @ 007C
  2983.                   Global Info Segment       = 0428 (selector)
  2984.                   Local Info Segment        = 03B8 (selector)
  2985.                   3xBox Info Segment        = FFFFFFFF (?)
  2986.                   Codepage Data Info Block  = 061B (selector)
  2987.  
  2988.  
  2989. ΓòÉΓòÉΓòÉ <hidden> Contents of the System Anchor Segment Display ΓòÉΓòÉΓòÉ
  2990.  
  2991. There are some fields within the System Anchor Segment (SAS) which I have been 
  2992. unable to verify. They are all marked with a (?) on the display and are also 
  2993. explicitly indicated in the descriptions below. 
  2994.  
  2995. The fields of the System Anchor Segment are displayed as follows: 
  2996.  
  2997. System Anchor Segment (SAS), selector = ssss 
  2998.           The GDT selector that points to the SAS. 
  2999.  
  3000. tables_area @ oooo 
  3001.           The offset within the SAS that contain selectors to certain system 
  3002.           tables. 
  3003. GDT = ssss (selector) - ERROR 
  3004.           The selector of the Global Descriptor Table (GDT). The value 
  3005.           displayed is incorrect. 
  3006. LDT = ssss (selector) - ERROR 
  3007.           The selector of the Local Descriptor Table (LDT). The value displayed 
  3008.           is incorrect. 
  3009. IDT = ssss (selector) 
  3010.           The selector of the Interrupt Descriptor Table (IDT). 
  3011. GDT pool = ssss (starting selector) 
  3012.           Starting selector of a pool of GDT selectors used by the OS/2 kernel. 
  3013.  
  3014. flat_sel = ssss (selector) (this is for the Kernel Data) 
  3015.           Selector used by the kernel as the flat addressing selector for its 
  3016.           data. 
  3017.  
  3018. config_area @ oooo 
  3019.           The offset within the SAS that contains the configuration pointers. 
  3020. Config table @ oooo (offset into SAS) (?) 
  3021.           The Configuration table itself is at this offset within the SAS. 
  3022.           (This is unverified.) 
  3023.  
  3024. dd_area @ oooo 
  3025.           The offset within the SAS that contains the information about Device 
  3026.           Drivers. 
  3027. bimodal chain @ oooo (offset into SAS) 
  3028.           The offset within the SAS that contains the start of the chain of 
  3029.           "bimodal" device drivers. (This is the device header for the NUL 
  3030.           device.) 
  3031. real chain @ oooo (offset into SAS) 
  3032.           The offset within the SAS that contains the start of the chain of 
  3033.           "real mode" device drivers. (This appears to be a hold over from 
  3034.           1.x.) 
  3035. Drive Parameter Block = ssss (selector) (?) 
  3036.           The segment with the Driver Parameter Block information. (This is 
  3037.           unverified.) 
  3038. ABIOS Common Data Area = ssss (selector) (?) 
  3039.           The segment with the ABIOS Common Data Area. This selector is valid 
  3040.           for Protect mode. (This is unverified.) 
  3041. ABIOS Common Data Area = ssss (segment) (?) 
  3042.           The segment with the ABIOS Common Data Area. This segment is valid 
  3043.           for Real mode. (This is unverified.) 
  3044. FSC Common Data Area = ssss (selector) (?) 
  3045.           The segment with the File System Control (FSC) Common Data Area. 
  3046.           (This is unverified.) 
  3047.  
  3048. vm_area @ oooo 
  3049.           The offset within the SAS that contains the information about Memory 
  3050.           Management. 
  3051. arena records @ llllllll (flat) 
  3052.           The linear address of the Arena Table. 
  3053. object records @ llllllll (flat) 
  3054.           The linear address of the Object Table. 
  3055. context records @ llllllll (flat) 
  3056.           The linear address of the Context Table. 
  3057. kernel MTE records @ llllllll (flat) 
  3058.           The linear address of the last MTE which is a DLL. This points to 
  3059.           DOSCALLS.DLL. 
  3060. linked MTE list @ llllllll (flat) 
  3061.           The linear address of the linear address of the first MTE which is a 
  3062.           DLL. 
  3063. page frame table @ llllllll (flat) 
  3064.           The linear address of the Page Frame Table. 
  3065. page range table @ llllllll (flat) 
  3066.           The linear address of the Page Range Table. 
  3067. swap frame table @ llllllll (flat), length = iii 
  3068.           The linear address of the table of bits that indicate the 
  3069.           free/allocated state of the SWAPPER.DAT page frames. The length is 
  3070.           given as the number of bits in the table. 
  3071. idle head @ llllllll (flat) (within 'page frame table') 
  3072.           The head of the "idle chain" of pages. This head is within the Page 
  3073.           Frame Table and points to an entry that has no physical memory 
  3074.           associated with it. 
  3075. free head @ llllllll (flat) (within 'page frame table') 
  3076.           The head of the "free chain" of pages. This head is within the Page 
  3077.           Frame Table and points to an entry that has no physical memory 
  3078.           associated with it. 
  3079. heap array @ llllllll (flat) (?) 
  3080.           This value is always zero. 
  3081.  
  3082. task_area @ oooo 
  3083.           The offset within the SAS that contains the information about 
  3084.           processes and threads. 
  3085. PTDA = ssss (selector) 
  3086.           The selector points to the active process's PTDA. This segment is 
  3087.           "sparse" and contains the PTDA, TCB and TSD. 
  3088. Process tree @ llllllll (flat) 
  3089.           The linear address of the top process (sysinit) in the process tree. 
  3090. Thread array @ llllllll (flat) (array of TCB linears) 
  3091.           The linear address of the Thread Table. There is one entry for each 
  3092.           thread defined in the system. The index into this table is the thread 
  3093.           number. 
  3094. Current Thread @ llllllll -> hhhh 
  3095.           The linear address of the word containing the current thread number. 
  3096.           This is followed by the actual value. This will always be a thread in 
  3097.           THESEUS2. 
  3098. Thread Count @ llllllll -> hhhh 
  3099.           The linear address of the word containing the actual number of 
  3100.           threads in the system. This is not the maximum number of threads. 
  3101.  
  3102. ras_area @ oooo 
  3103.           The offset within the SAS that contains the information about trace. 
  3104. System Trace Data area = ssss (selector) 
  3105.           The selector of the System Trace buffer. (This is unverified.) 
  3106. System Trace Data area = ssss (segment) (?) 
  3107.           The selector of the System Trace buffer. (This is unverified.) 
  3108. Trace enable table @ oooo (offset into SAS) (?) 
  3109.           ??? (This is unverified.) 
  3110.  
  3111. file_area @ oooo 
  3112.           The offset within the SAS that contains the information about File 
  3113.           System. 
  3114. Master File Table = llllllll (flat) (?) 
  3115.           Linear address of the Master File Table. (This is unverified.) 
  3116. System File Table = ssss (selector) 
  3117.           This is the selector of the segment containing the System File Table 
  3118.           selectors 
  3119. Volume Parameter Block = ssss (selector) (?) 
  3120.           ??? (This is unverified.) 
  3121. Current Directory Structure = ssss (selector) 
  3122.           This is the selector of the segment containing the current directory. 
  3123. Buffer Segment = ssss (selector) (?) 
  3124.  
  3125. info_area @ oooo 
  3126.           The offset within the SAS that contains the information about Info 
  3127.           Segments. 
  3128. Global Info Segment = ssss (selector) 
  3129.           The selector of the Global Information Segment. This selector is for 
  3130.           "ring 0" and is not usable by an application program. 
  3131. Local Info Segment = ssss (selector) 
  3132.           The selector of the Local Information Segment. This selector is for 
  3133.           "ring 0" and is not usable by an application program. 
  3134. 3xBox Info Segment = hhhhhhhh (?) 
  3135.           ??? (This is unverified.) 
  3136. Codepage Data Info Block = ssss (selector) 
  3137.           This selector points to the code page table currently loaded. 
  3138.  
  3139.  
  3140. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3141.  
  3142. o Memory addressing 
  3143.  
  3144. o Virtual addresses 
  3145.  
  3146. o Linear addresses 
  3147.  
  3148.  
  3149. ΓòÉΓòÉΓòÉ 9.3.6.6. Global Info Seg ΓòÉΓòÉΓòÉ
  3150.  
  3151. Select one: 
  3152.  
  3153. Selecting 
  3154.  
  3155. Example Output 
  3156.  
  3157. Contents of Display 
  3158.  
  3159. Related Topics 
  3160.  
  3161.  
  3162. ΓòÉΓòÉΓòÉ <hidden> Selecting the Global Info Seg Display ΓòÉΓòÉΓòÉ
  3163.  
  3164. When you select the Global Info Seg option of the General System option of the 
  3165. System pull-down on the Process Hierarchy window, the contents of the Global 
  3166. Information Segment is displayed. 
  3167.  
  3168.  
  3169. ΓòÉΓòÉΓòÉ <hidden> Example of the Global Info Seg Display ΓòÉΓòÉΓòÉ
  3170.  
  3171. Global Info Seg:
  3172. Time since 1/1/1970  = 289D662A (hex secs)
  3173. Time since ipl       = 0151A406 (hex msecs)
  3174. Current time         = 14:52:26.53
  3175. Time zone            = undefined
  3176. Timer interval       = 31.0 (msec)
  3177. Date                 = 8/5/1991
  3178. Day of week          = 1 (Monday)
  3179. OS/2 version         = 20.0, revision = ' '
  3180. Current screen group = 1
  3181. Maximum number of screen groups = 16
  3182. HugeShift            = 3
  3183. ProtectOnly          = 0 (No)
  3184. Current PID          = 0005
  3185. Dynamic Scheduling   = 1 (Dynamic)
  3186. MaxWait              = 3 (sec)
  3187. Min time slice       = 32, Max time slice = 32 (msec)
  3188. Boot drive           = 3 (C:)
  3189. Trace control flags:
  3190.    0-15: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  3191.   16-31: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  3192. Max VIO windowable sessions = 16
  3193. Max PM  windowable sessions = 16
  3194. Error logging status = 0
  3195. MMPH selector        = 0000, linear = 00000000
  3196.  
  3197.  
  3198. ΓòÉΓòÉΓòÉ <hidden> Contents of the Global Info Seg Display ΓòÉΓòÉΓòÉ
  3199.  
  3200. The following information is taken from the Control Program Programming 
  3201. Reference, version 1.2. 
  3202.  
  3203. The information presented on the Global Info Seg display is as follows: 
  3204.  
  3205. Time since 1/1/1970 = hhhhhhhh (hex secs) 
  3206.           Time in seconds since January 1, 1970. 
  3207. Time since ipl = hhhhhhhh (hex msecs) 
  3208.           Time in milliseconds. 
  3209. Current time = hh:mm:ss.hh 
  3210.           Current time as hours:minutes:seconds.hundredths. 
  3211. Time zone = undefined 
  3212.           Minutes from UTC; if the value is hex FFFF, the time zone is 
  3213.           undefined. 
  3214. Timer interval = dd.d (msec) 
  3215.           Timer interval in milliseconds. 
  3216. Date = m/d/yyyy 
  3217.           Date as month/day/year. 
  3218. Day of week = i (aaaaaa) 
  3219.           Day of the week. The number is given, followed by the day in ASCII. 
  3220. OS/2 version = vv.v, revision = 'c' 
  3221.           OS/2 version, given as major version then minor version. The revision 
  3222.           is a letter. 
  3223. Current screen group = d 
  3224.           Current foreground full-screen session. 
  3225. Maximum number of screen groups = dd 
  3226.           Maximum number of full-screen sessions, in decimal notation. 
  3227. HugeShift = d 
  3228.           Shift count for huge segments. 
  3229. ProtectOnly = d (aa) 
  3230.           Protect-mode-only indicator. The number is given, followed by yes or 
  3231.           no. This is controlled by the PROTECTONLY command in the CONFIG.SYS 
  3232.           file. 
  3233. Current PID = hhhh 
  3234.           Process ID of the current foreground process. 
  3235. Dynamic Scheduling = d (aaaaaaa) 
  3236.           Dynamic variation flag. The number is given, followed by Absolute or 
  3237.           Dynamic. This is controlled by the PRIORITY command in the CONFIG.SYS 
  3238.           file. 
  3239. MaxWait = d (sec) 
  3240.           Maximum wait in seconds. This is controlled by the MAXWAIT command in 
  3241.           the CONFIG.SYS file. 
  3242. Min time slice = dd, Max time slice = dd (msec) 
  3243.           Minimum and maximum time-slice values. These are controlled by the 
  3244.           TIMESLICE command in the CONFIG.SYS file. 
  3245. Boot drive = d (c:) 
  3246.           Drive from which the system was booted. The number is given, followed 
  3247.           by the drive letter and a colon. 
  3248. Trace control flags: 
  3249.           The flags used to control what trace events are being generated. 
  3250. Max VIO windowable sessions = dd 
  3251.           Maximum number of VIO windowable sessions. 
  3252. Max PM  windowable sessions = dd 
  3253.           Maximum number of Presentation Manager sessions. 
  3254. Error logging status = d 
  3255.           Error-logging status value. 
  3256. MMPH selector = ssss, linear = llllllll 
  3257.           The selector and linear address to be used when doing MMPH hooks. 
  3258.           MMPH is the OS/2 2.x name given to the same type hooks designated as 
  3259.           MMIO in the OS/2 1.x system. 
  3260.  
  3261.  
  3262. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3263.  
  3264. o Memory addressing 
  3265.  
  3266. o Virtual addresses 
  3267.  
  3268. o Linear addresses 
  3269.  
  3270.  
  3271. ΓòÉΓòÉΓòÉ 9.3.6.7. Open Files ΓòÉΓòÉΓòÉ
  3272.  
  3273. Select one: 
  3274.  
  3275. Selecting 
  3276.  
  3277. Example Output 
  3278.  
  3279. Contents of Display 
  3280.  
  3281. Related Topics 
  3282.  
  3283.  
  3284. ΓòÉΓòÉΓòÉ <hidden> Selecting the Open Files Display ΓòÉΓòÉΓòÉ
  3285.  
  3286. When you select the Open Files option of the General System option of the 
  3287. System pull-down on the Process Hierarchy window, information about all files 
  3288. that are open is displayed. 
  3289.  
  3290.  
  3291. ΓòÉΓòÉΓòÉ <hidden> Example of the Open Files Display ΓòÉΓòÉΓòÉ
  3292.  
  3293. Open Files:
  3294. System File Table - (table of selectors) selector = 00C0
  3295. System File Table - Selector = 03F8
  3296.             Ref  System
  3297.  Address  Count  Handle   PID   --Chain--  --MFT---  name
  3298. 03F8:0008     1   0000   0002              FEB563C8  D:\EA DATA. SF
  3299. 03F8:0087     1   0001  System             FEB5632C  C:\OS2\DLL\PMSHAPIM.DLL
  3300. 03F8:0106     1   0002  System             FEB562E4  C:\OS2\DLL\PMSDMRI.DLL
  3301. ┬╖┬╖┬╖
  3302. 03F8:31A4     1   0064  System             FEB619A4  C:\THESEUS2\THESEUS2.EXE
  3303. 03F8:3223     1   0065   0017              FEB6172C  \DEV\THESEU2$
  3304. 03F8:32A2     1   0066  System             FEB6160C  C:\THESEUS2\THESEUSR.DLL
  3305.  
  3306. There were 99 open files found.
  3307.  
  3308.  
  3309. ΓòÉΓòÉΓòÉ <hidden> Contents of the Open Files Display ΓòÉΓòÉΓòÉ
  3310.  
  3311. The information presented on the Open Files display is as follows: 
  3312.  
  3313. System File Table - (table of selectors) selector = ssss 
  3314.           This is the selector of the table of selectors which make up the 
  3315.           System File Table (SFT). 
  3316. System File Table - Selector = ssss 
  3317.           This is the selector of the segment of the SFT which follows. 
  3318.  
  3319. One line is displayed for each file that is open: 
  3320.  
  3321. Column            Meaning 
  3322. Address           Virtual address of the SFT entry for this file. 
  3323. Ref Count         Number of processes that reference this file. 
  3324. System Handle     The system wide handle for this file. 
  3325. PID               Process ID of the process that opened this file This has 
  3326.                   `System' if it was opened by the system instead of a process. 
  3327. Chain             The virtual address of an SFT which is opened for the same 
  3328.                   file. 
  3329. MFT               The linear address of the Master File Table (MFT) entry for 
  3330.                   this file. 
  3331. name              The name of the file. 
  3332.  
  3333. This is followed by a line which gives the total number of SFT entries which 
  3334. are used. 
  3335.  
  3336.  
  3337. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3338.  
  3339. o Memory addressing 
  3340.  
  3341. o Virtual addresses 
  3342.  
  3343. o System File Table entries 
  3344.  
  3345.  
  3346. ΓòÉΓòÉΓòÉ 9.3.6.8. Process List ΓòÉΓòÉΓòÉ
  3347.  
  3348. Select one: 
  3349.  
  3350. Selecting 
  3351.  
  3352. Example Output 
  3353.  
  3354. Contents of Display 
  3355.  
  3356. Related Topics 
  3357.  
  3358.  
  3359. ΓòÉΓòÉΓòÉ <hidden> Selecting the Process List Display ΓòÉΓòÉΓòÉ
  3360.  
  3361. When you select the Process List option of the General System option of the 
  3362. System pull-down on the Process Hierarchy window, information about all 
  3363. processes currently running is displayed. Also shown are the total number of 
  3364. threads in the system and the PID of the current selected process. 
  3365.  
  3366.  
  3367. ΓòÉΓòÉΓòÉ <hidden> Example of the Process List Display ΓòÉΓòÉΓòÉ
  3368.  
  3369.        PTDA       PTDA      # of   Parent
  3370.  PID    hob     Linear   Threads      PID   Name
  3371. 0001   006E   FFE537DC         5     0000   sysinit
  3372. 0002   0090   7D3D5020        20     0001   PMSHL32
  3373. 0003   018C   7D3D5844         3     0002   HARDERR
  3374. 0005   0245   7D3D688C        11     0002   PMSHL32
  3375. 0006   02CA   7D3D6068         3     0002   PULSE
  3376. 0007   02F7   7D3D70B0         1     0002   VDM
  3377. 0008   030D   7D3D78D4         1     0002   CMD
  3378. 011C   033D   7D3DA188         1     0002   THESEUS2
  3379. 45 threads were found.
  3380. Current PID qualifier = 0000.
  3381.  
  3382.  
  3383. ΓòÉΓòÉΓòÉ <hidden> Contents of the Process List Display ΓòÉΓòÉΓòÉ
  3384.  
  3385. One line is displayed for each process: 
  3386.  
  3387. Column          Meaning 
  3388. PID             Process ID of the process. 
  3389. PTDA hob        Hob of the PTDA. 
  3390. PTDA Linear     The linear address of the PTDA. 
  3391. # of Threads    The number of threads in the process. 
  3392. Parent PID      PID of the parent process. 
  3393. Name            Name of the process. 
  3394.  
  3395.  
  3396. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3397.  
  3398. o Memory addressing 
  3399.  
  3400.  
  3401. ΓòÉΓòÉΓòÉ 9.3.7. Kernel Information ΓòÉΓòÉΓòÉ
  3402.  
  3403. The Kernel Information option contains: 
  3404.  
  3405. Kernel Memory Usage 
  3406.           First determines and then displays the amount of memory consumed by 
  3407.           the Operating System. 
  3408. System Object Summary 
  3409.           Displays the System Object Summary. 
  3410. System Arena Table 
  3411.           Displays the System Arena Table. 
  3412. System Page Table 
  3413.           Displays the System Page Table. 
  3414. Page Frame Table 
  3415.           Displays the Page Frame Table. 
  3416.  
  3417.  
  3418. ΓòÉΓòÉΓòÉ 9.3.7.1. Kernel Memory Usage ΓòÉΓòÉΓòÉ
  3419.  
  3420. Select one: 
  3421.  
  3422. Selecting 
  3423.  
  3424. Example Output 
  3425.  
  3426. Contents of Display 
  3427.  
  3428. Algorithm 
  3429.  
  3430. Related Topics 
  3431.  
  3432.  
  3433. ΓòÉΓòÉΓòÉ <hidden> Selecting the Kernel Memory Usage Display ΓòÉΓòÉΓòÉ
  3434.  
  3435. When you select the Kernel Memory Usage option of the Kernel Information option 
  3436. of the System pull-down on the Process Hierarchy window, information about 
  3437. kernel memory usage is computed and displayed. The memory is accumulated by 
  3438. system owner code, sorted by system owner code. 
  3439.  
  3440. The display generation takes about 2 seconds on an 8MB 20Mhz P70. 
  3441.  
  3442.  
  3443. ΓòÉΓòÉΓòÉ <hidden> Example of the Kernel Memory Usage Display ΓòÉΓòÉΓòÉ
  3444.  
  3445. Memory Usage for System Memory (memory in the 'System' Arena):
  3446. allocated committed   present  resident  owner
  3447.  00010000  00002000  00002000  00002000  FF31 (Named pipe NP segment)
  3448.  00010000  00001000  00001000  00001000  FF33 (DD strat2 request packets)
  3449.  00001000  00001000  00001000  00001000  FF37 (ROM data)
  3450.  00010000  00001000  00001000  00001000  FF40 (DD strat1 request packets)
  3451.  00020000  00020000  00020000  00020000  FF41 (Allocated via DevHlp AllocPhys)
  3452.  00400000  00002000  00002000  00002000  FF43 (Resident R/W 1Meg mem heap owner)
  3453.  00100000  00002000  00002000  00002000  FF44 (Resident R/W 1Meg mem heap owner)
  3454.  00010000  00001000  00001000  00001000  FF47 (record lock record owner)
  3455.  --------  --------  --------  --------
  3456.  00561000  0002A000  0002A000  0002A000  Subtotal for 'Miscellaneous' group 1
  3457. ┬╖┬╖┬╖
  3458. allocated committed   present  resident  Totals
  3459.  --------  --------  --------  --------
  3460.  8383E000  005B1000  00533000  003BE000  Total (in bytes)
  3461.   2154744      5828      5324      3832  Total (in Kbytes)
  3462.  2104.242     5.691     5.199     3.742  Total (in Mbytes)
  3463.  
  3464.  
  3465. ΓòÉΓòÉΓòÉ <hidden> Contents of the Kernel Memory Usage Display ΓòÉΓòÉΓòÉ
  3466.  
  3467. One line is displayed for each system owner with allocated memory: 
  3468.  
  3469. Column        Meaning 
  3470. allocated     The total amount of linear address space allocated. 
  3471. committed     The amount of committed memory for this owner. 
  3472. present       The actual amount of RAM which is present for the owner. This is 
  3473.               real RAM. 
  3474. resident      The amount of resident memory for this owner. 
  3475. owner         The system owner, presented as a hexadecimal value followed by a 
  3476.               short ASCII name. 
  3477.  
  3478.  
  3479. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3480.  
  3481. o Memory addressing 
  3482.  
  3483. o Memory Management Control Blocks 
  3484.  
  3485. o Detail for System Owner 
  3486.  
  3487.  
  3488. ΓòÉΓòÉΓòÉ <hidden> Kernel Memory Usage Algorithm ΓòÉΓòÉΓòÉ
  3489.  
  3490.  1. For each arena record in the system arena: 
  3491.  
  3492.     a. Determine the amount of linear space allocated by looking at the page 
  3493.        count in the arena record. 
  3494.     b. Check the Page Directory and Page Tables to determine how many pages 
  3495.        within the linear address range represented by this entry are committed 
  3496.        and how many are present. 
  3497.  
  3498.  2. Display the results, sorted by system owner value. 
  3499.  
  3500.  
  3501. ΓòÉΓòÉΓòÉ 9.3.7.2. Object Summary ΓòÉΓòÉΓòÉ
  3502.  
  3503. Select one: 
  3504.  
  3505. Selecting 
  3506.  
  3507. Example Output 
  3508.  
  3509. Contents of Display 
  3510.  
  3511. Related Topics 
  3512.  
  3513.  
  3514. ΓòÉΓòÉΓòÉ <hidden> Selecting the Object Summary Display ΓòÉΓòÉΓòÉ
  3515.  
  3516. The Object Summary display can be selected in several ways: 
  3517.  
  3518. o When you select the System Object Summary option of the Kernel Information 
  3519.   option of the System pull-down on the Process Hierarchy window, a summary of 
  3520.   all the memory objects defined in the system arena is displayed. 
  3521.  
  3522. o When you select the Private Object Summary option of the Process pull-down on 
  3523.   the Process Hierarchy window, a summary of all the memory objects defined in 
  3524.   the private arena for the selected process is displayed. 
  3525.  
  3526. o When you select the Shared Object Summary option of the Process pull-down on 
  3527.   the Process Hierarchy window, a summary of all the memory objects defined in 
  3528.   the shared arena for the selected process is displayed. 
  3529.  
  3530. o When you select the hyperblock link from the bytes allocated column of the 
  3531.   Process Memory Utilization display, a summary of all the memory objects 
  3532.   defining that memory type is displayed. 
  3533.  
  3534.  
  3535. ΓòÉΓòÉΓòÉ <hidden> Example of an Object Summary Display ΓòÉΓòÉΓòÉ
  3536.  
  3537.   Object  Allocated  Committed   Present   Swapped
  3538.  address     memory     memory    memory    memory  Description
  3539. 7BC00000   00400000   00112000  00004000  00000000  'VDM Alias' (decoded owner from object record)
  3540. 7C2D5000   00010000   00003000  00003000  00000000  'SEL LDT' (decoded owner from object record)
  3541. ┬╖┬╖┬╖
  3542. FFF4C000   0000F000   0000F000  0000F000  00000000  'os2krnl load image' (decoded owner from object record)
  3543. FFF5B000   00065000   0005D000  00053000  00000000  'os2krnl load image' (decoded owner from object record)
  3544.            --------   --------  --------  --------
  3545. Totals:    83AC5000   007D8000  005DF000  00000000  (in bytes)
  3546.             2157332       8032      6012         0  (in Kbytes)
  3547.            2106.770      7.844     5.872     0.000  (in Mbytes)
  3548. Number of objects = 207.
  3549.  
  3550.  
  3551. ΓòÉΓòÉΓòÉ <hidden> Contents of an Object Summary Display ΓòÉΓòÉΓòÉ
  3552.  
  3553. One line is displayed for each memory object in the selected arena or area: 
  3554.  
  3555. Column                  Meaning 
  3556. Object address          Linear address of the memory object. 
  3557. Allocated memory        Amount of allocated memory (in bytes). 
  3558. Committed memory        Amount of committed memory (in bytes). 
  3559. Present memory          Amount of RAM in use (in bytes). 
  3560. Swapped memory          Amount of memory (in bytes) that has been written to 
  3561.                         the swap file. 
  3562. Description             Description in English of the object. 
  3563.  
  3564. Totals of all the "amount" columns are given in hexadecimal bytes, decimal 
  3565. kilobytes, and decimal megabytes. The number of objects found is also 
  3566. indicated. 
  3567.  
  3568. Note:  It is possible for a page to be both present and swapped. The following 
  3569. is one way this can occur: 
  3570.  
  3571.  1. A read/write page is written into (becomes "dirty"). 
  3572.  2. The page is not used for a long time and is swapped out to disk. 
  3573.  3. When the page is referenced, it is brought back into RAM. Until the RAM 
  3574.     page is written into, both pages are valid. If the RAM page gets aged, it 
  3575.     will not need to be written to disk, because the copy there is still valid. 
  3576.     Once the RAM page is written into, the swapped page is discarded. 
  3577.  
  3578.  
  3579. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3580.  
  3581. o Memory addressing 
  3582.  
  3583. o Linear addresses 
  3584.  
  3585. o Memory Management Control Blocks 
  3586.  
  3587.  
  3588. ΓòÉΓòÉΓòÉ 9.3.7.3. System Arena Table ΓòÉΓòÉΓòÉ
  3589.  
  3590. Select one: 
  3591.  
  3592. Selecting 
  3593.  
  3594. Example Output 
  3595.  
  3596. Contents of Display 
  3597.  
  3598. Arena Record Description 
  3599.  
  3600. Related Topics 
  3601.  
  3602.  
  3603. ΓòÉΓòÉΓòÉ <hidden> Selecting the System Arena Table display ΓòÉΓòÉΓòÉ
  3604.  
  3605. When you select the System Arena Table option of the Kernel Information option 
  3606. of the System pull-down on the Process Hierarchy window, the contents of the 
  3607. System Arena is displayed. 
  3608.  
  3609. The display generation takes about 2 seconds on an 8MB 20Mhz P70. 
  3610.  
  3611.  
  3612. ΓòÉΓòÉΓòÉ <hidden> Example of the System Arena Table Display ΓòÉΓòÉΓòÉ
  3613.  
  3614. System Arena Table:
  3615.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  3616. 0004 00000000 60000000 003 01E1 0010 0000 0000 Sentinel, max pages=000FFFC0
  3617. 01E1 00000400 7C000000 001 020E 0004 0000 007A 022D 0000 0000 /
  3618. 020E 00000010 7C705000 121 01D5 01E1 0000 0000 0238 0000 0000 / Write Read
  3619. ┬╖┬╖┬╖
  3620. 0006 00000003 FFF36000 009 000F 000E 0000 0000 0007 0000 0100 / Mapped
  3621. 000F 00000009 FFF39000 001 0010 0006 0000 0000 0010 0000 0000 /
  3622. 0010 0000007E FFF42000 001 0004 000F 0000 0000 0011 0000 0000 /
  3623.  
  3624.  
  3625. ΓòÉΓòÉΓòÉ <hidden> Contents of the System Arena Table Display ΓòÉΓòÉΓòÉ
  3626.  
  3627. One line is displayed for each entry in the system arena. 
  3628.  
  3629. Please see the arena record for the format of an entry. 
  3630.  
  3631.  
  3632. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3633.  
  3634. o Handles 
  3635.  
  3636.  
  3637. ΓòÉΓòÉΓòÉ 9.3.7.4. System Page Table ΓòÉΓòÉΓòÉ
  3638.  
  3639. Select one: 
  3640.  
  3641. Selecting 
  3642.  
  3643. Example Output 
  3644.  
  3645. Contents of Display 
  3646.  
  3647. Page Table Entry Description 
  3648.  
  3649. Related Topics 
  3650.  
  3651.  
  3652. ΓòÉΓòÉΓòÉ <hidden> Selecting the System Page Table Display ΓòÉΓòÉΓòÉ
  3653.  
  3654. When you select the System Page Table option of the Kernel Information option 
  3655. of the System pull-down on the Process Hierarchy window, the contents of the 
  3656. System Page Table is displayed. 
  3657.  
  3658. The display generation takes about 8 seconds on an 8MB 20Mhz P70. 
  3659.  
  3660.  
  3661. ΓòÉΓòÉΓòÉ <hidden> Example of the System Page Table Display ΓòÉΓòÉΓòÉ
  3662.  
  3663. System Page Table:
  3664. *Linear=7C000000 Physical=0065D000 D=1 A=1 User  R/W P=1 Resident
  3665.  Linear=7C000000 Physical=0002F000 D=1 A=1 User  R/W P=1
  3666.  Linear=7C001000 Physical=00183000 D=1 A=1 User  R/W P=1
  3667. ┬╖┬╖┬╖
  3668.  Linear=7C0F4000 FrameId=000F4     D=0 A=0 User  R/W P=0 UVirt
  3669.  Linear=7C0F5000 Physical=000F5000 D=0 A=1 User  R/W P=1 UVirt
  3670.  Linear=7C0F6000 FrameId=000F6     D=0 A=0 User  R/W P=0 UVirt
  3671. ┬╖┬╖┬╖
  3672.  Linear=7C852000 Physical=00668000 D=0 A=1 Super R/O P=1 Resident
  3673.  Linear=7C875000 Physical=005D3000 D=1 A=1 User  R/W P=1
  3674.  Linear=7C876000 FrameId=00001     D=0 A=0 User  R/W P=0
  3675. ┬╖┬╖┬╖
  3676.  
  3677.  
  3678. ΓòÉΓòÉΓòÉ <hidden> Contents of the System Page Table Display ΓòÉΓòÉΓòÉ
  3679.  
  3680. One line is displayed for each valid entry in the System Page Table. 
  3681.  
  3682. Please see the Page Table Entry for the format of an entry. 
  3683.  
  3684.  
  3685. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3686.  
  3687. o Memory addressing 
  3688.  
  3689. o Linear addresses 
  3690.  
  3691. o Physical addresses 
  3692.  
  3693.  
  3694. ΓòÉΓòÉΓòÉ 9.3.7.5. Page Frame Table ΓòÉΓòÉΓòÉ
  3695.  
  3696. Select one: 
  3697.  
  3698. Selecting 
  3699.  
  3700. Example Output 
  3701.  
  3702. Contents of Display 
  3703.  
  3704. Related Topics 
  3705.  
  3706.  
  3707. ΓòÉΓòÉΓòÉ <hidden> Selecting the Page Frame Table Display ΓòÉΓòÉΓòÉ
  3708.  
  3709. When you select the Page Frame Table option of the Kernel Information option of 
  3710. the System pull-down on the Process Hierarchy window, the contents of the Page 
  3711. Frame Table is displayed. 
  3712.  
  3713. The display generation takes about 6 seconds on an 8MB 20Mhz P70. 
  3714.  
  3715.  
  3716. ΓòÉΓòÉΓòÉ <hidden> Example of the Page Frame Table Display ΓòÉΓòÉΓòÉ
  3717.  
  3718. Page Frame table:
  3719.  Free head = 000A0000, flink = 005BC, blink = 00409
  3720.  Idle head = 000A1000, flink = 0065F, blink = 0065F
  3721.                         ---lock---
  3722. physical    vp   pteCnt long short flink blink block flags
  3723. 00000000 FF421000 0001  0000 0000              00000 0000
  3724. 00001000 FF42105A 0001  0000 0000              00000 0000
  3725. 00002000 FF421064 0001  0000 0000              00000 0000
  3726. ┬╖┬╖┬╖
  3727. 0009F000 FF40B2BC 0002  0000 0000              00000 0000
  3728.  
  3729. The Page Range Table indicates a break in the physical memory.
  3730.  
  3731. 00100000 FF40B2C6 0001  0000 0000              00000 0000
  3732. ┬╖┬╖┬╖
  3733.  
  3734.  
  3735. ΓòÉΓòÉΓòÉ <hidden> Contents of the Page Frame Table Display ΓòÉΓòÉΓòÉ
  3736.  
  3737. The heads of the free and idle lists are shown. They consist of only a flink 
  3738. and blink fields. 
  3739.  
  3740. Breaks in the contiguous range of pages are noted with the sentence, "The Page 
  3741. Range Table indicates a break in the physical memory." 
  3742.  
  3743. One line is displayed for each entry in the table: 
  3744.  
  3745. Column          Meaning 
  3746. physical        The physical address for the page on this line. 
  3747. vp              The linear address of the Virtual Page Table entry for this 
  3748.                 page. 
  3749. pteCnt          The number of PTEs that refer to this page as being present. 
  3750. lock long       The number of long term locks outstanding for this page. 
  3751. lock short      The number of short term locks outstanding for this page. 
  3752. flink           Forward link.  Used when a page is on the free or idle list. 
  3753. blink           Backward link.  Used when a page is on the free or idle list. 
  3754. block           Pager disk frame or Loader Block number 
  3755. flags           Flags indicating the status of the page. They are shown as hex 
  3756.                 and then decoded into ASCII: 
  3757.  
  3758.    fast        Page is in fast memory. 
  3759.    busy        Page is busy. 
  3760.    free        Page is on the free chain. 
  3761.    reserved?   Reserved bit. 
  3762.  
  3763.  
  3764. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3765.  
  3766. o Memory addressing 
  3767.  
  3768.  
  3769. ΓòÉΓòÉΓòÉ 9.4. Process ΓòÉΓòÉΓòÉ
  3770.  
  3771. The Process pull-down contains displays which are applicable to the selected 
  3772. process. 
  3773.  
  3774. For information on selecting a process, see Selecting a Process. 
  3775.  
  3776. Functions available are: 
  3777.  
  3778. Working Set 
  3779.           Displays the working set of memory for the process. 
  3780. Memory Utilization 
  3781.           Displays details of memory usage for the process. 
  3782. Memory Leak Detection 
  3783.           Displays the number of pages of memory that each object is 
  3784.           accumulating. 
  3785. General Process Information 
  3786.           Displays general information about the process. 
  3787. Per Task Data Area (PTDA) 
  3788.           Displays the PTDA. 
  3789. LDT 
  3790.           Displays the LDT. 
  3791. Page Table 
  3792.           Displays the process unique Page Table. 
  3793. Private Object Summary 
  3794.           Displays a summary of the private arena memory objects. 
  3795. Shared Object Summary 
  3796.           Displays a summary of the shared arena memory objects. 
  3797. Private Arena Table 
  3798.           Displays the process unique arena table. 
  3799. Shared Arena Table 
  3800.           Displays the shared arena, in the process' context. 
  3801.  
  3802.  
  3803. ΓòÉΓòÉΓòÉ 9.4.1. Working Set ΓòÉΓòÉΓòÉ
  3804.  
  3805. Select one: 
  3806.  
  3807. Selecting 
  3808.  
  3809. Example Output 
  3810.  
  3811. Contents of Display 
  3812.  
  3813. Algorithm 
  3814.  
  3815. Illustration 
  3816.  
  3817. Related Topics 
  3818.  
  3819.  
  3820. ΓòÉΓòÉΓòÉ <hidden> Selecting the Working Set Display ΓòÉΓòÉΓòÉ
  3821.  
  3822. When you select the Working Set option of the Process pull-down on the Process 
  3823. Hierarchy window, memory working set of the selected process is computed and 
  3824. displayed. 
  3825.  
  3826. There are optional values which can be shown in realtime. 
  3827.  
  3828.  
  3829. ΓòÉΓòÉΓòÉ <hidden> Example of the Working Set Display ΓòÉΓòÉΓòÉ
  3830.  
  3831. Working Set for the Process with PID = 0100, name = 'THESEUS2':
  3832. Use the 'Functions' pull-down to start and stop the data collection.
  3833. Collection started: interval = 5, Working Set is 3 intervals.
  3834. current time ------ Process -------   ------ System DLL -----
  3835. hh:mm:ss.tt     now      ws   acc'd       now      ws   acc'd
  3836. 16:54:53.16   0.180M  0.180M  0.180M    0.406M  0.406M  0.406M
  3837. 16:54:58.00   0.184M  0.195M  0.195M    0.379M  0.438M  0.438M
  3838. 16:55:03.03   0.184M  0.195M  0.195M    0.379M  0.438M  0.438M
  3839. 16:55:08.00   0.180M  0.188M  0.195M    0.414M  0.414M  0.438M
  3840. 16:55:13.00   0.188M  0.195M  0.199M    0.449M  0.449M  0.473M
  3841. 16:55:18.03   0.184M  0.195M  0.199M    0.379M  0.449M  0.473M
  3842. 16:55:23.00   0.176M  0.195M  0.199M    0.379M  0.449M  0.473M
  3843. 16:55:28.00   0.176M  0.184M  0.199M    0.379M  0.379M  0.473M
  3844. 16:55:33.03   0.176M  0.176M  0.199M    0.379M  0.379M  0.473M
  3845. 16:55:38.00   0.176M  0.176M  0.199M    0.375M  0.379M  0.473M
  3846.  
  3847. 10 samples collected.
  3848.                                  Process      DLL    Total
  3849. Absolute minimum amount of memory: 0.188M   0.449M   0.637M
  3850. Recommended amount of memory:      0.195M   0.449M   0.645M
  3851. Total amount of accessed memory:   0.199M   0.473M   0.672M
  3852.  
  3853.  
  3854. ΓòÉΓòÉΓòÉ <hidden> Contents of the Working Set Display ΓòÉΓòÉΓòÉ
  3855.  
  3856. Three values are computed for each of two areas during each data collection 
  3857. cycle. The data can be presented in real-time. 
  3858.  
  3859. The values are: 
  3860.  
  3861. now         The number of pages referenced in the current interval. 
  3862.  
  3863. ws          The working set. This is the number of pages referenced in the past 
  3864.             n intervals. 
  3865.  
  3866. acc'd       The total number of pages accessed since the start of the 
  3867.             collection run. 
  3868.  
  3869. The areas are: 
  3870.  
  3871. Process        The pages that are: in the private arena, DLL instance data 
  3872.                pages, non-system DLLs, and system pages used by this process. 
  3873.  
  3874. System DLL     The pages that are in system DLLs. 
  3875.  
  3876. The totals are computed on each data collection cycle, but not displayed due to 
  3877. lack of space in the window. 
  3878.  
  3879. When the Stop option is selected, the following is presented: 
  3880.  
  3881. ii samples collected. 
  3882.           The number of samples collected is reported (in decimal). 
  3883.  
  3884. The following are reported for Private, System DLL, and Total: 
  3885.  
  3886. Absolute minimum number of pages 
  3887.           The maximum value from the now column. This is the number of pages 
  3888.           absolutely required to run the application without "thrashing" 
  3889.           memory. 
  3890. Recommended amount of memory 
  3891.           The maximum value from the ws column. This is the recommended amount 
  3892.           of memory for the application to run with minimum impact on paging. 
  3893. Total amount of accessed memory 
  3894.           The maximum value from the accessed column. This is the number of 
  3895.           pages required to run the application with no paging activity. 
  3896.  
  3897.  
  3898. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  3899.  
  3900. o Memory addressing 
  3901.  
  3902. o Memory Management Control Blocks 
  3903.  
  3904. o Memory Analysis Techniques 
  3905.  
  3906. o Detail of Working Set (by Page) 
  3907.  
  3908. o Detail of Working Set (by Object) 
  3909.  
  3910.  
  3911. ΓòÉΓòÉΓòÉ <hidden> Memory Working Set Algorithm ΓòÉΓòÉΓòÉ
  3912.  
  3913. To compute the working set for a particular OS/2 process, you need to know: 
  3914.  
  3915. o Which pages have been referenced 
  3916. o Whether or not a particular page "belongs" to the specified process 
  3917. o When the pages were touched. 
  3918.  
  3919. The algorithm is: 
  3920.  
  3921.  1. The accessed flags are cleared from the Page Tables of the selected 
  3922.     process. 
  3923.  
  3924.  2. A timer is started, and on each timer tick: 
  3925.  
  3926.     a. The pages which have been accessed are noted. 
  3927.     b. The accessed flags are cleared. 
  3928.     c. For each newly accessed page, determine its owning memory object. 
  3929.     d. Classify the object (and, therefore, the page) by type: 
  3930.  
  3931.       o Private 
  3932.       o System DLL 
  3933.       o System. 
  3934.  
  3935.     e. The number of pages which have been accessed anytime within the 
  3936.        specified number of intervals is counted. 
  3937.     f. Generate summary information for this interval. 
  3938.     g. Display the interval information, if requested. 
  3939.  
  3940.  3. When the Stop option is selected: 
  3941.  
  3942.     a. A final data collection cycle is performed. 
  3943.     b. Summary numbers for the entire run are generated. They are: 
  3944.  
  3945.       Absolute minimum number of pages 
  3946.                 The maximum of all the now entries. 
  3947.       Recommended number of pages 
  3948.                 The maximum of all the ws entries. 
  3949.       Total number of accessed pages 
  3950.                 The maximum of all the accessed entries. 
  3951.  
  3952.     c. The results are displayed. 
  3953.  
  3954. Note:  Even though the "infosegs" are in the shared arena, they are counted as 
  3955. system pages. They are, in fact, shared pages. 
  3956.  
  3957.  
  3958. ΓòÉΓòÉΓòÉ 9.4.2. Memory Utilization ΓòÉΓòÉΓòÉ
  3959.  
  3960. Select one: 
  3961.  
  3962. Selecting 
  3963.  
  3964. Example Output 
  3965.  
  3966. Contents of Display 
  3967.  
  3968. Algorithm 
  3969.  
  3970. Related Topics 
  3971.  
  3972.  
  3973. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Utilization Display ΓòÉΓòÉΓòÉ
  3974.  
  3975. When you select the Memory Utilization option of the Process pull-down on the 
  3976. Process Hierarchy window, information about the memory used by the selected 
  3977. process is computed and displayed. 
  3978.  
  3979. The display generation takes about 3 seconds on an 8MB 20Mhz P70. 
  3980.  
  3981.  
  3982. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Utilization Display ΓòÉΓòÉΓòÉ
  3983.  
  3984. Memory Utilization for Process with PID = 005C, name = 'THESEUS2':
  3985.     bytes      bytes    number  bytes      bytes
  3986. allocated  committed   present   each    present  description
  3987.  0000071C   0000071C         1   071C   0000071C  PTDA
  3988.  000001AC   000001AC         1   01AC   000001AC  TCB
  3989.  00001000   00001000         1   1000   00001000  TSD
  3990.  00010000   00003000         3   1000   00003000  LDT
  3991.  00000200   00000200         1   0200   00000200  Process Page Directory
  3992.  00080000   0000B000        11   1000   0000B000  Page Tables
  3993.  01110000   00471000       547   1000   00223000  Accessible Shared memory
  3994.  001A0000   00031000        14   1000   0000E000  Originated Shared memory
  3995.  00B40000   00072000        83   1000   00053000  Private memory
  3996.  --------   --------                    --------
  3997.  00091AC8   0000FAC8                    0000FAC8  Total System
  3998.  001A0000   00031000                    0000E000  Total Shared originated
  3999.  00B40000   00072000                    00053000  Total Private
  4000.  --------   --------                    --------
  4001.  00D71AC8   000B2AC8                    00070AC8  Total RAM for the Process
  4002.     13767        715                         451  (in Kbytes)
  4003.    13.445      0.698                       0.441  (in Mbytes)
  4004.  
  4005. The following values are taken directly from the PTDA:
  4006. Allocated PTEs: private = 00072, shared = 00471, total = 004E3.
  4007. Present   PTEs: private = 00054, shared = 00223, total = 00277.
  4008. Resident  PTEs: private = 00000, shared = 00000, total = 00000.
  4009.  
  4010.  
  4011. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Utilization Display ΓòÉΓòÉΓòÉ
  4012.  
  4013. One line is displayed for each type of memory associated with a process: 
  4014.  
  4015. Column              Meaning 
  4016. bytes allocated     The amount of linear address space allocated for the memory 
  4017.                     type on this line. 
  4018. bytes committed     The amount of committed memory for the memory type on this 
  4019.                     line 
  4020. number present      The number of instances of the memory type on this line 
  4021.                     present in RAM for this process. (This column is in decimal 
  4022.                     notation; all others are hexadecimal.) 
  4023. bytes each          The size of one of the memory types on this line. 
  4024. bytes present       The actual amount of real RAM used by the memory type on 
  4025.                     this line. 
  4026. description         The name of the memory type reported on this line. 
  4027.  
  4028. The "Accessible Shared memory" is not added into the summaries. It is the total 
  4029. amount of shared memory which is accessible by the process. It includes: 
  4030. originated shared memory, DLLs used by the process, memory given to it by 
  4031. another process (using DosGiveSharedMem), and memory gotten by it (using 
  4032. DosGetSharedMem). 
  4033.  
  4034. Summaries are provided and shown as hex bytes: 
  4035.  
  4036. Total System 
  4037.           The system RAM consists of the lines for PTDA, TCB, TSD, LDT, Process 
  4038.           Page Directory, and Page Tables. 
  4039. Total Shared originated 
  4040.           The shared memory that was not originated by this process is ignored. 
  4041. Total Private 
  4042.           This entry includes the .EXE file and all privately allocated memory. 
  4043.           This memory is computed as if there were no other processes in the 
  4044.           system. So, if there are multiple copies of a particular program 
  4045.           running, each of them would show the .EXE file as being consumed by 
  4046.           that process. 
  4047. Total RAM for the Process 
  4048.           The total of the above three values, presented in bytes, kilobytes 
  4049.           and megabytes. 
  4050.  
  4051. The last set of 3 lines are values taken directly from the PTDA. They are 
  4052. included here to assist in the validation of PerfView data. The values are: 
  4053.  
  4054. Allocated PTEs      The number of PTEs allocated in the Process Page Directory. 
  4055.                     This would represent the number of pages which are 
  4056.                     committed. 
  4057. Present PTEs        The number of PTEs having pages that are present. 
  4058. Resident PTEs       The number of PTEs having pages that are either locked or 
  4059.                     resident. 
  4060.  
  4061.  
  4062. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4063.  
  4064. o Memory addressing 
  4065.  
  4066. o Memory Management Control Blocks 
  4067.  
  4068. o Memory Analysis Using THESEUS2 
  4069.  
  4070. o Object Summary 
  4071.  
  4072.  
  4073. ΓòÉΓòÉΓòÉ <hidden> Memory Utilization Algorithm ΓòÉΓòÉΓòÉ
  4074.  
  4075.  1. There is one PTDA for the process. Its size is determined during THESEUS2 
  4076.     initialization. 
  4077.  
  4078.  2. There is one TCB for each thread being used by the process. Its size is 
  4079.     determined by a mapping structure. 
  4080.  
  4081.  3. There is one TSD for each thread being used by the process. Its allocated 
  4082.     size is 4KB. The number of pages actually in use is counted. 
  4083.  
  4084.  4. There is one LDT for the process. Its allocated size is 64KB. The number of 
  4085.     pages actually in use is counted. 
  4086.  
  4087.  5. There is one Process Page Directory for the process. Its size is 512 bytes. 
  4088.  
  4089.  6. There is a group of Page Tables for the process. The number of Page Tables 
  4090.     in use is determined by looking at the Process Page Directory and then 
  4091.     determining what pages are present. 
  4092.  
  4093.  7. For each arena record in the private arena: 
  4094.  
  4095.     a. Determine the number of allocated pages. 
  4096.     b. Count the number of pages actually in use. 
  4097.  
  4098.  8. For each arena record in the shared arena for which the process has access 
  4099.     to the memory object (by looking at the context records): 
  4100.  
  4101.     a. Determine the number of allocated pages. 
  4102.     b. Count the number of pages actually in use. 
  4103.  
  4104.  9. For each arena record in the shared arena for which the process was the 
  4105.     originator, (by looking at the context records): 
  4106.  
  4107.     a. Determine the number of allocated pages. 
  4108.     b. Count the number of pages actually in use. 
  4109.  
  4110.  
  4111. ΓòÉΓòÉΓòÉ 9.4.3. Memory Leak Detection ΓòÉΓòÉΓòÉ
  4112.  
  4113. Select one: 
  4114.  
  4115. Selecting 
  4116.  
  4117. Example Output 
  4118.  
  4119. Contents of Display 
  4120.  
  4121. Related Topics 
  4122.  
  4123.  
  4124. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  4125.  
  4126. When you select the Memory Leak Detection option of the Process pull-down on 
  4127. the Process Hierarchy window, information about memory accumulation for each 
  4128. object in the process is computed and shown. 
  4129.  
  4130. This can be done either on a periodic basis or under user control. See Related 
  4131. Topics for the references for specifying control. 
  4132.  
  4133.  
  4134. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  4135.  
  4136. Memory leak detection for Process with PID = 0039, name = THESEUS2:
  4137. < End of THESEUS2 (v 2.0s) output @ 10:42:49 on 8/5/1993 >
  4138. Use the 'Function' pull-down to start and stop the data collection.
  4139. Leak data captured.
  4140. Periodic update started with interval of 10 seconds.
  4141. Previous sample will be used as the base.
  4142. < End of THESEUS2 (v 2.0s) output @ 10:43:06 on 8/5/1993 >
  4143. Allocated   Committed   Actual    har     Address   P/S   Description
  4144.        +0          +1       +1   0342    01100000   Pvt   THESEUS2 allocated it
  4145.        +0          +0       +1   0343    01130000   Pvt   THESEUS2 allocated it
  4146. < End of THESEUS2 (v 2.0s) output @ 10:43:16 on 8/5/1993 >
  4147. Allocated   Committed   Actual    har     Address   P/S   Description
  4148.        +0          +1       +1   0343    01130000   Pvt   THESEUS2 allocated it
  4149.       +96          +1       +1   034B   +019B0000   Pvt   THESEUS2 allocated it
  4150.      +688          +1       +1   034C   +01A10000   Pvt   THESEUS2 allocated it
  4151.       +16          +2       +2   034D   +01CC0000   Pvt   PMWIN    allocated it
  4152.       +16          +1       +1   034E   +01CD0000   Pvt   PMGPI    allocated it
  4153.       +16          +1       +0   034F   +01CE0000   Pvt   PMGPI    allocated it
  4154.     +1024          +1       +1   0350   +01CF0000   Pvt   PMGPI    allocated it
  4155.     +1024          +1       +1   0351   +020F0000   Pvt   PMGPI    allocated it
  4156.        +0          +2       +2   0185    16070000   Shr   PMGRE    allocated it
  4157. < End of THESEUS2 (v 2.0s) output @ 10:43:26 on 8/5/1993 >
  4158. Allocated   Committed   Actual    har     Address   P/S   Description
  4159.       -96          -1       -1   034B   -019B0000   Pvt
  4160.      -688          -1       -1   034C   -01A10000   Pvt
  4161.       -16          -2       -2   034D   -01CC0000   Pvt
  4162.       -16          -1       -1   034E   -01CD0000   Pvt
  4163.       -16          -1       +0   034F   -01CE0000   Pvt
  4164.     -1024          -1       -1   0350   -01CF0000   Pvt
  4165.     -1024          -1       -1   0351   -020F0000   Pvt
  4166. < End of THESEUS2 (v 2.0s) output @ 10:43:36 on 8/5/1993 >
  4167. Periodic updated stopped.
  4168. < End of THESEUS2 (v 2.0s) output @ 10:43:38 on 8/5/1993 >
  4169.  
  4170.  
  4171. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Leak Detection Display ΓòÉΓòÉΓòÉ
  4172.  
  4173. One line is displayed for each memory object whose committed or actual (present 
  4174. + swapped) memory values have changed: 
  4175.  
  4176. Column      Meaning 
  4177. Allocated   The change in the number of pages of allocated (virtual) memory in 
  4178.             this object. This will be non-zero only when the memory object is 
  4179.             allocated or freed. 
  4180. Committed   The change in the number of pages of committed memory in this 
  4181.             object. 
  4182. Actual      The change in the number of pages of actual memory in this object. 
  4183. har         The har of this object. 
  4184. Address     The linear address of this object. 
  4185. P/S         An indicator as to the type of memory object: 
  4186.  
  4187.    Pvt  The memory object is in the private arena. 
  4188.    Shr  The memory object is in the shared arena. 
  4189. Description Description in English of the object. 
  4190.  
  4191.  
  4192. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4193.  
  4194. o Memory addressing 
  4195.  
  4196. o Memory states 
  4197.  
  4198. o Leak detection control 
  4199.  
  4200. o Manual data capture 
  4201.  
  4202. o Manual data compare 
  4203.  
  4204.  
  4205. ΓòÉΓòÉΓòÉ 9.4.4. General Process Information ΓòÉΓòÉΓòÉ
  4206.  
  4207. Select one: 
  4208.  
  4209. Selecting 
  4210.  
  4211. Example Output 
  4212.  
  4213. Contents of Display 
  4214.  
  4215. Related Topics 
  4216.  
  4217.  
  4218. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Process Information Display ΓòÉΓòÉΓòÉ
  4219.  
  4220. When you select the General Process Information option of the Process pull-down 
  4221. on the Process Hierarchy window, general information about the process is 
  4222. shown: 
  4223.  
  4224.  1. Linear address of the PTDA. 
  4225.  2. Number of threads, if THESEUS2 found a number different from what the PTDA 
  4226.     indicates. 
  4227.  3. General information about each thread, including: 
  4228.  
  4229.     a. Thread number; 
  4230.     b. Addresses of the TCB and TSD; 
  4231.     c. Scheduling priority and state. 
  4232.  
  4233.  4. The Exit List. 
  4234.  5. The open files. 
  4235.  6. The environment strings. 
  4236.  
  4237.  
  4238. ΓòÉΓòÉΓòÉ <hidden> Example of the General Process Information Display ΓòÉΓòÉΓòÉ
  4239.  
  4240. General Information about the Process with PID = 010A, name = 'THESEUS2':
  4241. PTDA address = 7D3E821C
  4242.  
  4243. Threads for this Process:
  4244.                                     ---- priority ----
  4245.  TID   Th_#        TCB        TSD  class  level actual  state
  4246. 0001   002F   7D3CEB5C   7D2F8000     02     00   0500   0005  Running
  4247.  
  4248. Exit List:
  4249.   Class   RtnAddress  Description
  4250.    0010   BF6F:015E   DISPLAY  #0007 (shared)
  4251.    0010   D44F:02C4   PMGRE    #0006 (shared)
  4252.    0010   D0FF:0A54   PMWIN    #0005 (shared)
  4253.    0010   D18F:A1E6   PMSHAPI  #0001 (shared)
  4254.    00C0   D067:27A8   OS2CHAR  #0001 (shared)
  4255.    0100   1A393454    HELPMGR  #0001 (shared)
  4256.    0100   0003A7DB    THESEUS2 #0001 (shared)
  4257.    0100   1A4B6188    PMCTLS   #0002 (shared)
  4258.    0100   D2B7:9D1C   PMSPL    #0004 (shared)
  4259.    01A5   D0FF:04A6   PMWIN    #0005 (shared)
  4260.    01AB   D44F:02CE   PMGRE    #0006 (shared)
  4261.    01C0   D067:27B5   OS2CHAR  #0001 (shared)
  4262.    01FF   1A4B61E4    PMCTLS   #0002 (shared)
  4263.    01FF   D44F:0308   PMGRE    #0006 (shared)
  4264.  
  4265. Open Files (MaxFH=20):
  4266.   ---- handles ---
  4267.   Process   System   File name
  4268.      0000     0027   \DEV\CON
  4269.      0001     0027   \DEV\CON
  4270.      0002     0027   \DEV\CON
  4271.      0003     0080   \DEV\THESEU2$
  4272.      0004     002C   \DEV\KBD$
  4273.      0005     0059   C:\THESEUS2\THESEUS2.HLP
  4274.      0006     0081   C:\OS2\HELP\HMHELP.HLP
  4275.      000C     0050   \DEV\KBD$
  4276.  
  4277. Environment:
  4278.   "WP_OBJHANDLE=113848"
  4279.   "USER_INI=C:\OS2\OS2.INI"
  4280.   "SYSTEM_INI=C:\OS2\OS2SYS.INI"
  4281.   "OS2_SHELL=C:\OS2\CMD.EXE"
  4282.   "AUTOSTART=PROGRAMS,TASKLIST,FOLDERS"
  4283.   "RUNWORKPLACE=C:\OS2\PMSHELL.EXE"
  4284.   "COMSPEC=C:\OS2\CMD.EXE"
  4285.   "PATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;C:\;C:\OS2\MDOS;C:\OS2\APPS;E:\TOOLKT20\OS2BIN"
  4286.   "DPATH=C:\OS2;C:\OS2\SYSTEM;C:\OS2\MDOS\WINOS2;C:\OS2\INSTALL;C:\;C:\OS2\BITMAP;C:\OS2\MDOS;C:\OS2\APPS"
  4287.   "PROMPT=$i[$p]"
  4288.   "HELP=C:\OS2\HELP;C:\OS2\HELP\TUTORIAL;E:\TOOLKT20\OS2HELP"
  4289.   "GLOSSARY=C:\OS2\HELP\GLOSS;"
  4290.   "KEYS=ON"
  4291.   "DELDIR=C:\DELETE,512;D:\DELETE,512;E:\DELETE,512;"
  4292.   "BOOKSHELF=C:\OS2\BOOK;E:\TOOLKT20\BOOK"
  4293.   "EPATH=C:\OS2\APPS"
  4294.   "VIDEO_DEVICES=VIO_VGA"
  4295.   "VIO_VGA=DEVICE(BVHVGA)"
  4296.   "TMP=E:\"
  4297.   "PROGREF20=GUIREF20.INF"
  4298.   "PMREF=PMFUN.INF+PMGPI.INF+PMMSG.INF+PMWIN.INF"
  4299.   "WORKPLACE__PROCESS=NO"
  4300.   Program (actual)    = "E:\THESEUS2\THESEUS2.EXE"
  4301.   Program (specified) = "E:\THESEUS2\THESEUS2.EXE"
  4302.   Parameters = ""
  4303.  
  4304.  
  4305. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Process Information Display ΓòÉΓòÉΓòÉ
  4306.  
  4307. The information presented on the General Process Information display is as 
  4308. follows: 
  4309.  
  4310. General Information about the Process with PID = hhhh 
  4311.           The PID of the specified process. 
  4312. name = 'aaaaaaaa' 
  4313.           The name of the .EXE file that is the module for the process. 
  4314. PTDA address = llllllll 
  4315.           The linear address of the PTDA being shown. 
  4316. Thread count (as discovered by THESEUS2) = i, 
  4317.           The number of threads that THESEUS2 found for this process when it 
  4318.           scanned the thread table. This number is shown only if this and the 
  4319.           following value are not the same. 
  4320. as claimed by PTDA = i. 
  4321.           The number that is in the PTDA. 
  4322.  
  4323. One line is displayed for each thread: 
  4324.  
  4325. Column           Meaning 
  4326. TID              Thread ID of the thread. 
  4327. Th_#             Thread number of the thread. 
  4328. TCB              Linear address of the Thread Control Block of the thread. 
  4329. TSD              Linear address of the Thread Swappable Data of the thread. 
  4330. Priority class   Declared priority class of the thread. 
  4331. Priority level   Declared priority level of the thread. 
  4332. Priority actual  Actual priority being used by the scheduler, after all the 
  4333.                  dynamic calculations have been applied. 
  4334. state            Dispatch state of the thread. The following decoded states are 
  4335.                  shown: 
  4336.  
  4337.    Ready      The thread is ready to run, but is not the highest priority that 
  4338.               is ready. 
  4339.    Blocked    The thread is blocked, waiting on some event. 
  4340.    Suspended  The thread has been suspended by the system. 
  4341.    Critical section The thread has done a DosEnterCritSec and not completed. 
  4342.    Running    The thread is running. 
  4343.    Ready, but apply an IO boost The thread is ready to run, but needs to be 
  4344.               "boosted" because it has just completed some I/O. 
  4345.    Thread waiting for TSD The thread is waiting for a TSD to become available. 
  4346.    Delayed TKWakeup (Almost Ready) The thread has been delayed by the system. 
  4347.    Frozen Thread The thread has been "frozen" by the system, waiting on its 
  4348.               parent. 
  4349.    Incoming TSD ??? 
  4350.    TSD failed to swap in A disk error occurred trying to swap the TSD in. 
  4351.  
  4352. One line is displayed for each entry in the Exit List: 
  4353.  
  4354. Column         Meaning 
  4355. Class          The class/priority of the Exit Routine. See the description of 
  4356.                the DosExitList function for the meaning of this. 
  4357. RtnAddress     The address of the Exit Routine. This is either a 16:16 virtual 
  4358.                address or a 0:32 flat address. 
  4359. Description    The name of the module and the segment/object number this 
  4360.                routine is in. 
  4361.  
  4362. The Open Files are displayed. The maximum number of process file handles 
  4363. (MaxFH) is shown. Then, the open files are shown, with 1 line for each open 
  4364. file: 
  4365.  
  4366. Column             Meaning 
  4367. Process handle     The value of the process file handle. These are unique to 
  4368.                    the process.  That is, process file handle 5 in the process 
  4369.                    with PID = 5 is not the same as process file handle 5 in the 
  4370.                    process with PID = 6. 
  4371. System handle      The corresponding system file handle. These are common 
  4372.                    across the entire system. That is, system file handle 5 in 
  4373.                    the process with PID = 5 is the same as system file handle 5 
  4374.                    in the process with PID = 6. 
  4375. Flags              The file state flags. They are decoded into English at the 
  4376.                    end of the line. 
  4377. File name          This can be: 
  4378.  
  4379.    o Fully qualified file name. 
  4380.    o "anonymous pipe" = an anonymous pipe is opened on this handle. 
  4381.    o "named pipe" = a named pipe is opened on this handle. 
  4382.  
  4383. The process environment is displayed. Each string is displayed on a line, 
  4384. surrounded by quote marks. The fully qualified program file name is displayed, 
  4385. surrounded by quote marks. The program name as input is displayed, surrounded 
  4386. by quote marks. The parameters passed to the program are displayed, surrounded 
  4387. by quote marks. 
  4388.  
  4389.  
  4390. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4391.  
  4392. o Memory addressing 
  4393.  
  4394. o PTDA 
  4395.  
  4396. o Open Files 
  4397.  
  4398.  
  4399. ΓòÉΓòÉΓòÉ 9.4.5. Per Task Data Area (PTDA) ΓòÉΓòÉΓòÉ
  4400.  
  4401. Select one: 
  4402.  
  4403. Selecting 
  4404.  
  4405. Example Output 
  4406.  
  4407. Contents of Display 
  4408.  
  4409. Related Topics 
  4410.  
  4411.  
  4412. ΓòÉΓòÉΓòÉ <hidden> Selecting the Per Task Data Area (PTDA) Display ΓòÉΓòÉΓòÉ
  4413.  
  4414. When you select the Per Task Data Area (PTDA) option of the Process pull-down 
  4415. on the Process Hierarchy window, the Per Task Data Area (PTDA) for the selected 
  4416. process is displayed. 
  4417.  
  4418.  
  4419. ΓòÉΓòÉΓòÉ <hidden> Example of the Per Task Data Area (PTDA) Display ΓòÉΓòÉΓòÉ
  4420.  
  4421. Per Task Data Area (PTDA) for Process with PID = 0088, name = 'THESEUS2':
  4422. parent PTDA     @ 7D31E020, this PTDA          @ 7D320A80
  4423. first child     @ 00000000, exec child         @ 00000000
  4424. next sibling    @ 7D31FC60, previous sibling   @ 00000000
  4425. EXE pointer     @ FE5A2934, name = D:\THESEUS2\THESEUS2.EXE
  4426. last TCB        @ FD422E10, first TCB          @ FD422E10
  4427. # of threads    = 0001,     tib count          = 0055
  4428. TIB 0           = 00050000, TIB 1              = FFFFFFFF
  4429. TIB 2           = FFFFFFFF, TIB 3              = FFFFFFFF
  4430. debug data      @ 00000000, debug flag         = 00000000
  4431.  
  4432. Virtual Memory Manager information:
  4433. Next Arena      @ 7D31FCA0, Previous Arena     @ FFF408FC
  4434. Arena sentinel  @ FEF31ECA, Hint of first free @ FEF3244A
  4435. bitmap dir (?)  @ FEF2D650, hash table         @ FEF2D8CC
  4436. per-type info   @ FFF3C23C, VM flags           = 00000002
  4437. min address     = 00010000, max address        = 00810000
  4438. arena count     = 00000000, need bitmap        = 00000000
  4439. max bitmap      = 00000003, max bitmap entry   = 00000000
  4440. max hash index  = 00000081, arena header hob   = 0275
  4441.  
  4442. Physical Memory Manager information:
  4443. page tables                       @ 7D680000
  4444. Process Page Directory (1st 512M) @ FF215A00
  4445. allocated page counts             @ 7D320B28
  4446. present page counts               @ 7D320C28
  4447. locked/resident page counts       @ 7D320D28
  4448. base virtual page number          = 00000000
  4449. base vdm alias region             = 00000000
  4450. max potential pdes for this arena = 0080
  4451. count of low  in-use pdes         = 0003
  4452. count of high in-use pdes         = 0015
  4453. page table context                = 0006
  4454. per-process page manager flags    = 0000
  4455.    process was aged in this sweep.
  4456.  
  4457. Environment hob = 0352 (linear = 00060000, selector = 0037)
  4458.  
  4459. PerfView data @ 00000000
  4460.  
  4461. Exit List @ FE5B55C0
  4462.  
  4463. hob of PTDA = 026C, hob of MTE = 024C
  4464. hob of LDT  = 0278, LDT        @ 7C705000
  4465. PID         = 0088, parent PID = 0002
  4466. selector    = 0E48, signature  = TD
  4467.  
  4468.  
  4469. ΓòÉΓòÉΓòÉ <hidden> Contents of the Per Task Data Area (PTDA) Display ΓòÉΓòÉΓòÉ
  4470.  
  4471. The information presented on the Per Task Data Area (PTDA) display is as 
  4472. follows: 
  4473.  
  4474. Per Task Data Area (PTDA) for Process with PID = hhhh 
  4475.           The PID of the specified process. 
  4476. name = 'aaaaaaaa' 
  4477.           The name of the .EXE file that is the module for the process. 
  4478.  
  4479. The following items concern the process lineage and its threads: 
  4480. parent PTDA @ llllllll 
  4481.           The processes have a parent/child relationship. This entry is the 
  4482.           linear address of the parent process' PTDA. 
  4483. this PTDA @ llllllll 
  4484.           The linear address of this PTDA. 
  4485. first child @ llllllll 
  4486.           The linear address of the PTDA of the youngest child of this process. 
  4487. exec child @ llllllll 
  4488.           The linear address of the PTDA of the child process, while the child 
  4489.           is being created. 
  4490. next sibling @ llllllll 
  4491.           The linear address of the next oldest sibling in the structure. 
  4492. previous sibling @ llllllll 
  4493.           The linear address of the next youngest sibling in the structure. 
  4494. EXE pointer @ llllllll 
  4495.           The linear address of the fully qualified .EXE file name. 
  4496. name = aaaaaaaa 
  4497.           The fully qualified file name of the .EXE file for this process. 
  4498. last TCB @ llllllll 
  4499.           The linear address of the last TCB in the TCB chain for this process. 
  4500. first TCB @ llllllll 
  4501.           The linear address of the first TCB in the TCB chain for this 
  4502.           process. 
  4503. # of threads = hhhh 
  4504.           The number of threads that the PTDA claims to own. 
  4505. tib count = hhhh 
  4506.           The number of TIBs that have been allocated. 
  4507. TIB 0 = llllllll 
  4508.           Linear address of the first group of TIBs. 
  4509. TIB 1 = llllllll 
  4510.           Linear address of the second group of TIBs. 
  4511. TIB 2 = llllllll 
  4512.           Linear address of the third group of TIBs. 
  4513. TIB 3 = llllllll 
  4514.           Linear address of the fourth group of TIBs. 
  4515. debug data @ hhhhhhhh 
  4516.           Unknown 
  4517. debug flag = hhhhhhhh 
  4518.           Unknown 
  4519.  
  4520. The following items concern the Virtual Memory Manager: 
  4521. Next Arena @ llllllll 
  4522.           The linear address of the next arena header. 
  4523. Previous Arena @ llllllll 
  4524.           The linear address of the previous arena header. 
  4525. Arena sentinel @ llllllll 
  4526.           The linear address of the sentinel arena record that starts the 
  4527.           process' arena. 
  4528. Hint of first free @ llllllll 
  4529.           The linear address of the arena record which may be followed by an 
  4530.           area of linear space that is not allocated. 
  4531. bitmap dir (?) @ llllllll 
  4532.           Unknown 
  4533. hash table @ llllllll 
  4534.           Unknown 
  4535. per-type info @ llllllll 
  4536.           Unknown 
  4537. VM flags = hhhhhhhh 
  4538.           Unknown 
  4539. min address = hhhhhhhh 
  4540.           The minimum linear address used by this process. 
  4541. max address = hhhhhhhh 
  4542.           The maximum linear address used by this process. 
  4543. arena count = hhhhhhhh 
  4544.           Unknown 
  4545. need bitmap = hhhhhhhh 
  4546.           Unknown 
  4547. max bitmap = hhhhhhhh 
  4548.           Unknown 
  4549. max bitmap entry = hhhhhhhh 
  4550.           Unknown 
  4551. max hash index = hhhhhhhh 
  4552.           Unknown 
  4553. arena header hob = oooo 
  4554.           The hob of the pseudo-object for this arena header. 
  4555.  
  4556. The following items concern the Physical Memory Manager: 
  4557. page tables @ llllllll 
  4558.           The linear address of the start of the Page Tables for this process. 
  4559. Process Page Directory (1st 512M) @ llllllll 
  4560.           The linear address of the Process Page Directory for this process. 
  4561. allocated page counts @ llllllll 
  4562.           The linear address of a table having one entry for each potential 
  4563.           Page Table. Each entry states the number of pages that are allocated 
  4564.           within that Page Table. 
  4565. present page counts @ llllllll 
  4566.           The linear address of a table having one entry for each potential 
  4567.           Page Table. Each entry states the number of pages that are present 
  4568.           within that Page Table. 
  4569. locked/resident page counts @ llllllll 
  4570.           The linear address of a table having one entry for each potential 
  4571.           Page Table. Each entry states the number of pages that are 
  4572.           locked/resident within that Page Table. 
  4573. base virtual page number = hhhhhhhh 
  4574.           Unknown 
  4575. base vdm alias region = hhhhhhhh 
  4576.           Unknown 
  4577. max potential pdes for this arena = hhhh 
  4578.           The size of the process' Process Page Directory. 
  4579. count of low  in-use pdes = hhhh 
  4580.           Unknown 
  4581. count of high in-use pdes = hhhh 
  4582.           Unknown 
  4583. page table context = hhhh 
  4584.           Unknown 
  4585. per-process page manager flags = hhhh 
  4586.           Unknown 
  4587.   process was aged in this sweep. 
  4588.  
  4589. Environment hob = oooo (linear = llllllll, selector = ssss) 
  4590.           The hob, linear address and selector of the environment object. 
  4591.  
  4592. PerfView data @ llllllll 
  4593.           The linear address of the PerfView data for this process. 
  4594.  
  4595. Exit List @ llllllll 
  4596.           The linear address of the Exit List for this process. 
  4597.  
  4598. hob of PTDA = oooo 
  4599.           The hob of the PTDA pseudo-object. 
  4600. hob of MTE = oooo 
  4601.           The hob of the MTE for the .EXE file for the process. 
  4602. hob of LDT = oooo 
  4603.           The hob of the process' LDT. 
  4604. LDT @ llllllll 
  4605.           The linear address of the process' LDT. 
  4606. MaxFileHandles = iii 
  4607.           The maximum number of files that can be opened at one time by this 
  4608.           process. 
  4609. Open File table @ ssss:oooo 
  4610.           The virtual address of the Open File table. There is one entry for 
  4611.           each process file handle. 
  4612. PID = hhhh 
  4613.           The PID of this process. 
  4614. parent PID = hhhh 
  4615.           The PID of the parent process. 
  4616. selector = ssss 
  4617.           The GDT selector that points to this PTDA. 
  4618. signature = TD 
  4619.           Several of the OS/2 kernel control blocks have signature characters 
  4620.           at the beginning (the PTDA was inverted in OS/2 1.2). The signature 
  4621.           of the PTDA is 'TD'. 
  4622.  
  4623.  
  4624. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4625.  
  4626. o Memory addressing 
  4627.  
  4628. o Linear addresses 
  4629.  
  4630. o Memory Management Control Blocks 
  4631.  
  4632. o General Process Information 
  4633.  
  4634.  
  4635. ΓòÉΓòÉΓòÉ 9.4.6. LDT ΓòÉΓòÉΓòÉ
  4636.  
  4637. Select one: 
  4638.  
  4639. Selecting 
  4640.  
  4641. Example Output 
  4642.  
  4643. Contents of Display 
  4644.  
  4645. Descriptor Table Entry Description 
  4646.  
  4647. Related Topics 
  4648.  
  4649.  
  4650. ΓòÉΓòÉΓòÉ <hidden> Selecting the LDT Display ΓòÉΓòÉΓòÉ
  4651.  
  4652. When you select the LDT option of the Process pull-down on the Process 
  4653. Hierarchy window, the contents of the LDT for the selected process is 
  4654. displayed. 
  4655.  
  4656.  
  4657. ΓòÉΓòÉΓòÉ <hidden> Example of the LDT Display ΓòÉΓòÉΓòÉ
  4658.  
  4659. Local Descriptor Table for process 'THESEUS2', PID = 0033:
  4660. LDT(0004) Data    Base=7C705000 Limit=0FFFF DPL=3 ED=0  W=0 A=0 P=1 G=0 B=0
  4661. LDT(000C) Code    Base=00010000 Limit=0FFFF DPL=3 CF=0  R=1 A=0 P=1 G=0 D=0
  4662. LDT(0014) Code    Base=00020000 Limit=0E2B5 DPL=3 CF=0  R=1 A=0 P=1 G=0 D=0
  4663. LDT(001C) Data    Base=00030000 Limit=0EADF DPL=3 ED=0  W=1 A=1 P=1 G=0 B=0
  4664. LDT(0024) Data    Base=00040000 Limit=002A8 DPL=3 ED=0  W=1 A=1 P=1 G=0 B=0
  4665. ┬╖┬╖┬╖
  4666.  
  4667.  
  4668. ΓòÉΓòÉΓòÉ <hidden> Contents of the LDT Display ΓòÉΓòÉΓòÉ
  4669.  
  4670. One line is displayed for each valid entry in the LDT. 
  4671.  
  4672. Please see the Descriptor Table Entry for the format of an entry. 
  4673.  
  4674.  
  4675. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4676.  
  4677. o Memory addressing 
  4678.  
  4679. o Virtual addresses 
  4680.  
  4681. o General Process Information 
  4682.  
  4683. o PTDA 
  4684.  
  4685.  
  4686. ΓòÉΓòÉΓòÉ 9.4.7. Page Table ΓòÉΓòÉΓòÉ
  4687.  
  4688. Select one: 
  4689.  
  4690. Selecting 
  4691.  
  4692. Example Output 
  4693.  
  4694. Contents of Display 
  4695.  
  4696. Page Table Entry Description 
  4697.  
  4698. Related Topics 
  4699.  
  4700.  
  4701. ΓòÉΓòÉΓòÉ <hidden> Selecting the Process Page Table Display ΓòÉΓòÉΓòÉ
  4702.  
  4703. When you select the Page Table option of the Process pull-down on the Process 
  4704. Hierarchy window, the contents of the Process Page Table is displayed. 
  4705.  
  4706. The display generation takes about 3 seconds on an 8MB 20Mhz P70. 
  4707.  
  4708.  
  4709. ΓòÉΓòÉΓòÉ <hidden> Example of the Process Page Table Display ΓòÉΓòÉΓòÉ
  4710.  
  4711. Page Table for 'THESEUS2':
  4712. *Linear=00000000 Physical=002D2000 D=1 A=1 User  R/W P=1 Resident
  4713.  Linear=00010000 FrameId=0083D     D=0 A=0 User  R/O P=0
  4714.  Linear=00011000 Physical=001AE000 D=0 A=1 User  R/O P=1
  4715.  Linear=00012000 Physical=002DA000 D=0 A=1 User  R/O P=1
  4716.  Linear=00013000 FrameId=00840     D=0 A=0 User  R/O P=0
  4717. ┬╖┬╖┬╖
  4718.  
  4719.  
  4720. ΓòÉΓòÉΓòÉ <hidden> Contents of the Process Page Table Display ΓòÉΓòÉΓòÉ
  4721.  
  4722. One line is displayed for each valid entry in the Process Page Table. 
  4723.  
  4724. Please see the Page Table Entry for the format of an entry. 
  4725.  
  4726.  
  4727. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4728.  
  4729. o Memory addressing 
  4730.  
  4731. o Linear addresses 
  4732.  
  4733. o Physical addresses 
  4734.  
  4735.  
  4736. ΓòÉΓòÉΓòÉ 9.4.8. Private Object Summary ΓòÉΓòÉΓòÉ
  4737.  
  4738. Select one: 
  4739.  
  4740. Selecting 
  4741.  
  4742. Example Output 
  4743.  
  4744. Contents of Display 
  4745.  
  4746. Related Topics 
  4747.  
  4748.  
  4749. ΓòÉΓòÉΓòÉ <hidden> Selecting the Private Object Summary Display ΓòÉΓòÉΓòÉ
  4750.  
  4751. When you select the Private Object Summary option of the Process pull-down on 
  4752. the Process Hierarchy window, a summary of all the memory objects defined in 
  4753. the private arena for the selected process is displayed. 
  4754.  
  4755.  
  4756. ΓòÉΓòÉΓòÉ 9.4.9. Shared Object Summary ΓòÉΓòÉΓòÉ
  4757.  
  4758. Select one: 
  4759.  
  4760. Selecting 
  4761.  
  4762. Example Output 
  4763.  
  4764. Contents of Display 
  4765.  
  4766. Related Topics 
  4767.  
  4768.  
  4769. ΓòÉΓòÉΓòÉ <hidden> Selecting the Shared Object Summary Display ΓòÉΓòÉΓòÉ
  4770.  
  4771. When you select the Shared Object Summary option of the Process pull-down on 
  4772. the Process Hierarchy window, a summary of all the memory objects defined in 
  4773. the shared arena for the selected process is displayed. 
  4774.  
  4775.  
  4776. ΓòÉΓòÉΓòÉ 9.4.10. Private Arena Table ΓòÉΓòÉΓòÉ
  4777.  
  4778. Select one: 
  4779.  
  4780. Selecting 
  4781.  
  4782. Example Output 
  4783.  
  4784. Contents of Display 
  4785.  
  4786. Arena Record Description 
  4787.  
  4788. Related Topics 
  4789.  
  4790.  
  4791. ΓòÉΓòÉΓòÉ <hidden> Selecting the Private Arena Table Display ΓòÉΓòÉΓòÉ
  4792.  
  4793. When you select the Private Arena Table option of the Process pull-down on the 
  4794. Process Hierarchy window, the contents of the process' private arena is 
  4795. displayed. 
  4796.  
  4797.  
  4798. ΓòÉΓòÉΓòÉ <hidden> Example of the Private Arena Table Display ΓòÉΓòÉΓòÉ
  4799.  
  4800. Private Arena Table for 'THESEUS2':
  4801.  har    pages   linear flg next prev link hash hob  hal  ptda / Decoded flags
  4802. 020E 00000000 00010000 003 020A 0229 0005 0000 Sentinel, max pages=00004000
  4803. 020A 00000020 00010000 1D9 020B 020E 0000 0000 0238 0000 0235 / Mapped Reload User Exec Read
  4804. 020B 00000010 00030000 179 0211 020A 0000 0000 0263 0000 0235 / Mapped Reload Write User Read
  4805. ┬╖┬╖┬╖
  4806. 024A 00000010 006E0000 169 020D 0219 0000 0000 0243 0000 0235 / Mapped Write User Read
  4807. 020D 00000010 006F0000 169 0229 024A 0000 0000 023A 0000 0235 / Mapped Write User Read
  4808. 0229 000000D0 00700000 169 020E 020D 0000 0000 0278 0000 0235 / Mapped Write User Read
  4809.  
  4810.  
  4811. ΓòÉΓòÉΓòÉ <hidden> Contents of the Private Arena Table Display ΓòÉΓòÉΓòÉ
  4812.  
  4813. One line is displayed for each entry in the private arena. 
  4814.  
  4815. Please see the arena record for the format of an entry. 
  4816.  
  4817.  
  4818. ΓòÉΓòÉΓòÉ 9.4.11. Shared Arena Table ΓòÉΓòÉΓòÉ
  4819.  
  4820. Select one: 
  4821.  
  4822. Selecting 
  4823.  
  4824. Example Output 
  4825.  
  4826. Contents of Display 
  4827.  
  4828. Arena Record Description 
  4829.  
  4830. Related Topics 
  4831.  
  4832.  
  4833. ΓòÉΓòÉΓòÉ <hidden> Selecting the Shared Arena Table Display ΓòÉΓòÉΓòÉ
  4834.  
  4835. When you select the Shared Arena Table option of the Process pull-down on the 
  4836. Process Hierarchy window, the contents of the shared arena is displayed. 
  4837.  
  4838.  
  4839. ΓòÉΓòÉΓòÉ <hidden> Example of the Shared Arena Table Display ΓòÉΓòÉΓòÉ
  4840.  
  4841. Shared Arena Table for 'THESEUS2':
  4842.  har    pages   linear flg next prev link hash hob  hal  hco  / Decoded flags
  4843. 0005 00016F10 04000000 007 023D 0021 0000 0000 Boundary Sentinel
  4844. 023D 00000010 1AF10000 349 0247 0005 0000 0000 0248 0000 03AA / Mapped User Read Hco
  4845. 0247 00000010 1AF20000 369 0236 023D 0000 0000 0251 0000 032C / Mapped Write User Read Hco
  4846. ┬╖┬╖┬╖
  4847. 006D 00000010 1BFE0000 349 006B 0095 0000 0000 006E 0000 030B / Mapped User Read Hco
  4848. 006B 00000010 1BFF0000 349 0021 006D 0000 0000 006C 0000 02BB / Mapped User Read Hco
  4849. 0021 00000010 1C000000 001 0005 006B 0000 0000 0000 0000 0000 /
  4850.  
  4851.  
  4852. ΓòÉΓòÉΓòÉ <hidden> Contents of the Shared Arena Table Display ΓòÉΓòÉΓòÉ
  4853.  
  4854. One line is displayed for each entry in the shared arena. 
  4855.  
  4856. Please see the arena record for the format of an entry. 
  4857.  
  4858.  
  4859. ΓòÉΓòÉΓòÉ 9.5. Registers ΓòÉΓòÉΓòÉ
  4860.  
  4861. The Registers pull-down contains displays of certain of the hardware related 
  4862. registers and tables. 
  4863.  
  4864. Functions available are: 
  4865.  
  4866. Control Registers 
  4867.           Displays the iAPX 386 control registers. 
  4868. Current IDT 
  4869.           Displays the current Interrupt Descriptor Table. 
  4870. Current TSS 
  4871.           Displays the current Task State Segment. 
  4872.  
  4873.  
  4874. ΓòÉΓòÉΓòÉ 9.5.1. Control Registers ΓòÉΓòÉΓòÉ
  4875.  
  4876. Select one: 
  4877.  
  4878. Selecting 
  4879.  
  4880. Example Output 
  4881.  
  4882. Contents of Display 
  4883.  
  4884. Related Topics 
  4885.  
  4886.  
  4887. ΓòÉΓòÉΓòÉ <hidden> Selecting the Control Registers Display ΓòÉΓòÉΓòÉ
  4888.  
  4889. When you select the Control Registers option of the Registers pull-down on the 
  4890. Process Hierarchy window, information about the current values of the 
  4891. iAPX 386/486 internal control registers is displayed. 
  4892.  
  4893.  
  4894. ΓòÉΓòÉΓòÉ <hidden> Example of the Control Registers Display ΓòÉΓòÉΓòÉ
  4895.  
  4896. Processor Control Registers:
  4897. GDT base = FFEC6000, limit = 1FFF
  4898. IDT base = FFE42966, limit = 03FF
  4899. LDT selector = 0028
  4900. TSS selector = 0010
  4901. CR0 = FFFFFFFD, PG=1, ET=1, TS=1, EM=1, MP=0, PE=1
  4902. CR2 = 004E0000  (Page Fault Linear address)
  4903. CR3 = 0018F000  (Page Directory Physical address)
  4904. DR0 = 00000000  (Breakpoint 0 Linear address)
  4905. DR1 = 00000000  (Breakpoint 1 Linear address)
  4906. DR2 = 00000000  (Breakpoint 2 Linear address)
  4907. DR3 = 00000000  (Breakpoint 3 Linear address)
  4908. DR6 = FFFF4FF0, B0-3=0000, BD=0, BS=1, BT=0
  4909. DR7 = 00000400, LE=0, GE=0, GD=0
  4910.       Len0=0, R/W0=0, L0=0, G0=0
  4911.       Len1=0, R/W1=0, L1=0, G1=0
  4912.       Len2=0, R/W2=0, L2=0, G2=0
  4913.       Len3=0, R/W3=0, L3=0, G3=0
  4914.  
  4915.  
  4916. ΓòÉΓòÉΓòÉ <hidden> Contents of the Control Registers Display ΓòÉΓòÉΓòÉ
  4917.  
  4918. The information presented on the Control Registers display is as follows: 
  4919.  
  4920. GDT base = llllllll, limit = hhhh 
  4921.           The base and limit values for the GDT, obtained by doing an SGDT 
  4922.           instruction. 
  4923. IDT base = llllllll, limit = hhhh 
  4924.           The base and limit values for the IDT, obtained by doing an SIDT 
  4925.           instruction. 
  4926. LDT selector = ssss 
  4927.           The selector for the LDT, obtained by doing an SLDT instruction. 
  4928. TSS selector = ssss 
  4929.           The selector for the current TSS, obtained by doing an STR 
  4930.           instruction. 
  4931. CR0 = hhhhhhhh 
  4932.           Control Register 0.  The bits that are used are decoded as follows: 
  4933.  
  4934.    PG   Paging enabled.  0 = no, 1 = yes. 
  4935.    ET   Extension Type.  0 = 16-bit 387 protocol, 1 = 32-bit 387 protocol. 
  4936.    TS   Task Switched.  0 = no, 1 = yes. 
  4937.    EM   Emulation (of 387).  0 = no, 1 = yes. 
  4938.    MP   Math Present.  0 = no 387 is attached, 1 = a 387 is attached. 
  4939.    PE   Protection Enable.  0 = no, 1 = yes. 
  4940. CR2 = llllllll  (Page Fault Linear address) 
  4941.           The linear address of the last page fault. 
  4942. CR3 = pppppppp  (Page Directory Physical address) 
  4943.           The physical address of the Page Directory. There is only one Page 
  4944.           Directory for the entire system. 
  4945. DR0 = llllllll  (Breakpoint 0 Linear address) 
  4946.           Debug Register 0.  This is the linear address of Breakpoint 0. 
  4947. DR1 = llllllll  (Breakpoint 1 Linear address) 
  4948.           Debug Register 1.  This is the linear address of Breakpoint 1. 
  4949. DR2 = llllllll  (Breakpoint 2 Linear address) 
  4950.           Debug Register 2.  This is the linear address of Breakpoint 2. 
  4951. DR3 = llllllll  (Breakpoint 3 Linear address) 
  4952.           Debug Register 3.  This is the linear address of Breakpoint 3. 
  4953. DR6 = hhhhhhhh 
  4954.           Debug Register 6.  See the Intel 80386 Programmer's Reference Manual 
  4955.           for the definitions of the bits. 
  4956. DR7 = hhhhhhhh 
  4957.           Debug Register 7.  See the Intel 80386 Programmer's Reference Manual 
  4958.           for the definitions of the bits. 
  4959.  
  4960.  
  4961. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  4962.  
  4963. o Memory addressing 
  4964.  
  4965.  
  4966. ΓòÉΓòÉΓòÉ 9.5.2. IDT ΓòÉΓòÉΓòÉ
  4967.  
  4968. Select one: 
  4969.  
  4970. Selecting 
  4971.  
  4972. Example Output 
  4973.  
  4974. Contents of Display 
  4975.  
  4976. Descriptor Table Entry Description 
  4977.  
  4978. Related Topics 
  4979.  
  4980.  
  4981. ΓòÉΓòÉΓòÉ <hidden> Selecting the IDT Display ΓòÉΓòÉΓòÉ
  4982.  
  4983. When you select the IDT option of the Registers pull-down on the Process 
  4984. Hierarchy window, the contents of the IDT is displayed. 
  4985.  
  4986.  
  4987. ΓòÉΓòÉΓòÉ <hidden> Example of the IDT Display ΓòÉΓòÉΓòÉ
  4988.  
  4989. Interrupt Descriptor Table:
  4990. Trap(00) TrapG32 Selector=0160 Offset=FFF6BF58 DPL=0               P=1
  4991. Trap(01) IntG32  Selector=0160 Offset=FFF6C004 DPL=3               P=1
  4992. Trap(02) TaskG   Selector=1D18                 DPL=0               P=1
  4993. Trap(03) IntG32  Selector=0160 Offset=FFF6C1A8 DPL=3               P=1
  4994. Trap(04) TrapG32 Selector=0160 Offset=FFF6C1F0 DPL=3               P=1
  4995. Trap(05) TrapG32 Selector=0160 Offset=FFF6C1FC DPL=0               P=1
  4996. Trap(06) TrapG32 Selector=0160 Offset=FFF6C208 DPL=0               P=1
  4997. Trap(07) TrapG32 Selector=005A Offset=1BF60AD0 DPL=0               P=1
  4998. Trap(08) TaskG   Selector=0088                 DPL=0               P=1
  4999. Trap(09) TrapG32 Selector=0160 Offset=FFF6C2E0 DPL=0               P=1
  5000. ┬╖┬╖┬╖
  5001. Int (00) IntG32  Selector=0160 Offset=FFF37214 DPL=0               P=1
  5002. Int (01) IntG32  Selector=0160 Offset=FFF37228 DPL=0               P=1
  5003. ┬╖┬╖┬╖
  5004. Int (0E) IntG32  Selector=0160 Offset=FFF37354 DPL=0               P=1
  5005. Int (0F) IntG32  Selector=0160 Offset=FFF37368 DPL=0               P=1
  5006. ┬╖┬╖┬╖
  5007.  
  5008.  
  5009. ΓòÉΓòÉΓòÉ <hidden> Contents of the IDT Display ΓòÉΓòÉΓòÉ
  5010.  
  5011. One line is displayed for each valid entry in the IDT. 
  5012.  
  5013. Please see the Descriptor Table Entry for the format of an entry. 
  5014.  
  5015.  
  5016. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5017.  
  5018. o Memory addressing 
  5019.  
  5020. o Virtual addresses 
  5021.  
  5022.  
  5023. ΓòÉΓòÉΓòÉ 9.5.3. Current TSS ΓòÉΓòÉΓòÉ
  5024.  
  5025. Select one: 
  5026.  
  5027. Selecting 
  5028.  
  5029. Example Output 
  5030.  
  5031. Contents of Display 
  5032.  
  5033. Related Topics 
  5034.  
  5035.  
  5036. ΓòÉΓòÉΓòÉ <hidden> Selecting the Current TSS Display ΓòÉΓòÉΓòÉ
  5037.  
  5038. When you select the Current TSS option of the Registers pull-down on the 
  5039. Process Hierarchy window, information about the current Task State Segment is 
  5040. displayed. 
  5041.  
  5042.  
  5043. ΓòÉΓòÉΓòÉ <hidden> Example of the TSS Display ΓòÉΓòÉΓòÉ
  5044.  
  5045. Busy 386 Task State Segment for selector = 0010:
  5046. Back Link Selector to TSS = 0000
  5047. SS:ESP for ring 0 = 0030:00005E14
  5048. SS:ESP for ring 1 = 0000:00000000
  5049. SS:ESP for ring 2 = 0036:00001000
  5050. Current Task State:
  5051. CR3 = 0018F000  EIP = 00000000  Flag = 00000000
  5052. EAX = 00000000  EBX = 00000000  ECX = 00000000  EDX = 00000000
  5053. EDI = 00000000  ESI = 00000000  EBP = 00000000  ESP = 00000000
  5054. CS = 0000  SS = 0000  DS = 0000  ES = 0000  FS = 0000  GS = 0000
  5055. Task LDT Selector = 0028  I/O Map Base = DFFF  Debug Trap bit = 0
  5056.  
  5057.  
  5058. ΓòÉΓòÉΓòÉ <hidden> Contents of the TSS Display ΓòÉΓòÉΓòÉ
  5059.  
  5060. Please refer to the Intel 80386 Programmer's Reference Manual or Intel i486 
  5061. Microprocessor Programmer's Reference Manual for the fields in the TSS. 
  5062.  
  5063.  
  5064. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5065.  
  5066. o Memory addressing 
  5067.  
  5068. o Virtual addresses 
  5069.  
  5070.  
  5071. ΓòÉΓòÉΓòÉ 9.6. Misc ΓòÉΓòÉΓòÉ
  5072.  
  5073. The Misc pull-down contains options applicable to the system as a whole. 
  5074.  
  5075. Functions available are: 
  5076.  
  5077. Refresh Diagram 
  5078.           Refreshes the process hierarchy diagram. 
  5079. Unselect Process 
  5080.           Unselects the currently selected process. 
  5081. `Link' Color 
  5082.           Changes the color of the hyperblock links. 
  5083. Font for this window... 
  5084.           Specifies an alternate font for this window. 
  5085. Default font for Detail Windows... 
  5086.           Specifies an alternate default font for the Detail windows. 
  5087.  
  5088.  
  5089. ΓòÉΓòÉΓòÉ 9.6.1. Refresh Diagram ΓòÉΓòÉΓòÉ
  5090.  
  5091. When you select the Refresh Diagram option of the Misc pull-down on the Process 
  5092. Hierarchy window, the process hierarchy diagram on the Process Hierarchy window 
  5093. is redetermined and redisplayed. This also happens each time any part of the 
  5094. window is painted. 
  5095.  
  5096.  
  5097. ΓòÉΓòÉΓòÉ 9.6.2. Unselect Process ΓòÉΓòÉΓòÉ
  5098.  
  5099. When you select the Unselect Process option of the Misc pull-down on the 
  5100. Process Hierarchy window, the currently selected process is unselected. No 
  5101. process will be selected. 
  5102.  
  5103.  
  5104. ΓòÉΓòÉΓòÉ 9.6.3. `Link' Color ΓòÉΓòÉΓòÉ
  5105.  
  5106. When you select the `Link' Color option of the Misc pull-down on the Process 
  5107. Hierarchy window, you can change the color of the hyperblock links displayed on 
  5108. the Detail window. 
  5109.  
  5110. The Dark Blue and Dark Red offer the best contrast for both normal and reverse 
  5111. video information displayed on both a color and monochrome display. However, 
  5112. the color defaults to Dark Cyan so the hyperblock links will be the same color 
  5113. as the hypertext links in the help panels. 
  5114.  
  5115. The pop-out menu lists all available colors. 
  5116.  
  5117. Window Text is a color chosen by the system to be neutral on both color and 
  5118. monochrome displays. It is normally black. 
  5119.  
  5120. The current setting is checked in the list. 
  5121.  
  5122.  
  5123. ΓòÉΓòÉΓòÉ 9.6.4. Font for this Window... ΓòÉΓòÉΓòÉ
  5124.  
  5125. When you select the Font for this Window... option of the Misc pull-down on the 
  5126. Process Hierarchy window, you can specify a different monospace font  for the 
  5127. Process Hierarchy window. 
  5128.  
  5129.  
  5130. ΓòÉΓòÉΓòÉ 9.6.5. Default font for Detail Windows... ΓòÉΓòÉΓòÉ
  5131.  
  5132. When you select the Default font for Detail Windows... option of the Misc 
  5133. pull-down on the Process Hierarchy window, you can specify a different default 
  5134. monospace font for Detail windows which are created. 
  5135.  
  5136.  
  5137. ΓòÉΓòÉΓòÉ <hidden> List of Selectable Fonts ΓòÉΓòÉΓòÉ
  5138.  
  5139. Select a font from this list. Only monospaced fonts are displayed. 
  5140.  
  5141.  
  5142. ΓòÉΓòÉΓòÉ 9.7. Window ΓòÉΓòÉΓòÉ
  5143.  
  5144. The Window pull-down contains the list of existing THESEUS2 Detail windows. 
  5145. When you select one, it is brought to the foreground. If it has been minimized, 
  5146. it is also restored to the size and position it had before being minimized. 
  5147.  
  5148. The list is updated as Detail windows are created and destroyed. The order of 
  5149. the windows listed reflects the order of creation, with the newest being on the 
  5150. bottom of the list. 
  5151.  
  5152. The last window viewed is indicated by a check mark. 
  5153.  
  5154.  
  5155. ΓòÉΓòÉΓòÉ 9.8. Help ΓòÉΓòÉΓòÉ
  5156.  
  5157. The Help pull-down contains the list of the help functions available for the 
  5158. Process Hierarchy window. 
  5159.  
  5160.  
  5161. ΓòÉΓòÉΓòÉ 9.8.1. Help Index ΓòÉΓòÉΓòÉ
  5162.  
  5163. The Help Index option of the Help pull-down displays the index of the help 
  5164. document. 
  5165.  
  5166.  
  5167. ΓòÉΓòÉΓòÉ 9.8.2. Keys help ΓòÉΓòÉΓòÉ
  5168.  
  5169. The Keys help option of the Help pull-down displays the key definitions for 
  5170. this window. 
  5171.  
  5172.  
  5173. ΓòÉΓòÉΓòÉ 9.8.3. Mouse ΓòÉΓòÉΓòÉ
  5174.  
  5175. The Mouse option of the Help pull-down displays information about using the 
  5176. mouse. 
  5177.  
  5178.  
  5179. ΓòÉΓòÉΓòÉ 9.8.4. General Help ΓòÉΓòÉΓòÉ
  5180.  
  5181. The General Help option of the Help pull-down displays information about the 
  5182. contents of this window. 
  5183.  
  5184.  
  5185. ΓòÉΓòÉΓòÉ 9.8.5. Product Information ΓòÉΓòÉΓòÉ
  5186.  
  5187. The Product Information option of the Help pull-down displays a dialog box 
  5188. which tells the version of the program. 
  5189.  
  5190.  
  5191. ΓòÉΓòÉΓòÉ 10. Detail Window ΓòÉΓòÉΓòÉ
  5192.  
  5193. The Detail window shows information about specific areas in either OS/2 system 
  5194. or application memory. There are a number of different window contents, all 
  5195. displayed in this same generic window class. The initial window size computed 
  5196. by the program is: 
  5197.  
  5198. o The width of the longest line (not to exceed the screen width) 
  5199. o The height of the data (not more than 3/4 of the screen height). 
  5200.  
  5201. THESEUS2 knows how to format many control blocks. These are pointed to by 
  5202. hyperblock links. The section Selecting a Hyperblock Link tells how to use the 
  5203. hyperblock links. The section Keys tells how to use the keyboard. 
  5204.  
  5205. Options available on the Detail window are: 
  5206.  
  5207. Functions     Viewing memory in various hex formats or control working set 
  5208.               computations. 
  5209. Output        Sending output to a file or printer. 
  5210. Mark/Find     Doing the clipboard and general string finding functions. 
  5211. Misc          Changing window processing controls and font specification. 
  5212. Help          Lists the help functions. 
  5213.  
  5214.  
  5215. ΓòÉΓòÉΓòÉ 10.1. Selecting a Hyperblock Link ΓòÉΓòÉΓòÉ
  5216.  
  5217. You may select a hyperblock link address in either of two ways: 
  5218.  
  5219. o Place the mouse pointer over a hyperblock link address and press button 1. 
  5220.  
  5221. o Use the arrow keys: 
  5222.  
  5223.    Left Arrow       Moves to the previous hyperblock link address. 
  5224.    Right Arrow      Moves to the next hyperblock link address. 
  5225.    Up Arrow         Moves to the hyperblock link address in the previous line. 
  5226.                     This attempts to stay in the same data column. If not 
  5227.                     possible, then the last hyperblock link address on the line 
  5228.                     is selected. 
  5229.    Down Arrow       Moves to the hyperblock link address in the next line. This 
  5230.                     attempts to stay in the same data column. If not possible, 
  5231.                     then the last hyperblock link address on the line is 
  5232.                     selected. 
  5233.  
  5234. If no hyperblock link address is selected, pressing any arrow key will select 
  5235. the first one. 
  5236.  
  5237.  
  5238. ΓòÉΓòÉΓòÉ 10.2. Keys ΓòÉΓòÉΓòÉ
  5239.  
  5240. The key assignments in a Detail window are: 
  5241.  
  5242. Left Arrow       Moves to the previous hyperblock link address. 
  5243. Right Arrow      Moves to the next hyperblock link address. 
  5244. Up Arrow         Moves to the hyperblock link address in the previous line. 
  5245.                  This attempts to stay in the same data column. If not 
  5246.                  possible, then the last hyperblock link address on the line is 
  5247.                  selected. 
  5248. Down Arrow       Moves to the hyperblock link address in the next line. This 
  5249.                  attempts to stay in the same data column. If not possible, 
  5250.                  then the last hyperblock link address on the line is selected. 
  5251. Alt+Left         Scrolls the window information left. 
  5252. Alt+Right        Scrolls the window information right. 
  5253. Alt+Up           Scrolls the window information up. 
  5254. Alt+Down         Scrolls the window information down. 
  5255. Page Up          Scrolls the window information up 1/2 the screen height. 
  5256. Page Down        Scrolls the window information down 1/2 the screen height. 
  5257. Home             Moves the window so that the top left corner is displayed. 
  5258. End              Moves the window so that the bottom right corner is displayed. 
  5259. Print Screen     Prints the contents of the window. 
  5260. Ctrl-A           Performs the "Find again" function. 
  5261. Ctrl-F           Displays the "Find..." dialog. 
  5262. Ctrl-S           Displays the "Save As..." dialog. 
  5263. F1               Requests contextual help. 
  5264. F3               Closes the Detail window. 
  5265. Shift-F10        Displays a popup menu. 
  5266. Enter            Formats the data at the selected address. (This is the same as 
  5267.                  double-clicking mouse button 1.) 
  5268.  
  5269.  
  5270. ΓòÉΓòÉΓòÉ 10.3. Functions ΓòÉΓòÉΓòÉ
  5271.  
  5272. The Functions pull-down has options that allow displaying more information 
  5273. about items in the current display. 
  5274.  
  5275. Functions available are: 
  5276.  
  5277. Show memory at linear address... 
  5278.           Presents a dialog to allow display of memory at a specified linear 
  5279.           address. 
  5280. Show memory at virtual address... 
  5281.           Presents a dialog to allow display of memory at a specified virtual 
  5282.           address. 
  5283. Show memory at physical address... 
  5284.           Presents a dialog to allow display of memory at a specified physical 
  5285.           address. 
  5286. Show selected address formatted 
  5287.           Shows the selected address as a formatted control block. 
  5288. Show description... 
  5289.           Displays a "description" of the memory object. 
  5290. Memory Object Leak Detection 
  5291.           Performs memory leak detection on a single memory object. 
  5292. Working Set Parameters... 
  5293.           Presents a dialog to specify data collection parameters. 
  5294. Working Set Start 
  5295.           Starts collecting the working set information. 
  5296. Working Set Stop 
  5297.           Stops collecting the working set information and provide a summary. 
  5298. Show detail by Page 
  5299.           Shows which pages made up the summary data in the window. 
  5300. Show detail by Object 
  5301.           Shows which objects made up the summary data in the window. 
  5302. Show summary by Process 
  5303.           Show a summary of the working set information, summarized by process. 
  5304. Leak Detection Control... 
  5305.           Presents a dialog to specify leak detection parameters. 
  5306. Start Periodic Leak Detection 
  5307.           Starts performing leak detection on a periodic basis. 
  5308. Stop Periodic Leak Detection 
  5309.           Stops the periodic leak detection. 
  5310. Capture Leak Reference Data 
  5311.           Manually captures leak detection data. 
  5312. Compare Present Leak Data 
  5313.           Compares current leak detection data with last captured data. 
  5314.  
  5315.  
  5316. ΓòÉΓòÉΓòÉ 10.3.1. Show memory at linear address... ΓòÉΓòÉΓòÉ
  5317.  
  5318. The Show memory at linear address dialog of the Functions pull-down on the 
  5319. Detail window allows you to display memory at a specified linear address for a 
  5320. specified number of bytes. Various formatting options are available: 
  5321.  
  5322. o bytes 
  5323. o words 
  5324. o doublewords 
  5325. o disassembled instructions. 
  5326.  
  5327.  
  5328. ΓòÉΓòÉΓòÉ <hidden> Address (in hex) of the area to display. ΓòÉΓòÉΓòÉ
  5329.  
  5330. This option specifies the linear address (in hexadecimal) of the memory to be 
  5331. displayed. 
  5332.  
  5333. The default value is the selected hyperblock link, if one is selected. 
  5334.  
  5335.  
  5336. ΓòÉΓòÉΓòÉ <hidden> Number of bytes (in hex) to display. ΓòÉΓòÉΓòÉ
  5337.  
  5338. This option specifies the number of bytes (in hexadecimal) you wish displayed. 
  5339.  
  5340.  
  5341. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "bytes". ΓòÉΓòÉΓòÉ
  5342.  
  5343. This option displays the memory as bytes. Each byte is formatted in 
  5344. hexadecimal. 
  5345.  
  5346. Additionally, the memory is formatted in ASCII. Unprintable characters are 
  5347. printed as a period (.). 
  5348.  
  5349. The width specification controls the number of bytes presented on each line. 
  5350.  
  5351.  
  5352. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "words". ΓòÉΓòÉΓòÉ
  5353.  
  5354. This option displays the memory as words (2 bytes). Each word is "byte 
  5355. reversed" and then formatted in hexadecimal. 
  5356.  
  5357. Additionally, the memory is formatted in ASCII, without "byte reversal." 
  5358. Unprintable characters are printed as a period (.). 
  5359.  
  5360.  
  5361. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "doublewords". ΓòÉΓòÉΓòÉ
  5362.  
  5363. This option displays the memory as doublewords (4 bytes). Each doubleword is 
  5364. "byte reversed" and then formatted in hexadecimal. 
  5365.  
  5366. Additionally, the memory is formatted in ASCII, without "byte reversal." 
  5367. Unprintable characters are printed as a period (.). 
  5368.  
  5369.  
  5370. ΓòÉΓòÉΓòÉ <hidden> Show the memory as disassembled instructions. ΓòÉΓòÉΓòÉ
  5371.  
  5372. This option displays the memory as disassembled instructions. 
  5373.  
  5374. The memory is presented: 
  5375.  
  5376.  1. in bytes 
  5377.  2. in ASCII 
  5378.  3. as disassembled instructions. 
  5379.  
  5380. The default instruction type may be specified with the Code is 32-bit option. 
  5381.  
  5382.  
  5383. ΓòÉΓòÉΓòÉ <hidden> Code is 32-bit. ΓòÉΓòÉΓòÉ
  5384.  
  5385. This option specifies that the instructions being disassembled are 32-bit 
  5386. instructions. If this option is not selected, the instructions are assumed to 
  5387. be 16-bit. 
  5388.  
  5389.  
  5390. ΓòÉΓòÉΓòÉ <hidden> Number of bytes (in hex) per line. ΓòÉΓòÉΓòÉ
  5391.  
  5392. If you choose to "format in bytes," you can additionally select the number of 
  5393. bytes to be displayed on each line. This makes it easier to look at arrays, 
  5394. since each entry can be placed on a separate line. 
  5395.  
  5396. The default is 10 (hexadecimal) bytes per line. 
  5397.  
  5398.  
  5399. ΓòÉΓòÉΓòÉ 10.3.2. Show memory at virtual address... ΓòÉΓòÉΓòÉ
  5400.  
  5401. The Show memory at virtual address dialog of the Functions pull-down on the 
  5402. Detail window allows you to display memory at a specified selector:offset for a 
  5403. specified number of bytes. Various formatting options are available: 
  5404.  
  5405. o bytes 
  5406. o words 
  5407. o doublewords 
  5408. o disassembled instructions 
  5409.  
  5410.  
  5411. ΓòÉΓòÉΓòÉ <hidden> Selector (in hex) of Segment. ΓòÉΓòÉΓòÉ
  5412.  
  5413. This option specifies the selector portion (in hexadecimal) of the virtual 
  5414. address of the memory to be displayed. 
  5415.  
  5416. The default value is the selector portion of the selected hyperblock link, if 
  5417. one is selected. 
  5418.  
  5419.  
  5420. ΓòÉΓòÉΓòÉ <hidden> Offset (in hex) of Segment. ΓòÉΓòÉΓòÉ
  5421.  
  5422. This option specifies the offset portion (in hexadecimal) of the virtual 
  5423. address of the memory to be displayed. 
  5424.  
  5425. The default value is the offset portion of the selected hyperblock link, if one 
  5426. is selected. 
  5427.  
  5428.  
  5429. ΓòÉΓòÉΓòÉ <hidden> Number of bytes (in hex) to display. ΓòÉΓòÉΓòÉ
  5430.  
  5431. This option specifies the number of bytes (in hex) you wish displayed. 
  5432.  
  5433. If a hyperblock link has been selected and the selector is valid, the length 
  5434. will default to the length of the segment. 
  5435.  
  5436. If a hyperblock link has not been selected, the length will default to the 
  5437. "double-click length" for the window. 
  5438.  
  5439.  
  5440. ΓòÉΓòÉΓòÉ <hidden> Show the memory as "bytes". ΓòÉΓòÉΓòÉ
  5441.  
  5442. This option displays the memory as bytes. Each byte is formatted in 
  5443. hexadecimal. 
  5444.  
  5445. Additionally, the memory is formatted in ASCII. Unprintable characters are 
  5446. printed as a period (.). 
  5447.  
  5448.  
  5449. ΓòÉΓòÉΓòÉ <hidden> Show the memory as disassembled instructions. ΓòÉΓòÉΓòÉ
  5450.  
  5451. This option displays the memory as disassembled instructions. 
  5452.  
  5453. The memory is presented: 
  5454.  
  5455.  1. in bytes 
  5456.  2. in ASCII 
  5457.  3. as disassembled instructions. 
  5458.  
  5459. The default instruction type may be specified with the Code is 32-bit option. 
  5460.  
  5461.  
  5462. ΓòÉΓòÉΓòÉ <hidden> Code is 32-bit. ΓòÉΓòÉΓòÉ
  5463.  
  5464. Select this option if the instructions being disassembled are 32-bit 
  5465. instructions. If this option is not selected, the instructions are assumed to 
  5466. be 16-bit. 
  5467.  
  5468. If a hyperblock link has been selected and the selector is valid, the type will 
  5469. default to the type of the segment. 
  5470.  
  5471.  
  5472. ΓòÉΓòÉΓòÉ 10.3.3. Show memory at physical address... ΓòÉΓòÉΓòÉ
  5473.  
  5474. The Show memory at physical address dialog of the Functions pull-down on the 
  5475. Detail window allows you to display memory at a specified physical address for 
  5476. a specified number of bytes. Various formatting options are available: 
  5477.  
  5478. o bytes 
  5479. o words 
  5480. o doublewords 
  5481. o disassembled instructions 
  5482.  
  5483.  
  5484. ΓòÉΓòÉΓòÉ <hidden> Address (in hex) of the area to display. ΓòÉΓòÉΓòÉ
  5485.  
  5486. This option specifies the physical address (in hexadecimal) of the memory to be 
  5487. displayed. 
  5488.  
  5489. The default value is the selected hyperblock link, if one is selected. 
  5490.  
  5491.  
  5492. ΓòÉΓòÉΓòÉ 10.3.4. Show selected address formatted ΓòÉΓòÉΓòÉ
  5493.  
  5494. When a hyperblock link address is selected, the memory may be displayed either 
  5495. by double-clicking mouse button 1 or by selecting this option on the menu. The 
  5496. memory is displayed formatted by its control block type, if THESEUS2 knows the 
  5497. format. 
  5498.  
  5499.  
  5500. ΓòÉΓòÉΓòÉ <hidden> Show selected address in hex ΓòÉΓòÉΓòÉ
  5501.  
  5502. When a hyperblock link address is selected, this option displays the memory in 
  5503. hexadecimal. 
  5504.  
  5505.  
  5506. ΓòÉΓòÉΓòÉ <hidden> Describe the selected address ΓòÉΓòÉΓòÉ
  5507.  
  5508. When a hyperblock link address has been selected, this option displays the 
  5509. "description" of the memory represented by the address. 
  5510.  
  5511.  
  5512. ΓòÉΓòÉΓòÉ 10.3.5. Show description... ΓòÉΓòÉΓòÉ
  5513.  
  5514. The Show description of an object option of the Functions pull-down on the 
  5515. Detail window allows you to display the "description" of a memory object. 
  5516.  
  5517. The object address can be specified as being referenced by: 
  5518.  
  5519. o linear address 
  5520. o virtual address 
  5521. o physical address 
  5522. o har 
  5523. o hob. 
  5524.  
  5525.  
  5526. ΓòÉΓòÉΓòÉ <hidden> Address of object to be described ΓòÉΓòÉΓòÉ
  5527.  
  5528. Specify the address of the object to be "described." It can be: 
  5529.  
  5530. o linear address 
  5531. o virtual address 
  5532. o physical address 
  5533. o har 
  5534. o hob. 
  5535.  
  5536.  
  5537. ΓòÉΓòÉΓòÉ <hidden> Describe a linear object ΓòÉΓòÉΓòÉ
  5538.  
  5539. The address specified is a linear address. 
  5540.  
  5541.  
  5542. ΓòÉΓòÉΓòÉ <hidden> Describe a virtual object ΓòÉΓòÉΓòÉ
  5543.  
  5544. The address specified is a virtual address. Specify the selector of the 
  5545. segment. 
  5546.  
  5547.  
  5548. ΓòÉΓòÉΓòÉ <hidden> Describe a physical object ΓòÉΓòÉΓòÉ
  5549.  
  5550. The address specified is a physical address. 
  5551.  
  5552.  
  5553. ΓòÉΓòÉΓòÉ <hidden> Describe an object, given the HAR ΓòÉΓòÉΓòÉ
  5554.  
  5555. The address specified is a har. 
  5556.  
  5557.  
  5558. ΓòÉΓòÉΓòÉ <hidden> Describe an object, given the HOB ΓòÉΓòÉΓòÉ
  5559.  
  5560. The address specified is a hob. 
  5561.  
  5562.  
  5563. ΓòÉΓòÉΓòÉ 10.3.6. Memory Object Leak Detection ΓòÉΓòÉΓòÉ
  5564.  
  5565. Select one: 
  5566.  
  5567. Selecting 
  5568.  
  5569. Example Output 
  5570.  
  5571. Contents of Display 
  5572.  
  5573. Related Topics 
  5574.  
  5575.  
  5576. ΓòÉΓòÉΓòÉ <hidden> Selecting the Memory Object Leak Detection Display ΓòÉΓòÉΓòÉ
  5577.  
  5578. When you select the Memory Object Leak Detection option of the Functions 
  5579. pull-down on a Detail window, information about the changes of state of 
  5580. individual pages of the specified memory object are shown. 
  5581.  
  5582. This option is available only if you have selected a Hyperblock link linear 
  5583. address. 
  5584.  
  5585.  
  5586. ΓòÉΓòÉΓòÉ <hidden> Example of the Memory Object Leak Detection Display ΓòÉΓòÉΓòÉ
  5587.  
  5588. Leak detection for Process with PID = 067C, name = THESEUS2,
  5589.   memory object linear = 00010000, object has 48 pages:
  5590. < End of THESEUS2 (v 2.0p) output @ 15:57:38 on 5-16-1993 >
  5591. Use the 'Function' pull-down to start and stop the data collection.
  5592. Leak data captured.
  5593. Periodic update started with interval of 10 seconds.
  5594. < End of THESEUS2 (v 2.0p) output @ 15:57:41 on 5-16-1993 >
  5595. address    old state     new state
  5596. 00026000   not-present   present
  5597. < End of THESEUS2 (v 2.0p) output @ 15:57:51 on 5-16-1993 >
  5598.  
  5599. If the Show all page states option is chosen, then the following is produced: 
  5600.  
  5601. old pppppppppppppllllpplpppllllllplllplpplpppppppp
  5602. new pppppppppppppllllpplpppppllllplllplpplpppppppp
  5603. dif .......................AB.....................
  5604. dif address    old state     new state
  5605. A:  00027000   to be loaded  present
  5606. B:  00028000   to be loaded  present
  5607. < End of THESEUS2 (v 2.0p) output @ 15:58:01 on 5-16-1993 >
  5608.  
  5609.  
  5610. ΓòÉΓòÉΓòÉ <hidden> Contents of the Memory Object Leak Detection Display ΓòÉΓòÉΓòÉ
  5611.  
  5612. The information presented on the Memory Object Leak Detection display is as 
  5613. follows: 
  5614.  
  5615. If the Show all page states option is chosen, then the following information is 
  5616. produced: 
  5617.  
  5618. old  The states of each page in the memory object in the reference data: 
  5619.  
  5620.    .  The page was uncommitted. 
  5621.    ?  The page was a special system page. 
  5622.    a  The page was an "allocate on demand" page. 
  5623.    c  The page was claimable. 
  5624.    i  The page was idle. 
  5625.    l  The page was a "to be loaded" page. 
  5626.    p  The page was present. 
  5627.    r  The page was resident. 
  5628.    s  The page was swapped. 
  5629.    u  The page was a UVirt page. 
  5630. new  The states of each page in the memory object in the current data. The 
  5631.      state codes are the same as the old line. 
  5632. dif  The pages which have different states are marked with a letter: 
  5633.  
  5634.    .  The page state did not change. 
  5635.    A  The page changed state. The letter shown is different for each page which 
  5636.       changed state. The letter is repeated on the appropriate line of the 
  5637.       summary information. 
  5638.  
  5639. Uncommitted pages at the end of the memory object are not shown, in order to 
  5640. reduce clutter on the screen. 
  5641.  
  5642. Summary information is always presented: 
  5643.  
  5644. Column       Meaning 
  5645. address      The linear address of the page which has changed state. 
  5646. old state    The state the page had in the reference data. 
  5647.  
  5648.    uncommitted    The page was uncommitted. 
  5649.    special        The page was a special system page. 
  5650.    allocate on demand The page was an "allocate on demand" page. 
  5651.    claimable      The page was claimable. 
  5652.    idle           The page was idle. 
  5653.    to be loaded   The page was a "to be loaded" page. 
  5654.    present        The page was present. 
  5655.    resident       The page was resident. 
  5656.    swapped        The page was swapped. 
  5657.    UVirt          The page was a UVirt page. 
  5658. new state    The state the page has in the current data. The states are the 
  5659.              same as the old state column. 
  5660.  
  5661.  
  5662. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5663.  
  5664. o Memory addressing 
  5665.  
  5666. o Memory states 
  5667.  
  5668. o Leak detection control 
  5669.  
  5670. o Manual data capture 
  5671.  
  5672. o Manual data compare 
  5673.  
  5674.  
  5675. ΓòÉΓòÉΓòÉ 10.3.7. Working Set Parameters... ΓòÉΓòÉΓòÉ
  5676.  
  5677. The Working Set Parameters dialog of the Functions pull-down on the Working Set 
  5678. Detail window allows you to specify the data-collection parameters used during 
  5679. working set calculations. The parameters that can be specified are: 
  5680.  
  5681. o Data collection interval 
  5682. o Number of intervals in Working Set 
  5683. o Include 'System' pages 
  5684. o Show data at each interval 
  5685. o Save as defaults 
  5686. o Results presented in. 
  5687.  
  5688.  
  5689. ΓòÉΓòÉΓòÉ <hidden> Number of seconds per sample interval ΓòÉΓòÉΓòÉ
  5690.  
  5691. This option specifies the number of seconds for each working set data 
  5692. collection interval. 
  5693.  
  5694. The default is 5 seconds. The maximum value is 99 seconds. 
  5695.  
  5696. This value is specified in decimal. 
  5697.  
  5698.  
  5699. ΓòÉΓòÉΓòÉ <hidden> Specify the number of intervals for Working Set ΓòÉΓòÉΓòÉ
  5700.  
  5701. This option specifies the number of intervals (n) that constitute the working 
  5702. set. If a page has been accessed within the last n intervals, then it is 
  5703. considered to be within the working set. 
  5704.  
  5705. The default is 12 intervals (times the default interval of 5 seconds = 60 
  5706. seconds). 
  5707.  
  5708. This value is specified in decimal. 
  5709.  
  5710. This value can be changed while the data collection is running. 
  5711.  
  5712.  
  5713. ΓòÉΓòÉΓòÉ <hidden> Include 'System' pages ΓòÉΓòÉΓòÉ
  5714.  
  5715. If this option is selected, the system arena is included in the calculations. 
  5716.  
  5717. CAUTION:
  5718. This option is not recommended. Many system pages are referenced by THESEUS2 
  5719. while it is doing the data collection and reduction, and it is impossible to 
  5720. differentiate between them and the ones referenced by the application of 
  5721. interest, so this tends to confuse the actual answers. 
  5722.  
  5723.  
  5724. ΓòÉΓòÉΓòÉ <hidden> Show data at each interval ΓòÉΓòÉΓòÉ
  5725.  
  5726. This option displays the results each interval. 
  5727.  
  5728. The changes in the working set during the running of a scenario are usually 
  5729. more interesting than the summary results. 
  5730.  
  5731. This option can be changed while the data collection is occurring. 
  5732.  
  5733.  
  5734. ΓòÉΓòÉΓòÉ <hidden> Save as defaults ΓòÉΓòÉΓòÉ
  5735.  
  5736. When this option is selected, the input values become the defaults for the 
  5737. working set parameters on subsequent creations of the working set window. 
  5738.  
  5739.  
  5740. ΓòÉΓòÉΓòÉ <hidden> Results presented in: ΓòÉΓòÉΓòÉ
  5741.  
  5742. The results can be presented in either: 
  5743.  
  5744. o Pages 
  5745. o Kilobytes 
  5746. o Megabytes 
  5747.  
  5748.  
  5749. ΓòÉΓòÉΓòÉ <hidden> Pages ΓòÉΓòÉΓòÉ
  5750.  
  5751. This option presents the results as the number of pages of memory used. 
  5752.  
  5753.  
  5754. ΓòÉΓòÉΓòÉ <hidden> Kilobytes ΓòÉΓòÉΓòÉ
  5755.  
  5756. This option presents the results as the number of kilobytes of memory used. 
  5757.  
  5758.  
  5759. ΓòÉΓòÉΓòÉ <hidden> Megabytes ΓòÉΓòÉΓòÉ
  5760.  
  5761. This option presents the results as the number of megabytes of memory used. 
  5762.  
  5763.  
  5764. ΓòÉΓòÉΓòÉ 10.3.8. Working Set Start ΓòÉΓòÉΓòÉ
  5765.  
  5766. This option starts collecting the information required to determine memory 
  5767. working set. 
  5768.  
  5769.  
  5770. ΓòÉΓòÉΓòÉ 10.3.9. Working Set Stop ΓòÉΓòÉΓòÉ
  5771.  
  5772. This option stops collecting the information required to determine memory 
  5773. working set. A final data-collection cycle occurs before the results are 
  5774. analyzed and displayed. 
  5775.  
  5776.  
  5777. ΓòÉΓòÉΓòÉ <hidden> Detail of Working Set (by Page) ΓòÉΓòÉΓòÉ
  5778.  
  5779. Select one: 
  5780.  
  5781. Selecting 
  5782.  
  5783. Example Output 
  5784.  
  5785. Contents of Display 
  5786.  
  5787. Related Topics 
  5788.  
  5789.  
  5790. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail of Working Set (by Page) display ΓòÉΓòÉΓòÉ
  5791.  
  5792. When you select the Show detail by Page option of the Functions pull-down on 
  5793. the Working Set Detail window, detail information about the working set is 
  5794. shown. Specifically, the pages referenced since the working set sampling began 
  5795. are shown. 
  5796.  
  5797.  
  5798. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail of Working Set (by Page) Display ΓòÉΓòÉΓòÉ
  5799.  
  5800. Working Set detail for the Process with PID = 000E, name = 'THESEUS2':
  5801. Physical   hob  Time  State   Type     Description
  5802. 00060000  0382     1  A       DLL      SYSMONO  #0004 (shared)
  5803. 00068000  0383     1  A       Private  THESEUS2 allocated it
  5804. 0006C000  0362     1  A       Private  THESEUS2 #0001 (shared)
  5805. ┬╖┬╖┬╖
  5806. 00DCA000  00B3     1  A       DLL      DOSCALL1 #0005 (shared)
  5807. 00DE4000  031E     1  A       DLL      PMGRE    allocated it
  5808.  
  5809.   142 pages were marked 'A' (Accessed).
  5810.    17 pages were marked 'L' (Locked).
  5811.     0 pages were marked 'R' (Resident).
  5812. There were a total of 145 pages reported.
  5813.  
  5814.  
  5815. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail of Working Set (by Page) display ΓòÉΓòÉΓòÉ
  5816.  
  5817. One line is displayed for each page in the working set: 
  5818.  
  5819. Column        Meaning 
  5820. Physical      The physical address of the page. 
  5821. hob           The hob of the memory object that this page is a part of. 
  5822. Time          Number of time intervals (in decimal) since the page was 
  5823.               referenced. A value of 1 indicates that the page was touched in 
  5824.               the last interval before data capturing was stopped. A value of 2 
  5825.               indicates that the page was touched in the next-to-last interval 
  5826.               before data capturing was stopped. 
  5827. State         The state of this page: 
  5828.  
  5829.    A  The page has been accessed during the run. 
  5830.    L  The page is locked. 
  5831.    R  The page is resident. 
  5832.    F  The page is now free. 
  5833.    I  The page is idle 
  5834.    B  The page has a "bad hob" The hob value is too large to be able to access 
  5835.       the Object Record in the Object Table. 
  5836. Type          (This is only on the display if it was generated from a Working 
  5837.               Set for a Process display.) The type of object that this page is 
  5838.               a part of. The values are: 
  5839.  
  5840.    System         The page is from the system arena. 
  5841.    Private        The page is from the private arena, is an instance object 
  5842.                   from a system DLL, or is an object from a DLL which is not a 
  5843.                   system DLL. 
  5844.    DLL            The page is from the shared arena and is for a system DLL. 
  5845.                   The system DLLs are those that are part of the system and are 
  5846.                   not considered to be part of the application. 
  5847.    Error          An error has occurred while processing the page. The hob may 
  5848.                   be out of range. The page was assigned to the system. 
  5849. Description   A description in English of the object that the page is a part 
  5850.               of. 
  5851.  
  5852. A summary of the number of pages in each page State is given. Then the total 
  5853. number of pages reported is given. (Since a page may be in multiple states, the 
  5854. total of the pages in each state is probably not the same as the total 
  5855. reported.) 
  5856.  
  5857.  
  5858. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5859.  
  5860. o Memory analysis 
  5861.  
  5862. o Memory addressing 
  5863.  
  5864. o System Working Set 
  5865.  
  5866.  
  5867. ΓòÉΓòÉΓòÉ <hidden> Detail of Working Set (by Object) ΓòÉΓòÉΓòÉ
  5868.  
  5869. Select one: 
  5870.  
  5871. Selecting 
  5872.  
  5873. Example Output 
  5874.  
  5875. Contents of Display 
  5876.  
  5877. Related Topics 
  5878.  
  5879.  
  5880. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail of Working Set (by Object) display ΓòÉΓòÉΓòÉ
  5881.  
  5882. When you select the Show detail by Object option of the Functions pull-down on 
  5883. the Working Set Detail window, detail information about the working set is 
  5884. shown. Specifically, all the memory objects from the private arena are shown, 
  5885. along with ones from the shared and system arenas that have had pages 
  5886. referenced since the run began. 
  5887.  
  5888.  
  5889. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail of Working Set (by Object) Display ΓòÉΓòÉΓòÉ
  5890.  
  5891. Working Set detail for the Process with PID = 0060, name = 'THESEUS2':
  5892. Objects from the 'private' arena:
  5893.                  ---accessed---     pages in   avg.
  5894.   linear   hob      no      yes  working set   time  Description
  5895. 00010000  04CF      32       18           18    1.1  THESEUS2 #0001 (shared code)
  5896. 00050000  047C      21        8            8    1    THESEUS2 #0002 (private)
  5897. 00070000  0475       1        0            0          User Environment (hmte)
  5898. ┬╖┬╖┬╖
  5899. 01C80000  048F       1        0            0          THESEUS2 allocated it
  5900.                     92       44           44    1.0  Total
  5901.  
  5902. Objects from the 'shared' arena:
  5903.                  ---accessed---     pages in   avg.
  5904.   linear   hob      no      yes  working set   time  Description
  5905. 16350000  04DF       0        1            1    1    THESEUS2 allocated it
  5906. 163E0000  04BB       1        1            1    1    SYSMONO  #0004 (shared data)
  5907. 16420000  04AE       0        1            1    1    PMGRE    allocated it
  5908. ┬╖┬╖┬╖
  5909. 1BFF0000  0074       0        1            1    1    infoseg (local or global) (owner)
  5910.                   1052      254          254    1.0  Total
  5911.  
  5912. Objects from the 'system' arena:
  5913.                  ---accessed---     pages in   avg.
  5914.   linear   hob      no      yes  working set   time  Description
  5915. 7DC00000  002A       5       13           13    1    PG Compat. region page table (owner)
  5916.                      5       13           13    1.0  Total
  5917.  
  5918.  
  5919. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail of Working Set (by Object) Display ΓòÉΓòÉΓòÉ
  5920.  
  5921. One line is displayed for each object: 
  5922.  
  5923. Column            Meaning 
  5924. linear            The linear address of the memory object. 
  5925. hob               The hob of the memory object. 
  5926. accessed - no     The number of pages that are committed in the object that 
  5927.                   were not accessed since the start of the run. 
  5928. accessed - yes    The number of pages that are committed in the object that 
  5929.                   were accessed since the start of the run. 
  5930. pages in working set The number of pages that were in the working set. 
  5931. avg. time         The average number of intervals since the pages were 
  5932.                   accessed. If all the pages were accessed at the same time, 
  5933.                   the time is output without a decimal point. 
  5934. Description       A description in English of the object. 
  5935.  
  5936. The totals for each arena is shown at the end of the arena's output. 
  5937.  
  5938.  
  5939. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  5940.  
  5941. o Memory analysis 
  5942.  
  5943. o Memory addressing 
  5944.  
  5945. o System Working Set 
  5946.  
  5947. o Summary by Process 
  5948.  
  5949.  
  5950. ΓòÉΓòÉΓòÉ 10.3.10. Show detail by Page ΓòÉΓòÉΓòÉ
  5951.  
  5952. Which display is presented depends on the Detail window from which this option 
  5953. is selected: 
  5954.  
  5955. Working Set window 
  5956. Swapper window 
  5957.  
  5958.  
  5959. ΓòÉΓòÉΓòÉ 10.3.11. Show detail by Object ΓòÉΓòÉΓòÉ
  5960.  
  5961. Which display is presented depends on the Detail window from which this option 
  5962. is selected: 
  5963.  
  5964. Working Set window 
  5965.  
  5966.  
  5967. ΓòÉΓòÉΓòÉ 10.3.12. Summary by Process ΓòÉΓòÉΓòÉ
  5968.  
  5969. Select one: 
  5970.  
  5971. Selecting 
  5972.  
  5973. Example Output 
  5974.  
  5975. Contents of Display 
  5976.  
  5977. Related Topics 
  5978.  
  5979.  
  5980. ΓòÉΓòÉΓòÉ <hidden> Selecting the Summary by Process display ΓòÉΓòÉΓòÉ
  5981.  
  5982. When you select the Show summary by process option of the Functions pull-down 
  5983. on the System Working Set Detail window, summary information about the working 
  5984. set is shown. Specifically, the amount of memory, both private and shared, used 
  5985. by each process is shown, along with the amount used from the system and shared 
  5986. arenas. 
  5987.  
  5988.  
  5989. ΓòÉΓòÉΓòÉ <hidden> Example of the Summary by Process Display ΓòÉΓòÉΓòÉ
  5990.  
  5991. Working Set summary for the System (by Process):
  5992. -------- Private --------- ---------- Shared ---------
  5993. - Accessed - Working  Avg. - Accessed - Working  Avg.
  5994.     No    Yes    set  time     No    Yes    set  time  PID Process name
  5995.      0      2      2   1.0      0      0      0       0002 LOGDAEM
  5996.     21      8      8   1.3      0      4      4   1.5 0004 PMSHL32
  5997.      4      2      2   2.0      0      0      0       0006 SPMSNAPL
  5998.     41     37     37   1.5      0      0      0       0009 VDM
  5999.     50     10     10   1.0      0      0      0       000A SPM
  6000.     32     43     43   1.9      1      6      6   2.0 000C SPMMON
  6001.    103     19     19   1.6      0      0      0       000D SPMILOG
  6002.     81     20     20   2.0      0      0      0       000E SPMDCF
  6003.      9     23     23   1.2      0      3      3   2.0 001F IPFCPREP
  6004.     57     41     41   1.3      0      3      3   1.0 0020 THESEUS2
  6005.    268   1370   1370   1.0   1071    292    292   1.7      System
  6006. ------ ------ ------       ------ ------ ------
  6007.    666   1575   1575         1072    308    308            Totals
  6008.             2      2   Free RAM
  6009. ------ ------ ------
  6010.   1738   1885   1885   Pvt + Shr + Free
  6011.  
  6012.  
  6013. ΓòÉΓòÉΓòÉ <hidden> Contents of the Summary by Process Display ΓòÉΓòÉΓòÉ
  6014.  
  6015. One line is displayed for each process: 
  6016.  
  6017. Column            Meaning 
  6018. Private           Memory from the private arena. For the System line, this is 
  6019.                   memory from the system arena. 
  6020. Shared            Instance data from the shared arena. For the System line, 
  6021.                   this is shared memory from the shared arena. 
  6022. Accessed - No     The number of pages that are committed in the objects for 
  6023.                   this process that were not accessed since the start of the 
  6024.                   run. 
  6025. Accessed - Yes    The number of pages that are committed in the objects for 
  6026.                   this process that were accessed since the start of the run. 
  6027. Working set       The number of pages that were in the working set. 
  6028. Avg. time         The average number of intervals since the pages were 
  6029.                   accessed. 
  6030. PID               The PID of the process for this line. 
  6031. Process name      The name of the process on this line. 
  6032.  
  6033. Totals for each column are generated and shown. 
  6034.  
  6035. The line labeled Free RAM is memory that has been accessed during the run, but 
  6036. is currently marked Free. 
  6037.  
  6038. The line labeled Pvt + Shr + Free is a total of all the data. 
  6039.  
  6040.  
  6041. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  6042.  
  6043. o Memory analysis 
  6044.  
  6045. o Memory addressing 
  6046.  
  6047. o System Working Set 
  6048.  
  6049. o Detail by Object 
  6050.  
  6051.  
  6052. ΓòÉΓòÉΓòÉ <hidden> Detail of SWAPPER.DAT (by Page) ΓòÉΓòÉΓòÉ
  6053.  
  6054. Select one: 
  6055.  
  6056. Selecting 
  6057.  
  6058. Example Output 
  6059.  
  6060. Contents of Display 
  6061.  
  6062. Related Topics 
  6063.  
  6064.  
  6065. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail of SWAPPER.DAT (by Page) display ΓòÉΓòÉΓòÉ
  6066.  
  6067. When you select the Show detail by Page option of the Functions pull-down on 
  6068. the SWAPPER.DAT Analysis Detail window, detail information about the make up of 
  6069. the SWAPPER.DAT file will be shown. Specifically, the pages that have been 
  6070. paged out are shown. 
  6071.  
  6072.  
  6073. ΓòÉΓòÉΓòÉ <hidden> Example of the SWAPPER.DAT contents (by page) Display ΓòÉΓòÉΓòÉ
  6074.  
  6075. SWAPPER.DAT contents by page:
  6076. frame        vp   hob    linear  Process  Description
  6077.  0000  FF4132EE  01C1  00030000     01BB  HARDERR  #0003 (private)
  6078.  0001  FF417966  039F  000C1000     0379  PMD      #000C (private)
  6079. ┬╖┬╖┬╖
  6080.  0020  FF41916C  03DE  00047000     03D4  THESEUS2 #0002 (private)
  6081.  0021 free
  6082.  0022  FF419194  03DE  0004B000     03D4  THESEUS2 #0002 (private)
  6083. ┬╖┬╖┬╖
  6084.  003B  FF419720  0421  18523000   shared  THESEUSR #0003 (shared)
  6085.  003C to 003F (4 frames) are free
  6086.  0040  FF40E7EE  0016  FFFB0000   system  os2krnl load image (owner)
  6087. ┬╖┬╖┬╖
  6088.  0229  FF412146  017C  19F40000 inst0114  OS2CHAR  #0000 (private)
  6089.  
  6090.  
  6091. ΓòÉΓòÉΓòÉ <hidden> Contents of the SWAPPER.DAT contents (by page) display ΓòÉΓòÉΓòÉ
  6092.  
  6093. One line is displayed for each frame in the SWAPPER.DAT file: 
  6094.  
  6095. Column         Meaning 
  6096. frame          Disk frame number.  Each frame is 4KB. 
  6097. vp             The linear address of the Virtual Page Table entry for this 
  6098.                page. 
  6099. hob            The hob of the page. 
  6100. linear         The linear address of the page. 
  6101. Process        The content of this column is dependent on the type of page: 
  6102.  
  6103.    hob            This is a page from a private arena. The value is the hob of 
  6104.                   the PTDA of the process that owns the page. 
  6105.    shared         This is a shared page from the shared arena. 
  6106.    insthob        This is an instance data page from the shared arena. The hob 
  6107.                   is for the PTDA of the process. 
  6108.    system         This is a page from the system arena. 
  6109. Description    A description in English of the object. 
  6110.  
  6111. Frames that are not in use have "free" after the frame number. If there are 
  6112. multiple free frames together, only one line is shown with the starting and 
  6113. ending frame numbers. The number of frames is also shown. 
  6114.  
  6115.  
  6116. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  6117.  
  6118. o Memory analysis 
  6119.  
  6120. o Memory addressing 
  6121.  
  6122.  
  6123. ΓòÉΓòÉΓòÉ 10.3.13. Leak Detection Control... ΓòÉΓòÉΓòÉ
  6124.  
  6125. The Leak Detection Control dialog of the Functions pull-down on the Memory Leak 
  6126. Detection Detail window allows you to control the characteristics of the leak 
  6127. detection that is taking place. The parameters that can be specified are: 
  6128.  
  6129. o Use previous sample as base. 
  6130. o Show data from next collection cycle. 
  6131. o Show all pages states. 
  6132.  
  6133.  
  6134. ΓòÉΓòÉΓòÉ <hidden> Use previous sample as base ΓòÉΓòÉΓòÉ
  6135.  
  6136. When this option is selected, each periodic update will use the data collected 
  6137. on the previous cycle as the base data against which the comparison is done. 
  6138.  
  6139. When this option is not selected, the reference data comes from: 
  6140.  
  6141. o The data collected when Start Periodic Leak Detection was selected. 
  6142. o The data collected when Capture Leak Reference Data was selected. 
  6143.  
  6144.  
  6145. ΓòÉΓòÉΓòÉ <hidden> Show data from next collection cycle ΓòÉΓòÉΓòÉ
  6146.  
  6147. When this option is selected, all the data collected is displayed, as well as 
  6148. any differences. 
  6149.  
  6150. When this option is not selected, only the differences are shown. 
  6151.  
  6152.  
  6153. ΓòÉΓòÉΓòÉ <hidden> Show all pages states ΓòÉΓòÉΓòÉ
  6154.  
  6155. When this option is selected, the state of every page in the object is shown. 
  6156. The previous state, the new state and differences are shown on three separate 
  6157. lines.  There 128 page states shown on each group of three lines. 
  6158.  
  6159. When this option is not selected, only the page differences are shown. 
  6160.  
  6161.  
  6162. ΓòÉΓòÉΓòÉ 10.3.14. Start Periodic Leak Detection ΓòÉΓòÉΓòÉ
  6163.  
  6164. This option starts a periodic update of the Memory Leak Detection window. The 
  6165. Options dialog of the Contents Update sub-menu of the Misc pull-down can be 
  6166. used to select the update interval and window update characteristics. 
  6167.  
  6168.  
  6169. ΓòÉΓòÉΓòÉ 10.3.15. Stop Periodic Leak Detection ΓòÉΓòÉΓòÉ
  6170.  
  6171. This option stops the periodic update of the Memory Leak Detection window. 
  6172.  
  6173.  
  6174. ΓòÉΓòÉΓòÉ 10.3.16. Capture Leak Reference Data ΓòÉΓòÉΓòÉ
  6175.  
  6176. This option causes memory leak detection data to be captured. It can be used 
  6177. for a later Compare Present Leak Data to generate memory leak detection data. 
  6178.  
  6179. This option can be used at any time, even when periodic updates are being done. 
  6180. This data then becomes the reference data for the next update cycle. 
  6181.  
  6182.  
  6183. ΓòÉΓòÉΓòÉ 10.3.17. Compare Present Leak Data ΓòÉΓòÉΓòÉ
  6184.  
  6185. This option causes memory leak detection data to be generated. 
  6186.  
  6187. This option can be used at any time, even when periodic updates are being done. 
  6188.  
  6189.  
  6190. ΓòÉΓòÉΓòÉ 10.4. Output ΓòÉΓòÉΓòÉ
  6191.  
  6192. The Output pull-down includes options that allow saving or printing the current 
  6193. display. 
  6194.  
  6195. Functions available are: 
  6196.  
  6197. Save as... 
  6198.           Allows saving the display to a file. 
  6199. Print all 
  6200.           Allows printing the display. 
  6201.  
  6202.  
  6203. ΓòÉΓòÉΓòÉ 10.4.1. Save as... ΓòÉΓòÉΓòÉ
  6204.  
  6205. The Save as dialog of the Output pull-down on the Detail window allows you to 
  6206. save the contents of the window to a file. 
  6207.  
  6208. To make your selections, either: 
  6209.  
  6210. o Use the mouse to point to the disk, directory, or file name 
  6211. o Use the tab key to move between the lists and the up/down arrow keys to move 
  6212.   within the list. 
  6213.  
  6214.  
  6215. ΓòÉΓòÉΓòÉ <hidden> Filename: ΓòÉΓòÉΓòÉ
  6216.  
  6217. Use this option to specify a file name. If you do not specify a fully qualified 
  6218. file name, it is qualified with the "Current Directory" displayed above it. 
  6219.  
  6220. Note:  The name is converted to upper case before using. 
  6221.  
  6222.  
  6223. ΓòÉΓòÉΓòÉ <hidden> Directories ΓòÉΓòÉΓòÉ
  6224.  
  6225. This field displays the list of disks and directories available for selection. 
  6226. Select one by either: 
  6227.  
  6228. o Double-clicking mouse button 1 
  6229. o Moving the cursor (using the up/down arrow keys) and then pressing the Enter 
  6230.   key. 
  6231. The file or directory names are retrieved and displayed. 
  6232.  
  6233.  
  6234. ΓòÉΓòÉΓòÉ <hidden> Files ΓòÉΓòÉΓòÉ
  6235.  
  6236. This field displays the list of files in the selected directory. Select one by 
  6237. single-clicking mouse button 1. 
  6238.  
  6239. Double-clicking mouse button 1 is equivalent to selecting the file name and 
  6240. pressing the "Save" key. 
  6241.  
  6242.  
  6243. ΓòÉΓòÉΓòÉ <hidden> Save ΓòÉΓòÉΓòÉ
  6244.  
  6245. When you press the Save button, the window is saved to the specified file. 
  6246.  
  6247.  
  6248. ΓòÉΓòÉΓòÉ 10.4.2. Print all ΓòÉΓòÉΓòÉ
  6249.  
  6250. The Print all option of the Output pull-down on the Detail window allows you to 
  6251. print the contents of the window. 
  6252.  
  6253. The output goes to the printer identified as PRN. 
  6254.  
  6255. If the longest line is more than 80 characters, then a "go to condensed mode" 
  6256. command (hex 15) is the first character output to the printer. Likewise, a "go 
  6257. to normal mode" command (hex 18) is the last character output to the printer. 
  6258.  
  6259.  
  6260. ΓòÉΓòÉΓòÉ 10.5. Mark/Find ΓòÉΓòÉΓòÉ
  6261.  
  6262. The Mark/Find pull-down includes options that allow text scans of the display 
  6263. window and clipboard operations. 
  6264.  
  6265. Functions available are: 
  6266.  
  6267. Find... 
  6268.           Allows finding a specified ASCII string on the display. 
  6269. Find again 
  6270.           Repeats the previous find operation, starting with the current cursor 
  6271.           location. 
  6272. Mark an area 
  6273.           Marks an area for storing into the clipboard or printing. 
  6274. Copy selection to clipboard 
  6275.           Copies the current marked area into the clipboard. 
  6276. Print selection 
  6277.           Prints only the current marked area. 
  6278.  
  6279.  
  6280. ΓòÉΓòÉΓòÉ 10.5.1. Find... ΓòÉΓòÉΓòÉ
  6281.  
  6282. The Find dialog of the Mark/Find pull-down on the Detail window allows you to 
  6283. find a specified ASCII text string in the information displayed in the window. 
  6284.  
  6285. There is one entry field on the dialog: 
  6286.  
  6287. Specify the text to be found: 
  6288.           Specify the text you wish to search for. 
  6289.  
  6290. There are two options on the dialog: 
  6291.  
  6292. Case sensitive? 
  6293.           Specify case sensitivity of the search. 
  6294. Move pointer onto found text? 
  6295.           Specify if the pointer is to be moved. 
  6296.  
  6297.  
  6298. ΓòÉΓòÉΓòÉ <hidden> Specify the text to be found: ΓòÉΓòÉΓòÉ
  6299.  
  6300. Specify the text which you wish to search for. The text must all be on one line 
  6301. in the window. There are no "wild card" nor "don't care" characters. 
  6302.  
  6303.  
  6304. ΓòÉΓòÉΓòÉ <hidden> Case sensitive? ΓòÉΓòÉΓòÉ
  6305.  
  6306. If this check box is selected, the text is searched using the supplied case. 
  6307.  
  6308. If this check box is not selected, the text is searched without regard to the 
  6309. case in both the supplied text and the window text. 
  6310.  
  6311.  
  6312. ΓòÉΓòÉΓòÉ <hidden> Move pointer onto found text? ΓòÉΓòÉΓòÉ
  6313.  
  6314. If this check box is selected, the pointer is moved to the center of the text 
  6315. which is found. 
  6316.  
  6317. If this check box is not selected, the pointer is not moved. 
  6318.  
  6319.  
  6320. ΓòÉΓòÉΓòÉ 10.5.2. Find again ΓòÉΓòÉΓòÉ
  6321.  
  6322. The Find again option of the Mark/Find pull-down on the Detail window allows 
  6323. you to continue the ASCII text scan previously started. 
  6324.  
  6325. The text scan continues from the current cursor location. 
  6326.  
  6327.  
  6328. ΓòÉΓòÉΓòÉ 10.5.3. Mark an area ΓòÉΓòÉΓòÉ
  6329.  
  6330. The Mark an area option of the Mark/Find pull-down on the Detail window allows 
  6331. you to mark a rectangle, which can then be copied into the clipboard or 
  6332. printed. 
  6333.  
  6334. The current status of this mode is denoted by a check mark on the pull-down. 
  6335. Selecting this option reverses the setting. 
  6336.  
  6337. When you select this option, the operation of the buttons on the mouse change. 
  6338. Position the pointer to one of the corners of the area to be marked. When you 
  6339. press the button, it marks one corner of the rectangle. As you drag the 
  6340. pointer, the rectangle is marked out, using the current pointer position as the 
  6341. "opposite" corner. When you release the button, the rectangle is frozen and the 
  6342. operation of the buttons reverts back to the default mode. 
  6343.  
  6344.  
  6345. ΓòÉΓòÉΓòÉ 10.5.4. Copy selection to clipboard ΓòÉΓòÉΓòÉ
  6346.  
  6347. The Copy selection to clipboard option of the Mark/Find pull-down on the Detail 
  6348. window allows you to copy the marked rectangle into the clipboard. The area can 
  6349. be either the one marked with the Mark an area option or a hyperblock link that 
  6350. has been selected. 
  6351.  
  6352. The "text" portion of the clipboard is the only one updated. 
  6353.  
  6354.  
  6355. ΓòÉΓòÉΓòÉ 10.5.5. Print selection ΓòÉΓòÉΓòÉ
  6356.  
  6357. The Print selection option of the Mark/Find pull-down on the Detail window 
  6358. allows you to send the marked rectangle to the printer. The area can be either 
  6359. the one marked with the Mark an area option or a hyperblock link that has been 
  6360. selected. 
  6361.  
  6362. The output goes to the printer identified as PRN. 
  6363.  
  6364. If the rectangle is more than 80 characters wide, then a "go to condensed mode" 
  6365. command (hex 15) is the first character output to the printer. Likewise, a "go 
  6366. to normal mode" command (hex 18) is the last character output to the printer. 
  6367.  
  6368.  
  6369. ΓòÉΓòÉΓòÉ 10.6. Misc ΓòÉΓòÉΓòÉ
  6370.  
  6371. The Misc pull-down includes options that allow control of double-click 
  6372. operations and font specification. 
  6373.  
  6374. Functions available are: 
  6375.  
  6376. Send output to the same window 
  6377.           Controls where the output from the mouse button "double-click" is 
  6378.           sent. 
  6379. Double-click options... 
  6380.           Allows control of the action taken when mouse button 1 is 
  6381.           double-clicked. 
  6382. Font for this window... 
  6383.           Specifies an alternate font for this window. 
  6384. Contents Update 
  6385.           Specifies control, start and stop of periodic updates. 
  6386.  
  6387.  
  6388. ΓòÉΓòÉΓòÉ 10.6.1. Send output to the same window ΓòÉΓòÉΓòÉ
  6389.  
  6390. The Send output to the same window option of the Control pull-down on the 
  6391. Detail window allows you to control where the output from mouse button 
  6392. "double-click" will go. 
  6393.  
  6394. When this option is chosen, "double-click" output is added to the current 
  6395. window. A check mark on the pull-down indicates this mode is active. 
  6396.  
  6397. If this option is not chosen, then "double-click" output is sent to a new 
  6398. window. No check mark appears on the pull-down when this mode is active. 
  6399.  
  6400. Initially, the option is not set. 
  6401.  
  6402.  
  6403. ΓòÉΓòÉΓòÉ 10.6.2. Double-click options... ΓòÉΓòÉΓòÉ
  6404.  
  6405. The Double-click options dialog of the Control pull-down on the Detail window 
  6406. allows you to specify the action taken when you double-click mouse button 1 
  6407. while the pointer is over the address of a control block that THESEUS2 cannot 
  6408. format. 
  6409.  
  6410. The display generated is referred to in the helps as a "General memory 
  6411. display." 
  6412.  
  6413.  
  6414. ΓòÉΓòÉΓòÉ <hidden> Modify only this window ΓòÉΓòÉΓòÉ
  6415.  
  6416. If you press this button, only the current window has its defaults changed. 
  6417.  
  6418.  
  6419. ΓòÉΓòÉΓòÉ <hidden> Modify all new windows ΓòÉΓòÉΓòÉ
  6420.  
  6421. If you press this button, the current window and all new windows have their 
  6422. defaults changed. 
  6423.  
  6424.  
  6425. ΓòÉΓòÉΓòÉ 10.6.3. Font for this Window... ΓòÉΓòÉΓòÉ
  6426.  
  6427. When you select the Font for this Window option of the Misc pull-down on the 
  6428. Detail window, you can specify a different monospace font for the Detail window 
  6429. being displayed. 
  6430.  
  6431. THESEUS2 will automatically resize the window if you have not manually changed 
  6432. the size. 
  6433.  
  6434.  
  6435. ΓòÉΓòÉΓòÉ 10.6.4. Contents Update ΓòÉΓòÉΓòÉ
  6436.  
  6437. When you select the Contents Update option of the Misc pull-down on the Detail 
  6438. window, you are presented with a sub-menu for specification of control, start 
  6439. and stop of periodic updates to this window. 
  6440.  
  6441. Note:  Not all detail windows allow periodic update. Only those that do have 
  6442. this option enabled. 
  6443.  
  6444. Functions available are: 
  6445.  
  6446. Options... 
  6447.           Presents a dialog to allow control of the update rate and window 
  6448.           update characteristics. 
  6449. Start 
  6450.           Starts the periodic update of the window contents. 
  6451. Stop 
  6452.           Stops the periodic update of the window contents. 
  6453. Refresh now 
  6454.           Causes an immediate update of the window contents. 
  6455.  
  6456.  
  6457. ΓòÉΓòÉΓòÉ 10.6.4.1. Options... ΓòÉΓòÉΓòÉ
  6458.  
  6459. The Options dialog of the Periodic Update option of the Misc pull-down on the 
  6460. Detail window allows you to control the update rate and window update 
  6461. characteristics. The options are: 
  6462.  
  6463. o Time between updates. 
  6464. o Replace window contents each time. 
  6465. o Change cursor shape while updating. 
  6466. o Scroll the screen when it is updated. 
  6467. o End of Output control: 
  6468.  
  6469.    - Never output it. 
  6470.    - Output it if data was generated. 
  6471.    - Always output it. 
  6472.  
  6473.  
  6474. ΓòÉΓòÉΓòÉ 10.6.4.1.1. Time between updates ΓòÉΓòÉΓòÉ
  6475.  
  6476. This option specifies the number of minutes and seconds for the detail window 
  6477. update interval. 
  6478.  
  6479. The default is 30 seconds. The maximum value is 999 minutes. 
  6480.  
  6481. The seconds value cannot be typed, only the spin buttons work. The granularity 
  6482. of the seconds value is determined by the minutes value as follows: 
  6483.  
  6484. Minutes     Seconds granularity 
  6485. 0           Any second, except 0. 
  6486. 1-4         5. 
  6487. 5-9         10. 
  6488. 10-999      Minutes only. 
  6489.  
  6490.  
  6491. ΓòÉΓòÉΓòÉ 10.6.4.1.2. Replace window contents each time ΓòÉΓòÉΓòÉ
  6492.  
  6493. If this option is selected, the window contents are replace at each interval. 
  6494. If this option is not selected, the update information is added to the end of 
  6495. the existing window contents. 
  6496.  
  6497.  
  6498. ΓòÉΓòÉΓòÉ 10.6.4.1.3. Change cursor shape while updating ΓòÉΓòÉΓòÉ
  6499.  
  6500. If this option is selected, the cursor is changed from the "pointer" to the 
  6501. "clock" whenever the window contents are being recomputed. 
  6502.  
  6503.  
  6504. ΓòÉΓòÉΓòÉ 10.6.4.1.4. Scroll the screen when it is updated ΓòÉΓòÉΓòÉ
  6505.  
  6506. If this option is selected, the window is scrolled so that the last line of 
  6507. data generated is displayed. 
  6508.  
  6509.  
  6510. ΓòÉΓòÉΓòÉ 10.6.4.1.5. Never output the End of Output ΓòÉΓòÉΓòÉ
  6511.  
  6512. If this option is selected, the End of Output message is never output at the 
  6513. end of the newly generated information in the window. 
  6514.  
  6515.  
  6516. ΓòÉΓòÉΓòÉ 10.6.4.1.6. Output the End of Output if data was generated ΓòÉΓòÉΓòÉ
  6517.  
  6518. If this option is selected, the End of Output message is output if there were 
  6519. other information generated in the window. 
  6520.  
  6521.  
  6522. ΓòÉΓòÉΓòÉ 10.6.4.1.7. Always output the End of Output ΓòÉΓòÉΓòÉ
  6523.  
  6524. If this option is selected, the End of Output message is always output, even if 
  6525. there were no other information generated in the window. 
  6526.  
  6527.  
  6528. ΓòÉΓòÉΓòÉ 10.6.4.2. Start ΓòÉΓòÉΓòÉ
  6529.  
  6530. This option starts a periodic update of the contents of the window. The Options 
  6531. dialog of the Periodic Update sub-menu of the Misc pull-down can be used to 
  6532. select the update interval and window update characteristics. 
  6533.  
  6534.  
  6535. ΓòÉΓòÉΓòÉ 10.6.4.3. Stop ΓòÉΓòÉΓòÉ
  6536.  
  6537. This option stops the periodic update of the contents of the window. 
  6538.  
  6539.  
  6540. ΓòÉΓòÉΓòÉ 10.6.4.4. Refresh now ΓòÉΓòÉΓòÉ
  6541.  
  6542. This option causes the window contents to be updated now. The behavior is the 
  6543. same as if a periodic update had occurred. 
  6544.  
  6545.  
  6546. ΓòÉΓòÉΓòÉ 10.7. Help ΓòÉΓòÉΓòÉ
  6547.  
  6548. The Help pull-down contains the list of the help functions available for the 
  6549. Detail window. 
  6550.  
  6551.  
  6552. ΓòÉΓòÉΓòÉ 10.7.1. Explanation of the contents of this window ΓòÉΓòÉΓòÉ
  6553.  
  6554. The Explanation of the contents of this window option of the Help pull-down 
  6555. displays information about the contents of this window. 
  6556.  
  6557.  
  6558. ΓòÉΓòÉΓòÉ 11. Detail Window Contents ΓòÉΓòÉΓòÉ
  6559.  
  6560. The following panels show the content of the various displays presented in the 
  6561. Detail window. 
  6562.  
  6563. The following displays are selectable from several sources: 
  6564.  
  6565. System                  Lists the displays available from the System pull-down. 
  6566. Process                 Lists the displays available from the Process 
  6567.                         pull-down. 
  6568. Registers               Lists the displays available from the Registers 
  6569.                         pull-down. 
  6570. Functions               Lists the displays available from the Functions 
  6571.                         pull-down. 
  6572. Links                   Lists the displays available only from hyperblock 
  6573.                         links. 
  6574. Common Elements         Lists the displays which occur in a variety of places. 
  6575.  
  6576.  
  6577. ΓòÉΓòÉΓòÉ 11.1. From the System Pull-Down ΓòÉΓòÉΓòÉ
  6578.  
  6579. The following panels show the content of the various displays selectable from 
  6580. the System pull-down on the Process Hierarchy window. 
  6581.  
  6582. These displays are: 
  6583.  
  6584. Working Set 
  6585.           Displays the working set of memory for the entire system. 
  6586. RAM Usage by Process 
  6587.           Determines and displays the amount of RAM consumed my each process. 
  6588. Memory Leak Detection 
  6589.           Displays the number of pages of memory that each process is 
  6590.           accumulating. 
  6591. Free, Idle, and Locked Memory 
  6592.           Generates the summary information about free, idle and locked pages. 
  6593. Swapper 
  6594.           Displays information about the contents of the SWAPPER.DAT file. 
  6595. General System 
  6596.           A set of displays containing general system information. 
  6597. Kernel Information 
  6598.           A set of displays containing kernel information. 
  6599.  
  6600.  
  6601. ΓòÉΓòÉΓòÉ 11.1.1. Working Set ΓòÉΓòÉΓòÉ
  6602.  
  6603. Select one: 
  6604.  
  6605. Contents of Display 
  6606.  
  6607. Selecting 
  6608.  
  6609. Example Output 
  6610.  
  6611. Algorithm 
  6612.  
  6613. Illustration 
  6614.  
  6615. Related Topics 
  6616.  
  6617.  
  6618. ΓòÉΓòÉΓòÉ 11.1.2. RAM Usage by Process ΓòÉΓòÉΓòÉ
  6619.  
  6620. Select one: 
  6621.  
  6622. Contents of Display 
  6623.  
  6624. Selecting 
  6625.  
  6626. Example Output 
  6627.  
  6628. Algorithm 
  6629.  
  6630. Related Topics 
  6631.  
  6632.  
  6633. ΓòÉΓòÉΓòÉ 11.1.3. Memory Leak Detection ΓòÉΓòÉΓòÉ
  6634.  
  6635. Select one: 
  6636.  
  6637. Contents of Display 
  6638.  
  6639. Selecting 
  6640.  
  6641. Example Output 
  6642.  
  6643. Related Topics 
  6644.  
  6645.  
  6646. ΓòÉΓòÉΓòÉ 11.1.4. Free, Idle, and Locked Memory ΓòÉΓòÉΓòÉ
  6647.  
  6648. Select one: 
  6649.  
  6650. Contents of Display 
  6651.  
  6652. Selecting 
  6653.  
  6654. Example Output 
  6655.  
  6656. Related Topics 
  6657.  
  6658.  
  6659. ΓòÉΓòÉΓòÉ 11.1.5. Swapper ΓòÉΓòÉΓòÉ
  6660.  
  6661. Select one: 
  6662.  
  6663. Contents of Display 
  6664.  
  6665. Selecting 
  6666.  
  6667. Example Output 
  6668.  
  6669. Related Topics 
  6670.  
  6671.  
  6672. ΓòÉΓòÉΓòÉ 11.1.6. General System ΓòÉΓòÉΓòÉ
  6673.  
  6674. The General System option contains: 
  6675.  
  6676. General System Information 
  6677.           Displays selected general system information. 
  6678. Device Drivers 
  6679.           Contains information about all Device Drivers currently loaded. 
  6680. GDT 
  6681.           Displays the Global Descriptor Table. 
  6682. Modules 
  6683.           Contains information about all modules currently loaded. 
  6684. System Anchor Segment 
  6685.           Displays the System Anchor Segment. 
  6686. Global Info Seg 
  6687.           Displays the Global Information Segment. 
  6688. Open Files 
  6689.           Displays information about the files that are open. 
  6690. Process List 
  6691.           Displays a list of all processes that are running. 
  6692.  
  6693.  
  6694. ΓòÉΓòÉΓòÉ 11.1.6.1. General System Information ΓòÉΓòÉΓòÉ
  6695.  
  6696. Select one: 
  6697.  
  6698. Contents of Display 
  6699.  
  6700. Selecting 
  6701.  
  6702. Example Output 
  6703.  
  6704. Related Topics 
  6705.  
  6706.  
  6707. ΓòÉΓòÉΓòÉ 11.1.6.2. Device Drivers ΓòÉΓòÉΓòÉ
  6708.  
  6709. Select one: 
  6710.  
  6711. Contents of Display 
  6712.  
  6713. Selecting 
  6714.  
  6715. Example output 
  6716.  
  6717. Related Topics 
  6718.  
  6719.  
  6720. ΓòÉΓòÉΓòÉ 11.1.6.3. GDT ΓòÉΓòÉΓòÉ
  6721.  
  6722. Select one: 
  6723.  
  6724. Contents of Display 
  6725.  
  6726. Descriptor Table Entry Description 
  6727.  
  6728. Selecting 
  6729.  
  6730. Example Output 
  6731.  
  6732. Related Topics 
  6733.  
  6734.  
  6735. ΓòÉΓòÉΓòÉ 11.1.6.4. Modules ΓòÉΓòÉΓòÉ
  6736.  
  6737. Select one: 
  6738.  
  6739. Contents of Display 
  6740.  
  6741. Selecting 
  6742.  
  6743. Example Output 
  6744.  
  6745. Related Topics 
  6746.  
  6747.  
  6748. ΓòÉΓòÉΓòÉ 11.1.6.5. System Anchor Segment ΓòÉΓòÉΓòÉ
  6749.  
  6750. Select one: 
  6751.  
  6752. Contents of Display 
  6753.  
  6754. Selecting 
  6755.  
  6756. Example Output 
  6757.  
  6758. Related Topics 
  6759.  
  6760.  
  6761. ΓòÉΓòÉΓòÉ 11.1.6.6. Global Info Seg ΓòÉΓòÉΓòÉ
  6762.  
  6763. Select one: 
  6764.  
  6765. Contents of Display 
  6766.  
  6767. Selecting 
  6768.  
  6769. Example Output 
  6770.  
  6771. Related Topics 
  6772.  
  6773.  
  6774. ΓòÉΓòÉΓòÉ 11.1.6.7. Open Files ΓòÉΓòÉΓòÉ
  6775.  
  6776. Select one: 
  6777.  
  6778. Contents of Display 
  6779.  
  6780. Selecting 
  6781.  
  6782. Example Output 
  6783.  
  6784. Related Topics 
  6785.  
  6786.  
  6787. ΓòÉΓòÉΓòÉ 11.1.6.8. Process List ΓòÉΓòÉΓòÉ
  6788.  
  6789. Select one: 
  6790.  
  6791. Contents of Display 
  6792.  
  6793. Selecting 
  6794.  
  6795. Example Output 
  6796.  
  6797. Related Topics 
  6798.  
  6799.  
  6800. ΓòÉΓòÉΓòÉ 11.1.7. Kernel Information ΓòÉΓòÉΓòÉ
  6801.  
  6802. The Kernel Information option contains: 
  6803.  
  6804. Kernel Memory Usage 
  6805.           Determines and displays the amount of memory consumed by the 
  6806.           Operating System. 
  6807. System Object Summary 
  6808.           Displays the System Object Summary. 
  6809. System Arena Table 
  6810.           Displays the System Arena Table. 
  6811. System Page Table 
  6812.           Displays the System Page Table. 
  6813. Page Frame Table 
  6814.           Displays the Page Frame Table. 
  6815.  
  6816.  
  6817. ΓòÉΓòÉΓòÉ 11.1.7.1. Kernel Memory Usage ΓòÉΓòÉΓòÉ
  6818.  
  6819. Select one: 
  6820.  
  6821. Contents of Display 
  6822.  
  6823. Selecting 
  6824.  
  6825. Example Output 
  6826.  
  6827. Algorithm 
  6828.  
  6829. Related Topics 
  6830.  
  6831.  
  6832. ΓòÉΓòÉΓòÉ 11.1.7.2. Object Summary ΓòÉΓòÉΓòÉ
  6833.  
  6834. Select one: 
  6835.  
  6836. Contents of Display 
  6837.  
  6838. Selecting 
  6839.  
  6840. Example Output 
  6841.  
  6842. Related Topics 
  6843.  
  6844.  
  6845. ΓòÉΓòÉΓòÉ 11.1.7.3. System Arena Table ΓòÉΓòÉΓòÉ
  6846.  
  6847. Select one: 
  6848.  
  6849. Contents of Display 
  6850.  
  6851. Arena Record Description 
  6852.  
  6853. Selecting 
  6854.  
  6855. Example Output 
  6856.  
  6857. Related Topics 
  6858.  
  6859.  
  6860. ΓòÉΓòÉΓòÉ 11.1.7.4. System Page Table ΓòÉΓòÉΓòÉ
  6861.  
  6862. Select one: 
  6863.  
  6864. Contents of Display 
  6865.  
  6866. Page Table Entry Description 
  6867.  
  6868. Selecting 
  6869.  
  6870. Example Output 
  6871.  
  6872. Related Topics 
  6873.  
  6874.  
  6875. ΓòÉΓòÉΓòÉ 11.1.7.5. Page Frame Table ΓòÉΓòÉΓòÉ
  6876.  
  6877. Select one: 
  6878.  
  6879. Contents of Display 
  6880.  
  6881. Selecting 
  6882.  
  6883. Example Output 
  6884.  
  6885. Related Topics 
  6886.  
  6887.  
  6888. ΓòÉΓòÉΓòÉ 11.2. From the Process Pull-Down ΓòÉΓòÉΓòÉ
  6889.  
  6890. The following panels show the content of the various displays selectable from 
  6891. the Process pull-down on the Process Hierarchy window. 
  6892.  
  6893. These displays are: 
  6894.  
  6895. Working Set 
  6896.           Displays the working set of memory for the process. 
  6897. Memory Utilization 
  6898.           Displays details of memory usage for the process. 
  6899. Memory Leak Detection 
  6900.           Displays the number of pages of memory that each object is 
  6901.           accumulating. 
  6902. General Process Information 
  6903.           Displays general information about the process. 
  6904. Per Task Data Area (PTDA) 
  6905.           Displays the PTDA. 
  6906. LDT 
  6907.           Displays the LDT. 
  6908. Page Table 
  6909.           Displays the process unique Page Table. 
  6910. Private Object Summary 
  6911.           Displays a summary of the private arena memory objects. 
  6912. Shared Object Summary 
  6913.           Displays a summary of the shared arena memory objects. 
  6914. Private Arena Table 
  6915.           Displays the process unique arena table. 
  6916. Shared Arena Table 
  6917.           Displays the shared arena, in the process' context. 
  6918.  
  6919.  
  6920. ΓòÉΓòÉΓòÉ 11.2.1. Working Set ΓòÉΓòÉΓòÉ
  6921.  
  6922. Select one: 
  6923.  
  6924. Contents of Display 
  6925.  
  6926. Selecting 
  6927.  
  6928. Example Output 
  6929.  
  6930. Algorithm 
  6931.  
  6932. Illustration 
  6933.  
  6934. Related Topics 
  6935.  
  6936.  
  6937. ΓòÉΓòÉΓòÉ 11.2.2. Memory Utilization ΓòÉΓòÉΓòÉ
  6938.  
  6939. Select one: 
  6940.  
  6941. Contents of Display 
  6942.  
  6943. Selecting 
  6944.  
  6945. Example Output 
  6946.  
  6947. Algorithm 
  6948.  
  6949. Related Topics 
  6950.  
  6951.  
  6952. ΓòÉΓòÉΓòÉ 11.2.3. Memory Leak Detection ΓòÉΓòÉΓòÉ
  6953.  
  6954. Select one: 
  6955.  
  6956. Contents of Display 
  6957.  
  6958. Selecting 
  6959.  
  6960. Example Output 
  6961.  
  6962. Related Topics 
  6963.  
  6964.  
  6965. ΓòÉΓòÉΓòÉ 11.2.4. General Process Information ΓòÉΓòÉΓòÉ
  6966.  
  6967. Select one: 
  6968.  
  6969. Contents of Display 
  6970.  
  6971. Selecting 
  6972.  
  6973. Example Output 
  6974.  
  6975. Related Topics 
  6976.  
  6977.  
  6978. ΓòÉΓòÉΓòÉ 11.2.5. Per Task Data Area (PTDA) ΓòÉΓòÉΓòÉ
  6979.  
  6980. Select one: 
  6981.  
  6982. Contents of Display 
  6983.  
  6984. Selecting 
  6985.  
  6986. Example Output 
  6987.  
  6988. Related Topics 
  6989.  
  6990.  
  6991. ΓòÉΓòÉΓòÉ 11.2.6. LDT ΓòÉΓòÉΓòÉ
  6992.  
  6993. Select one: 
  6994.  
  6995. Contents of Display 
  6996.  
  6997. Descriptor Table Entry Description 
  6998.  
  6999. Selecting 
  7000.  
  7001. Example Output 
  7002.  
  7003. Related Topics 
  7004.  
  7005.  
  7006. ΓòÉΓòÉΓòÉ 11.2.7. Page Table ΓòÉΓòÉΓòÉ
  7007.  
  7008. Select one: 
  7009.  
  7010. Contents of Display 
  7011.  
  7012. Page Table Entry Description 
  7013.  
  7014. Selecting 
  7015.  
  7016. Example Output 
  7017.  
  7018. Related Topics 
  7019.  
  7020.  
  7021. ΓòÉΓòÉΓòÉ 11.2.8. Private Object Summary ΓòÉΓòÉΓòÉ
  7022.  
  7023. Select one: 
  7024.  
  7025. Contents of Display 
  7026.  
  7027. Selecting 
  7028.  
  7029. Example Output 
  7030.  
  7031. Related Topics 
  7032.  
  7033.  
  7034. ΓòÉΓòÉΓòÉ 11.2.9. Shared Object Summary ΓòÉΓòÉΓòÉ
  7035.  
  7036. Select one: 
  7037.  
  7038. Contents of Display 
  7039.  
  7040. Selecting 
  7041.  
  7042. Example Output 
  7043.  
  7044. Related Topics 
  7045.  
  7046.  
  7047. ΓòÉΓòÉΓòÉ 11.2.10. Private Arena Table ΓòÉΓòÉΓòÉ
  7048.  
  7049. Select one: 
  7050.  
  7051. Contents of Display 
  7052.  
  7053. Arena Record Description 
  7054.  
  7055. Selecting 
  7056.  
  7057. Example Output 
  7058.  
  7059. Related Topics 
  7060.  
  7061.  
  7062. ΓòÉΓòÉΓòÉ 11.2.11. Shared Arena Table ΓòÉΓòÉΓòÉ
  7063.  
  7064. Select one: 
  7065.  
  7066. Contents of Display 
  7067.  
  7068. Arena Record Description 
  7069.  
  7070. Selecting 
  7071.  
  7072. Example Output 
  7073.  
  7074. Related Topics 
  7075.  
  7076.  
  7077. ΓòÉΓòÉΓòÉ 11.3. From the Registers Pull-Down ΓòÉΓòÉΓòÉ
  7078.  
  7079. The following panels show the content of the various displays selectable from 
  7080. the Registers pull-down on the Process Hierarchy window. 
  7081.  
  7082. These displays are: 
  7083.  
  7084. Control Registers 
  7085.           Displays the iAPX 386 control registers. 
  7086. Current IDT 
  7087.           Displays the current Interrupt Descriptor Table. 
  7088. Current TSS 
  7089.           Displays the current Task State Segment. 
  7090.  
  7091.  
  7092. ΓòÉΓòÉΓòÉ 11.3.1. Control Registers ΓòÉΓòÉΓòÉ
  7093.  
  7094. Select one: 
  7095.  
  7096. Contents of Display 
  7097.  
  7098. Selecting 
  7099.  
  7100. Example Output 
  7101.  
  7102. Related Topics 
  7103.  
  7104.  
  7105. ΓòÉΓòÉΓòÉ 11.3.2. IDT ΓòÉΓòÉΓòÉ
  7106.  
  7107. Select one: 
  7108.  
  7109. Contents of Display 
  7110.  
  7111. Descriptor Table Entry Description 
  7112.  
  7113. Selecting 
  7114.  
  7115. Example Output 
  7116.  
  7117. Related Topics 
  7118.  
  7119.  
  7120. ΓòÉΓòÉΓòÉ 11.3.3. Task State Segment ΓòÉΓòÉΓòÉ
  7121.  
  7122. Select one: 
  7123.  
  7124. Contents of Display 
  7125.  
  7126. Selecting 
  7127.  
  7128. Example Output 
  7129.  
  7130. Related Topics 
  7131.  
  7132.  
  7133. ΓòÉΓòÉΓòÉ <hidden> Task State Segment ΓòÉΓòÉΓòÉ
  7134.  
  7135. Select one: 
  7136.  
  7137. Contents of Display 
  7138.  
  7139. Selecting 
  7140.  
  7141. Example Output 
  7142.  
  7143. Related Topics 
  7144.  
  7145.  
  7146. ΓòÉΓòÉΓòÉ <hidden> Selecting the TSS Display ΓòÉΓòÉΓòÉ
  7147.  
  7148. You may either select the Current TSS option of the System pull-down on the 
  7149. Process Hierarchy window to see the current TSS or select a hyperblock link 
  7150. from another window to see a specific TSS. 
  7151.  
  7152.  
  7153. ΓòÉΓòÉΓòÉ 11.4. From Functions Pull-Down ΓòÉΓòÉΓòÉ
  7154.  
  7155. The following panels show the content of the various displays selectable from 
  7156. the Functions pull-down on the Detail window. 
  7157.  
  7158. Displays are: 
  7159.  
  7160. General Linear Memory 
  7161.           Displays memory at a specified linear address. 
  7162. General Virtual Memory 
  7163.           Displays memory at a specified virtual address. 
  7164. General Physical Memory 
  7165.           Displays memory at a specified physical address. 
  7166. Show Working Set detail (by Page) 
  7167.           Shows which pages made up the working set. 
  7168. Show Working Set detail (by Object) 
  7169.           Shows which objects made up the working set. 
  7170. Show summary by Process 
  7171.           Show a summary of the working set information, summarized by process. 
  7172. Show SWAPPER.DAT detail (by Page) 
  7173.           Shows which pages make up the SWAPPER.DAT file. 
  7174. Memory Object Leak Detection 
  7175.           Performs memory leak detection on a single memory object. 
  7176.  
  7177.  
  7178. ΓòÉΓòÉΓòÉ 11.4.1. General Linear Memory Display ΓòÉΓòÉΓòÉ
  7179.  
  7180. Select one: 
  7181.  
  7182. Contents of Display 
  7183.  
  7184. Selecting 
  7185.  
  7186. Example Output 
  7187.  
  7188. Related Topics 
  7189.  
  7190.  
  7191. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Linear Memory Display ΓòÉΓòÉΓòÉ
  7192.  
  7193. You may either select the Show memory at linear address option on the Functions 
  7194. pull-down on the Detail window to get a dialog so that you may enter a specific 
  7195. linear address or select a linear address hyperblock link from another window 
  7196. that THESEUS2 cannot explicitly format. 
  7197.  
  7198.  
  7199. ΓòÉΓòÉΓòÉ <hidden> Example of the General Linear memory display ΓòÉΓòÉΓòÉ
  7200.  
  7201. Memory from Linear address FEB5F498 for 40 bytes for process 'system':
  7202. FEB5F498 (0000)  00 00 50 07 80 80 00 00  00 00 54 48 45 53 45 55 *..P.......THESEU*
  7203. FEB5F4A8 (0010)  32 24 98 07 78 07 00 00  00 00 54 00 C8 0F 92 03 *2$..x.....T.....*
  7204. FEB5F4B8 (0020)  B8 04 82 00 EA 9D 1F 00  00 00 17 04 00 14 A0 07 *................*
  7205. FEB5F4C8 (0030)  A8 07 B0 07 B8 07 C0 07  40 00 FF 1F 00 60 EC FF *........@....`..*
  7206.  
  7207. The above is the same memory as the Device Driver Header example. 
  7208.  
  7209. Memory from Linear address FE984D84 for E bytes for process 'system':
  7210. FE984D84 (0000) 89 1E 1E 00       *....*   mov      [1E],bx
  7211. FE984D88 (0004) 8C 06 20 00       *.. .*   mov      [20],es
  7212. FE984D8C (0008) 26 8A 47 02       *&.G.*   mov      al,es:[bx+2]
  7213. FE984D90 (000C) 3C 00             *<.*     cmp      al,0
  7214.  
  7215.  
  7216. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Linear memory display ΓòÉΓòÉΓòÉ
  7217.  
  7218. For hex mode, the memory is presented as follows: 
  7219.  
  7220. address    The linear address of the byte that begins the line. 
  7221. hex        There are three formats for this data: 
  7222.  
  7223.    byte           Each byte is formatted individually. 
  7224.    word           Each word (2 bytes) is formatted individually. "Byte 
  7225.                   reversal" is done. 
  7226.    doubleword     Each doubleword (4 bytes) is formatted individually. "Byte 
  7227.                   reversal" is done. 
  7228. ASCII      The character representation of the memory area. "Byte reversal" is 
  7229.            not done. 
  7230.  
  7231. For disassemble mode, the memory is presented as follows: 
  7232.  
  7233. address      The linear address of the byte that begins the line. 
  7234. hex          Each byte is formatted individually. 
  7235. ASCII        The character representation of the memory area. 
  7236. instruction  The disassembled instruction, using MASM mnemonics. 
  7237.  
  7238.  
  7239. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7240.  
  7241. o Memory addressing 
  7242.  
  7243. o Linear addresses 
  7244.  
  7245. o Description of Linear Object 
  7246.  
  7247.  
  7248. ΓòÉΓòÉΓòÉ 11.4.2. General Virtual Memory Display ΓòÉΓòÉΓòÉ
  7249.  
  7250. Select one: 
  7251.  
  7252. Contents of Display 
  7253.  
  7254. Selecting 
  7255.  
  7256. Example Output 
  7257.  
  7258. Related Topics 
  7259.  
  7260.  
  7261. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Virtual Memory Display ΓòÉΓòÉΓòÉ
  7262.  
  7263. You may either select the Show memory at virtual address option on the 
  7264. Functions pull-down on the Detail window to get a dialog so that you may enter 
  7265. a specific virtual address or select a virtual address hyperblock link from 
  7266. another window that THESEUS2 cannot explicitly format. 
  7267.  
  7268.  
  7269. ΓòÉΓòÉΓòÉ <hidden> Example of the General Virtual Memory Display ΓòÉΓòÉΓòÉ
  7270.  
  7271. Memory from Virtual address 0778:00000000 for 1A bytes for process 'system':
  7272. 0778:0000  00 00 50 07 80 80 00 00  00 00 54 48 45 53 45 55 *..P.......THESEU*
  7273. 0778:0010  32 24 98 07 78 07 00 00  00 00                   *2$..x.....*
  7274.  
  7275. The above is the same memory as the Device Driver Header example. 
  7276.  
  7277. Memory from Virtual address 0798:00000000 for 22B bytes for process 'system':
  7278. 0798:0000 89 1E 1E 00       *....*   mov      [1E],bx
  7279. 0798:0004 8C 06 20 00       *.. .*   mov      [20],es
  7280. 0798:0008 26 8A 47 02       *&.G.*   mov      al,es:[bx+2]
  7281. 0798:000C 3C 00             *<.*     cmp      al,0
  7282.  
  7283.  
  7284. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Virtual Memory Display ΓòÉΓòÉΓòÉ
  7285.  
  7286. For hex mode, the memory is presented as follows: 
  7287.  
  7288. address    The virtual address of the byte that begins the line. 
  7289. hex        There are three formats for this data: 
  7290.  
  7291.    byte           Each byte is formatted individually. 
  7292.    word           Each word (2 bytes) is formatted individually. "Byte 
  7293.                   reversal" is done. 
  7294.    doubleword     Each doubleword (4 bytes) is formatted individually. "Byte 
  7295.                   reversal" is done. 
  7296. ASCII      The character representation of the memory area. "Byte reversal" is 
  7297.            not done. 
  7298.  
  7299. For disassemble mode, the memory is presented as follows: 
  7300.  
  7301. address      The virtual address of the byte that begins the line. 
  7302. hex          Each byte is formatted individually. 
  7303. ASCII        The character representation of the memory area. 
  7304. instruction  The disassembled instruction, using MASM mnemonics. 
  7305.  
  7306.  
  7307. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7308.  
  7309. o Memory addressing 
  7310.  
  7311. o Virtual addresses 
  7312.  
  7313.  
  7314. ΓòÉΓòÉΓòÉ 11.4.3. General Physical Memory Display ΓòÉΓòÉΓòÉ
  7315.  
  7316. Select one: 
  7317.  
  7318. Contents of Display 
  7319.  
  7320. Selecting 
  7321.  
  7322. Example Output 
  7323.  
  7324. Related Topics 
  7325.  
  7326.  
  7327. ΓòÉΓòÉΓòÉ <hidden> Selecting the General Physical Memory Display ΓòÉΓòÉΓòÉ
  7328.  
  7329. You may either select the Show memory at physical address option on the 
  7330. Functions pull-down on the Detail window to get a dialog so that you may enter 
  7331. a specific physical address or select a physical address hyperblock link from 
  7332. another window that THESEUS2 cannot explicitly format. 
  7333.  
  7334.  
  7335. ΓòÉΓòÉΓòÉ <hidden> Example of the General Physical Memory Display ΓòÉΓòÉΓòÉ
  7336.  
  7337. Memory from Physical address 006A7498 for 40 bytes for process 'system':
  7338. 006A7498 (0000)  00 00 50 07 80 80 00 00  00 00 54 48 45 53 45 55 *..P.......THESEU*
  7339. 006A74A8 (0010)  32 24 98 07 78 07 00 00  00 00 54 00 C8 0F 72 03 *2$..x.....T...r.*
  7340. 006A74B8 (0020)  B8 04 82 00 36 A1 1F 00  00 00 0F 04 00 14 A0 07 *....6...........*
  7341. 006A74C8 (0030)  A8 07 B0 07 B8 07 C0 07  40 00 FF 1F 00 60 EC FF *........@....`..*
  7342.  
  7343. The above is the same memory as the Device Driver Header example. 
  7344.  
  7345. Memory from Physical address 0068FD84 for E bytes for process 'system':
  7346. 0068FD84 (0000) 89 1E 1E 00       *....*   mov      [1E],bx
  7347. 0068FD88 (0004) 8C 06 20 00       *.. .*   mov      [20],es
  7348. 0068FD8C (0008) 26 8A 47 02       *&.G.*   mov      al,es:[bx+2]
  7349. 0068FD90 (000C) 3C 00             *<.*     cmp      al,0
  7350.  
  7351.  
  7352. ΓòÉΓòÉΓòÉ <hidden> Contents of the General Physical Memory Display ΓòÉΓòÉΓòÉ
  7353.  
  7354. For hex mode, the memory is presented as follows: 
  7355.  
  7356. address    The physical address of the byte that begins the line. 
  7357. hex        There are three formats for this data: 
  7358.  
  7359.    byte           Each byte is formatted individually. 
  7360.    word           Each word (2 bytes) is formatted individually. "Byte 
  7361.                   reversal" is done. 
  7362.    doubleword     Each doubleword (4 bytes) is formatted individually. "Byte 
  7363.                   reversal" is done. 
  7364. ASCII      The character representation of the memory area. "Byte reversal" is 
  7365.            not done. 
  7366.  
  7367. For disassemble mode, the memory is presented as follows: 
  7368.  
  7369. address      The physical address of the byte that begins the line. 
  7370. hex          Each byte is formatted individually. 
  7371. ASCII        The character representation of the memory area. 
  7372. instruction  The disassembled instruction, using MASM mnemonics. 
  7373.  
  7374.  
  7375. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7376.  
  7377. o Memory addressing 
  7378.  
  7379. o Physical addresses 
  7380.  
  7381.  
  7382. ΓòÉΓòÉΓòÉ 11.4.4. Detail of Working Set (by Page) Display ΓòÉΓòÉΓòÉ
  7383.  
  7384. Select one: 
  7385.  
  7386. Contents of Display 
  7387.  
  7388. Selecting 
  7389.  
  7390. Example Output 
  7391.  
  7392. Related Topics 
  7393.  
  7394.  
  7395. ΓòÉΓòÉΓòÉ 11.4.5. Detail of Working Set (by Object) Display ΓòÉΓòÉΓòÉ
  7396.  
  7397. Select one: 
  7398.  
  7399. Contents of Display 
  7400.  
  7401. Selecting 
  7402.  
  7403. Example Output 
  7404.  
  7405. Related Topics 
  7406.  
  7407.  
  7408. ΓòÉΓòÉΓòÉ 11.4.6. Detail of Summary by Process Display ΓòÉΓòÉΓòÉ
  7409.  
  7410. Select one: 
  7411.  
  7412. Contents of Display 
  7413.  
  7414. Selecting 
  7415.  
  7416. Example Output 
  7417.  
  7418. Related Topics 
  7419.  
  7420.  
  7421. ΓòÉΓòÉΓòÉ 11.4.7. SWAPPER.DAT Contents (by Page) Display ΓòÉΓòÉΓòÉ
  7422.  
  7423. Select one: 
  7424.  
  7425. Contents of Display 
  7426.  
  7427. Selecting 
  7428.  
  7429. Example Output 
  7430.  
  7431. Related Topics 
  7432.  
  7433.  
  7434. ΓòÉΓòÉΓòÉ 11.4.8. Memory Object Leak Detection ΓòÉΓòÉΓòÉ
  7435.  
  7436. Select one: 
  7437.  
  7438. Contents of Display 
  7439.  
  7440. Selecting 
  7441.  
  7442. Example Output 
  7443.  
  7444. Related Topics 
  7445.  
  7446.  
  7447. ΓòÉΓòÉΓòÉ 11.5. From Links ΓòÉΓòÉΓòÉ
  7448.  
  7449. The following panels show the content of displays that are displayed only from 
  7450. hyperblock links. 
  7451.  
  7452. Displays are: 
  7453.  
  7454. Device Driver Header 
  7455.           Displays the contents of a single Device Driver's header. 
  7456. Virtual Address Memory 
  7457.           Displays the contents of a segment in memory. 
  7458. Show description of an object 
  7459.           Displays the "description" of a memory object. 
  7460. Show description of a segment 
  7461.           Displays the "description" of a segment. 
  7462. Physical description 
  7463.           Displays the "description" of a physical page of memory. 
  7464. Detail for System Owner 
  7465.           Displays the list of memory objects that make up a particular system 
  7466.           owner. 
  7467. Arena Record 
  7468.           Displays a single Arena Record. 
  7469. Object Record 
  7470.           Displays a single Object Record. 
  7471. Context Record 
  7472.           Displays a single Context Record. 
  7473. Virtual Page Table entry 
  7474.           Shows a single Virtual Page Table entry. 
  7475. MTE display 
  7476.           Displays a single MTE. 
  7477. TCB display 
  7478.           Displays a single TCB. 
  7479. Detail Working Set information for an Object 
  7480.           Displays the pages that make up the object and their relation in the 
  7481.           working set. 
  7482. SFT display 
  7483.           Displays a single System File Table entry. 
  7484. Detailed Memory Assignment Information 
  7485.           Displays detail of several memory analysis displays. 
  7486.  
  7487.  
  7488. ΓòÉΓòÉΓòÉ 11.5.1. Device Driver Header Display ΓòÉΓòÉΓòÉ
  7489.  
  7490. Select one: 
  7491.  
  7492. Contents of Display 
  7493.  
  7494. Selecting 
  7495.  
  7496. Example Output 
  7497.  
  7498. Related Topics 
  7499.  
  7500.  
  7501. ΓòÉΓòÉΓòÉ <hidden> Selecting the Device Drivers Header Display ΓòÉΓòÉΓòÉ
  7502.  
  7503. This is selected by the hyperblock link of the Header addr field on the Device 
  7504. Drivers display. 
  7505.  
  7506.  
  7507. ΓòÉΓòÉΓòÉ <hidden> Example of the Device Driver Header Display ΓòÉΓòÉΓòÉ
  7508.  
  7509. Device Driver header located at 0778:0000:
  7510. Next DD header @ 0750:0000
  7511. Device attribute = 8080 => CHR LVL=OS/2
  7512. Offset to Strategy Routine = 0000
  7513. Offset to IDC Routine      = 0000
  7514. Device name = 'THESEU2$'
  7515. Code Selector = 0798
  7516. Data Selector = 0778
  7517. Reserved_3 = 0000
  7518. Reserved_4 = 0000
  7519.  
  7520.  
  7521. ΓòÉΓòÉΓòÉ <hidden> Contents of the Device Driver Header Display ΓòÉΓòÉΓòÉ
  7522.  
  7523. The fields of the device driver header are displayed as follows: 
  7524.  
  7525. Device Driver header located at ssss:oooo: 
  7526.           The address of this device driver header. 
  7527. Next DD header @ ssss:oooo 
  7528.           The device drivers are linked together. This is the address of the 
  7529.           next one. 
  7530. Device attribute = hhhh => decoded attributes 
  7531.           The attributes are printed in hex and then presented in English as 
  7532.           follows: 
  7533.  
  7534.    CHR   Bit 15 - The device is a character device. Otherwise, it is a block 
  7535.          device. 
  7536.    IDC   Bit 14 - The device supports "Inter-device Driver Communication". If 
  7537.          this is set, then the IDC Entry Point value must be valid. 
  7538.    IBM   Bit 13 - The device is non-IBM block format. 
  7539.    SHR   Bit 12 - The device supports "shared device access checking". 
  7540.    OPN   Bit 11 - The device supports removable media (block devices) or device 
  7541.          open/close (character devices). 
  7542.    LVL   Bits 9-7 - Function level of support: 
  7543.  
  7544.       PC/DOS    000 - PC/DOS device driver.  (This should never be seen in OS/2 
  7545.                 2.0.) 
  7546.       OS/2      001 - OS/2 device driver, which does not support DosDevIOCTL2 
  7547.                 packets. 
  7548.       IOCTL2    010 - OS/2 device driver, which supports DosDevIOCTL2 and 
  7549.                 SHUTDOWN request packets. 
  7550.       BitStrip  011 - OS/2 device driver, with a Capabilities Bit Strip in the 
  7551.                 header. 
  7552.       ??        Level was not one of the above. The level value is printed. 
  7553.    CLK   Bit 3 - The device is the CLOCK device. 
  7554.    NUL   Bit 2 - The device is the NULL device. 
  7555.    SCR   Bit 1 - The device is the SCREEN (STDOUT). 
  7556.    KBD   Bit 0 - The device is the KEYBOARD (STDIN). 
  7557. Offset to Strategy Routine = hhhh 
  7558.           The offset into the device driver's code segment where the Strategy 
  7559.           Routine starts. 
  7560. Offset to IDC Routine = hhhh 
  7561.           The offset into the device driver's code segment where the IDC 
  7562.           Routine starts. 
  7563. Device name = 'name' 
  7564.           The name of the (character) device. 
  7565. Number of units supported = i (integer) 
  7566.           The number of units supported by the (block) device. 
  7567. Code Selector = ssss 
  7568.           The selector of the code segment. 
  7569. Data Selector = ssss 
  7570.           The selector of the data segment. 
  7571. Reserved_3 = hhhh 
  7572.           The third "reserved word" in the device driver header. 
  7573. Reserved_4 = hhhh 
  7574.           The fourth "reserved word" in the device driver header. 
  7575. Bit Strip = hhhhhhhh 
  7576.           The hex value of the Bit Strip and then presented in English: 
  7577.  
  7578.    parallel        The physical device driver supports parallel ports. 
  7579.    32-bit          For character device drivers, this bit is set to 1 if memory 
  7580.                    addressing above 16MB is supported; that is, support for 
  7581.                    full 32-bit memory addressability instead of 24-bit memory 
  7582.                    addressability. For block device drivers, this bit is 
  7583.                    reserved and must be set to 0. 
  7584.    DosDevIOCtl2    The DosDevIOCtl2 and SHUTDOWN request packets are supported. 
  7585.  
  7586.  
  7587. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7588.  
  7589. o Memory addressing 
  7590.  
  7591. o Device Drivers 
  7592.  
  7593.  
  7594. ΓòÉΓòÉΓòÉ 11.5.2. Description of Linear Object Display ΓòÉΓòÉΓòÉ
  7595.  
  7596. Select one: 
  7597.  
  7598. Contents of Display 
  7599.  
  7600. Selecting 
  7601.  
  7602. Example Output 
  7603.  
  7604. Related Topics 
  7605.  
  7606.  
  7607. ΓòÉΓòÉΓòÉ <hidden> Selecting the Description of Linear Object Display ΓòÉΓòÉΓòÉ
  7608.  
  7609. The Description of Linear Object display is selected by double-clicking mouse 
  7610. button 2, with the pointer over any linear address for which a hyperblock link 
  7611. is defined. 
  7612.  
  7613. If the linear address is not a system arena address, then a process context 
  7614. should be set (by selecting a particular process). 
  7615.  
  7616. If a context is not specified, or the context is sysinit, then the Page Tables 
  7617. for all processes are shown. 
  7618.  
  7619.  
  7620. ΓòÉΓòÉΓòÉ <hidden> Example of the Description of Linear Object Display ΓòÉΓòÉΓòÉ
  7621.  
  7622. Description of Linear Object 1B4A0000, process = 'THESEUS2':
  7623. It is object # 0002 from module PMDRAG.
  7624.  
  7625. Arena Record:
  7626.  har    pages   linear flg next prev link hash hob  hal  hco  / Decoded flags
  7627. 016F 00000010 1B4A0000 3D9 016E 0170 0000 0000 019D 0000 03D9 / Mapped Reload User Exec Read Hco
  7628.  
  7629. Object Record:
  7630.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  7631. 019D  016F 0000  0838 019B 019B  0000 00  00 00 00 00 / m-PMDRAG / shared exec read user
  7632.  
  7633. Context Record(s):
  7634.  hco  next ptda flgs / process / decoded_flags
  7635. 03D9  01FB 0290  1C  / THESEUS2 / read exec user
  7636. 01FB  0113 01D4  1C  / PMEXEC / read exec user
  7637. 0113  0000 00EF  1D  / PMSHELL / read exec user originator
  7638.  
  7639. Page Table, from 1B4A0000 to 1B4AFFFF:
  7640. *Linear=1B400000 Physical=0019C000 D=1 A=1 User  R/W P=1 Resident
  7641.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0001 fast
  7642.   hob=0067 refCount=0001 relPage=02ED block#=0019C flag=0010 / pf
  7643.  Linear=1B4A0000 FrameId=005CB     D=0 A=0 User  R/O P=0
  7644.   hob=019D refCount=0003 relPage=0000 block#=00008 flag=0800 / discardable
  7645.  Linear=1B4A1000 FrameId=005CC     D=0 A=0 User  R/O P=0
  7646.   hob=019D refCount=0003 relPage=0001 block#=00009 flag=0800 / discardable
  7647.  Linear=1B4A2000 Invalid page      D=0 A=0 Super R/O P=0
  7648.    Linear addresses 1B4A2000 to 1B4AF000 (14 pages) as last PTE above.
  7649.  
  7650.  
  7651. ΓòÉΓòÉΓòÉ <hidden> Contents of the Description of Linear Object Display ΓòÉΓòÉΓòÉ
  7652.  
  7653. The information presented on the Description of Linear Object display follows: 
  7654.  
  7655.  1. The linear address and context (denoting a particular process) of the 
  7656.     memory object. 
  7657.  2. A high-level statement describing the memory object: 
  7658.  
  7659.    It is object # hhhh from module aaaaaaaa. 
  7660.              The name of the module (either .EXE or .DLL) and the relative 
  7661.              object number within the module. This object number will match the 
  7662.              one produced and printed by the linker. 
  7663.    It was allocated by aaaaaaaa. 
  7664.              This memory was allocated by the indicated module. 
  7665.    It is 'aaaaaaaa' (decoded hmte from object record). 
  7666.              `aaaaaaaa' is the name of a system resource, obtained by decoding 
  7667.              the hmte. 
  7668.    It is 'aaaaaaaa' (decoded owner from object record). 
  7669.              `aaaaaaaa' is the name of a system resource, obtained by decoding 
  7670.              the owner. 
  7671.  
  7672.  3. The decoded arena record. 
  7673.  4. The decoded object record. 
  7674.  5. The decoded context record(s) (if this is a shared arena address). 
  7675.  6. The decoded Page Table over the linear address range of the object. For 
  7676.     each page in the object (PDEs are shown when displaying from a new Page 
  7677.     Table), the following items are shown: 
  7678.  
  7679.    o The PTE. 
  7680.    o The Page Frame Table entry for the PTE (if the page is present). 
  7681.    o The Virtual Page Table entry for the PTE. 
  7682.  
  7683.     If a context has not been specified, or the context is sysinit, then the 
  7684.     Page Tables for all processes are shown. 
  7685.  
  7686.  
  7687. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7688.  
  7689. o Memory addressing 
  7690.  
  7691. o Linear addresses 
  7692.  
  7693. o Handles 
  7694.  
  7695. o Memory Management Control Blocks 
  7696.  
  7697.  
  7698. ΓòÉΓòÉΓòÉ <hidden> Page Frame Table entry ΓòÉΓòÉΓòÉ
  7699.  
  7700. The fields of the Page Frame Table entry are decoded: 
  7701.  
  7702. Term                Meaning 
  7703. pteCnt=hhhh         The number of PTEs that refer to this page as being 
  7704.                     present. 
  7705. long_lock=hhhh      The number of long-term locks outstanding for this page. 
  7706. short_lock=hhhh     The number of short-term locks outstanding for this page. 
  7707. block=hhhhh         Pager disk frame or loader block number 
  7708. flags=hhhh          Flags indicating the status of the page. They are shown as 
  7709.                     hex and then decoded into ASCII: 
  7710.  
  7711.    fast        Page is in fast memory. 
  7712.    busy        Page is busy. 
  7713.    free        Page is on the free chain. 
  7714.    reserved?   Reserved bit. 
  7715.  
  7716.  
  7717. ΓòÉΓòÉΓòÉ 11.5.3. Description of Segment Display ΓòÉΓòÉΓòÉ
  7718.  
  7719. Select one: 
  7720.  
  7721. Contents of Display 
  7722.  
  7723. Selecting 
  7724.  
  7725. Example Output 
  7726.  
  7727. Related Topics 
  7728.  
  7729.  
  7730. ΓòÉΓòÉΓòÉ <hidden> Selecting the Description of Segment Display ΓòÉΓòÉΓòÉ
  7731.  
  7732. The Description of Segment display is selected by double-clicking mouse 
  7733. button 2, with the pointer over any virtual address or selector for which a 
  7734. hyperblock link is defined. 
  7735.  
  7736. If the virtual address is not a system arena address, then a process context 
  7737. must be set (by selecting a particular process). 
  7738.  
  7739.  
  7740. ΓòÉΓòÉΓòÉ <hidden> Example of the Description of Segment Display ΓòÉΓòÉΓòÉ
  7741.  
  7742. Description of Segment w/ selector = 0010, process = 'system'
  7743.  
  7744. Descriptor Table Entry:
  7745. GDT(0010) BTSS32  Base=FFE42DC8 Limit=00067 DPL=0               P=1 G=0
  7746.  
  7747. Description of Linear Object FFE42DC8, process = 'system':
  7748. It is object # 0001 from module DOSCALLS.
  7749.  
  7750. Arena Record:
  7751.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  7752. 0007 0000000B FFE3D000 009 0008 0014 0000 0000 0008 0000 0400 / Mapped
  7753.  
  7754. Object Record:
  7755.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  7756. 0008  0007 0000  0000 FFAA 0006  0000 00  00 00 00 00 / os2krnl load image /
  7757.  
  7758. Page Table, from FFE42DC8 to FFE42E2F:
  7759. *Linear=FFC00000 Physical=00190000 D=0 A=1 User  R/W P=1 Resident
  7760.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  7761.   hob=0019 refCount=0001 relPage=027F block#=00190 flag=0410 / pf resident
  7762.  Linear=FFE42000 Physical=00009000 D=1 A=1 User  R/W P=1 Resident
  7763.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  7764.   hob=0008 refCount=0001 relPage=0005 block#=00009 flag=0410 / pf resident
  7765.  
  7766.  
  7767. ΓòÉΓòÉΓòÉ <hidden> Contents of the Description of Segment Display ΓòÉΓòÉΓòÉ
  7768.  
  7769. The information presented on the Description of Segment display follows: 
  7770.  
  7771.  1. The selector and context (denoting a particular process) of the segment. 
  7772.  2. The Descriptor Table Entry for the selector. 
  7773.  3. The linear address and context (denoting a particular process) of the 
  7774.     memory object. 
  7775.  4. A high-level statement describing the memory object: 
  7776.  
  7777.    It is object # hhhh from module aaaaaaaa. 
  7778.              The name of the module (either .EXE or .DLL) and the relative 
  7779.              object number within the module. This object number will match the 
  7780.              one produced and printed by the linker. 
  7781.    It was allocated by aaaaaaaa. 
  7782.              This memory was allocated by the indicated module. 
  7783.    It is 'aaaaaaaa' (decoded hmte from object record). 
  7784.              `aaaaaaaa' is the name of a system resource, obtained by decoding 
  7785.              the hmte. 
  7786.    It is 'aaaaaaaa' (decoded owner from object record). 
  7787.              `aaaaaaaa' is the name of a system resource, obtained by decoding 
  7788.              the owner. 
  7789.  
  7790.  5. The decoded arena record. 
  7791.  6. The decoded object record. 
  7792.  7. The decoded context record(s) (if this is a shared arena address). 
  7793.  8. The decoded Page Table over the linear address range of the object. For 
  7794.     each page in the object (PDEs are shown when displaying from a new Page 
  7795.     Table), the following items are shown: 
  7796.  
  7797.    o The PTE. 
  7798.    o The Page Frame Table entry for the PTE (if the page is present). 
  7799.    o The Virtual Page Table entry for the PTE. 
  7800.  
  7801.     If a context has not been specified, or the context is sysinit, then the 
  7802.     Page Tables for all processes are shown. 
  7803.  
  7804.  
  7805. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7806.  
  7807. o Memory addressing 
  7808.  
  7809. o Virtual addresses 
  7810.  
  7811. o Linear addresses 
  7812.  
  7813. o Handles 
  7814.  
  7815. o Memory Management Control Blocks 
  7816.  
  7817.  
  7818. ΓòÉΓòÉΓòÉ 11.5.4. Description of Physical Object Display ΓòÉΓòÉΓòÉ
  7819.  
  7820. Select one: 
  7821.  
  7822. Contents of Display 
  7823.  
  7824. Selecting 
  7825.  
  7826. Example Output 
  7827.  
  7828. Related Topics 
  7829.  
  7830.  
  7831. ΓòÉΓòÉΓòÉ <hidden> Selecting the Description of Physical Object Display ΓòÉΓòÉΓòÉ
  7832.  
  7833. The Description of Physical Object display is selected by double-clicking mouse 
  7834. button 2, with the pointer over any physical address for which a hyperblock 
  7835. link is defined. 
  7836.  
  7837.  
  7838. ΓòÉΓòÉΓòÉ <hidden> Example of the Description of Physical Object Display ΓòÉΓòÉΓòÉ
  7839.  
  7840. Description of Physical Object 0018F000:
  7841.  
  7842. Start from the bottom (Page Frame Table) and go up:
  7843.  
  7844. Page Frame Table entry:
  7845.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  7846.  
  7847. Virtual Page Table entry (FrameId=00A9):
  7848.   hob=0014 refCount=0001 relPage=0000 block#=0018F flag=0410 / pf resident
  7849.  
  7850. Object Record:
  7851.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  7852. 0014  0013 0000  0000 FFB1 0000  0000 00  00 00 00 00 / PG Page directory /
  7853.  
  7854. Arena Record:
  7855.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  7856. 0013 00000001 FF420000 001 0017 0018 0000 0000 0014 0000 0000 /
  7857.  
  7858. =============================================================================
  7859. Now, go from the top (Arena's) down:
  7860.  
  7861. See if it is a page in the 'system' arena.
  7862. -----------------------------------------------------------------------------
  7863. Description of Linear Object FF420000, process = 'system':
  7864.  
  7865. Arena Record:
  7866.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  7867. 0013 00000001 FF420000 001 0017 0018 0000 0000 0014 0000 0000 /
  7868.  
  7869. Object Record:
  7870.  hob   har next  flgs ownr hmte  sown,cnt lt ld st sd / owner / decoded_flags
  7871. 0014  0013 0000  0000 FFB1 0000  0000 00  00 00 00 00 / PG Page directory /
  7872.  
  7873. Page Table, from FF420000 to FF420FFF:
  7874. *Linear=FF400000 Physical=00191000 D=0 A=1 User  R/W P=1 Resident
  7875.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  7876.   hob=0019 refCount=0001 relPage=027D block#=00191 flag=0410 / pf resident
  7877.  Linear=FF420000 Physical=0018F000 D=1 A=1 User  R/W P=1 Resident
  7878.   pteCnt=0001 long_lock=0000 short_lock=0000 block=00000 flags=0000
  7879.   hob=0014 refCount=0001 relPage=0000 block#=0018F flag=0410 / pf resident
  7880. =============================================================================
  7881. The page in each Process context in which it exists.
  7882.  
  7883.  
  7884. ΓòÉΓòÉΓòÉ <hidden> Contents of the Description of Physical Object Display ΓòÉΓòÉΓòÉ
  7885.  
  7886. The page address specified is described in three ways: 
  7887.  
  7888. o From the Page Frame Table, looking up through the Virtual Page Table to an 
  7889.   object record to an arena record. 
  7890. o From the system arena, looking down through the arena record to the object 
  7891.   record and Page Table. 
  7892. o From the shared and private arenas of each process, looking down through the 
  7893.   arena record to the object record and Page Table. 
  7894.  
  7895. The information presented on the Description of Physical Object display 
  7896. follows: 
  7897.  
  7898.  1. The physical address of the page being "described." 
  7899.  2. The Page Frame Table entry for the page. 
  7900.  3. The Virtual Page Table entry for the page. 
  7901.  4. The decoded object record. 
  7902.  5. The decoded arena record. 
  7903.  6. The linear address and context (denoting a particular process) of the 
  7904.     memory object. 
  7905.  7. A high-level statement describing the memory object: 
  7906.  
  7907.    It is object # hhhh from module aaaaaaaa. 
  7908.              The name of the module (either .EXE or .DLL) and the relative 
  7909.              object number within the module. This object number will match the 
  7910.              one produced and printed by the linker. 
  7911.    It was allocated by aaaaaaaa. 
  7912.              This memory was allocated by the indicated module. 
  7913.    It is 'aaaaaaaa' (decoded hmte from object record). 
  7914.              `aaaaaaaa' is the name of a system resource, obtained by decoding 
  7915.              the hmte. 
  7916.    It is 'aaaaaaaa' (decoded owner from object record). 
  7917.              `aaaaaaaa' is the name of a system resource, obtained by decoding 
  7918.              the owner. 
  7919.  
  7920.  8. The decoded arena record. 
  7921.  9. The decoded object record. 
  7922. 10. The decoded context record(s) (if this is a shared arena address). 
  7923. 11. The decoded Page Table over the linear address range of the object. For 
  7924.     each page in the object (PDEs are shown when displaying from a new Page 
  7925.     Table), the following items are shown: 
  7926.  
  7927.    o The PTE. 
  7928.    o The Page Frame Table entry for the PTE (if the page is present). 
  7929.    o The Virtual Page Table entry for the PTE. 
  7930.  
  7931. Items 6-11 are repeated for every process that has the specified page in its 
  7932. Page Tables. 
  7933.  
  7934.  
  7935. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7936.  
  7937. o Memory addressing 
  7938.  
  7939. o Linear addresses 
  7940.  
  7941. o Physical addresses 
  7942.  
  7943. o Handles 
  7944.  
  7945. o Memory Management Control Blocks 
  7946.  
  7947.  
  7948. ΓòÉΓòÉΓòÉ 11.5.5. Detail for System Owner Display ΓòÉΓòÉΓòÉ
  7949.  
  7950. Select one: 
  7951.  
  7952. Contents of Display 
  7953.  
  7954. Selecting 
  7955.  
  7956. Example Output 
  7957.  
  7958. Related Topics 
  7959.  
  7960.  
  7961. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail for System Owner Display ΓòÉΓòÉΓòÉ
  7962.  
  7963. This is selected by a hyperblock link from the owner column of the Kernel 
  7964. Memory Usage display. 
  7965.  
  7966.  
  7967. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail for System Owner Display ΓòÉΓòÉΓòÉ
  7968.  
  7969. Detail Kernel Memory assignment information, owner = FF6B:
  7970. This owner is 'allocated via devhlp AllocPhys'.
  7971. There are 2 objects which make up this System Owner.
  7972.   1. Object at linear address 7C673000, pages present = 640.
  7973.   2. Object at linear address 7D0BD000, pages present = 16.
  7974.  
  7975.  
  7976. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail for System Owner Display ΓòÉΓòÉΓòÉ
  7977.  
  7978. One line is displayed for each memory object that makes up the specified system 
  7979. owner: 
  7980.  
  7981. i. Object at linear address llllllll, pages present = nnn. 
  7982.           The base linear address of the memory object. The letter i indicates 
  7983.           the line number in the list. The nnn is the number of pages that are 
  7984.           present in RAM for this object. 
  7985.  
  7986.  
  7987. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  7988.  
  7989. o Memory addressing 
  7990.  
  7991. o Linear addresses 
  7992.  
  7993. o Memory Management Control Blocks 
  7994.  
  7995. o System Memory Usage 
  7996.  
  7997.  
  7998. ΓòÉΓòÉΓòÉ 11.5.6. Arena Record Display ΓòÉΓòÉΓòÉ
  7999.  
  8000. Select one: 
  8001.  
  8002. Contents of Display 
  8003.  
  8004. Selecting 
  8005.  
  8006. Example Output 
  8007.  
  8008. Related Topics 
  8009.  
  8010.  
  8011. ΓòÉΓòÉΓòÉ <hidden> Arena Record Display ΓòÉΓòÉΓòÉ
  8012.  
  8013. Select one: 
  8014.  
  8015. Contents of Display 
  8016.  
  8017. Selecting 
  8018.  
  8019. Example Output 
  8020.  
  8021. Related Topics 
  8022.  
  8023.  
  8024. ΓòÉΓòÉΓòÉ <hidden> Selecting the Arena Record Display ΓòÉΓòÉΓòÉ
  8025.  
  8026. Arena records are displayed by selecting a hyperblock link from a har field of 
  8027. some display. 
  8028.  
  8029.  
  8030. ΓòÉΓòÉΓòÉ <hidden> Example of the Arena Record Display ΓòÉΓòÉΓòÉ
  8031.  
  8032. A private arena record looks like: 
  8033.  
  8034.  har    pages   linear flg next prev link hash hob  hal  ptda / Decoded flags
  8035. 0252 00000020 00010000 1D9 0243 024D 0000 0000 025F 0000 0301 / Mapped Reload User Exec Read
  8036.  
  8037. A shared arena record looks like: 
  8038.  
  8039.  har    pages   linear flg next prev link hash hob  hal  hco  / Decoded flags
  8040. 02C5 00000010 1AB60000 369 02AE 0005 0000 0000 030F 0000 04E2 / Mapped Write User Read Hco
  8041.  
  8042. A system arena record looks like: 
  8043.  
  8044.  har    pages   linear flg next prev link hash hob  hal  sel  / Decoded flags
  8045. 0210 00000400 7C000000 001 0272 0004 0000 007A 0270 0000 0000 /
  8046.  
  8047.  
  8048. ΓòÉΓòÉΓòÉ <hidden> Contents of the Arena Record Display ΓòÉΓòÉΓòÉ
  8049.  
  8050. The arena record displayed contains the following entries: 
  8051.  
  8052. Column           Meaning 
  8053. har              The har of the displayed arena record. 
  8054. pages            The number of pages allocated in the memory object. The number 
  8055.                  of committed pages may be less than this. 
  8056. linear           The linear address of the start of the memory object. 
  8057. flg              Flags to indicate the status of the memory Object. They are 
  8058.                  decoded into English at the end of the line. 
  8059. next             The next arena record in the doubly linked chain. The arena 
  8060.                  records are linked in ascending order of the linear address of 
  8061.                  the memory object. 
  8062. prev             The previous arena record in the doubly linked chain. 
  8063. link             The har of an arena record that is an alias for the memory 
  8064.                  object. 
  8065. hash             Link to hash table. 
  8066. hob              The hob of the object record associated with this memory 
  8067.                  object. 
  8068. hal              Alias record handle. 
  8069. ptda             (private arena) The hob of the PTDA of the process that owns 
  8070.                  the memory object. 
  8071. hco              (shared arena) The first hco in a chain of context records for 
  8072.                  the memory object. 
  8073. sel              (system arena) The GDT selector that points to the memory 
  8074.                  object. 
  8075. Decoded flags    The flags are decoded into readable form: 
  8076.  
  8077.    Mapped    A selector maps this memory object. 
  8078.    Reload    Loader flag. 
  8079.    Write     The object is writable. 
  8080.    User      The object has user pages 
  8081.    Exec      The object has executable pages. 
  8082.    Read      The object has readable pages 
  8083.    Hco       For a shared arena record, this indicates that there is an entry 
  8084.              in the hco field. 
  8085.    Guard     The object has guard pages. 
  8086.    SGS       The object is registered under Screen Group Switch control. 
  8087.  
  8088.  
  8089. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8090.  
  8091. o Memory Management Control Blocks 
  8092.  
  8093. o Handles 
  8094.  
  8095.  
  8096. ΓòÉΓòÉΓòÉ 11.5.7. Object Record Display ΓòÉΓòÉΓòÉ
  8097.  
  8098. Select one: 
  8099.  
  8100. Contents of Display 
  8101.  
  8102. Selecting 
  8103.  
  8104. Example Output 
  8105.  
  8106. Related Topics 
  8107.  
  8108.  
  8109. ΓòÉΓòÉΓòÉ <hidden> Object Record Display ΓòÉΓòÉΓòÉ
  8110.  
  8111. Select one: 
  8112.  
  8113. Contents of Display 
  8114.  
  8115. Selecting 
  8116.  
  8117. Example Output 
  8118.  
  8119. Related Topics 
  8120.  
  8121.  
  8122. ΓòÉΓòÉΓòÉ <hidden> Selecting the Object Record Display ΓòÉΓòÉΓòÉ
  8123.  
  8124. Object records are displayed by selecting a link from a hob field of some 
  8125. display. 
  8126.  
  8127.  
  8128. ΓòÉΓòÉΓòÉ <hidden> Example of the Object Record Display ΓòÉΓòÉΓòÉ
  8129.  
  8130. A real memory object looks like: 
  8131.  
  8132.  hob   har next  flgs ownr hmte  sown,cnt lt st / owner / decoded_flags
  8133. 0252  0259 0000  0838 025F 025F  0000 00  00 00 / m-THESEUS2 / shared exec read user
  8134.  
  8135. A pseudo-object looks like: 
  8136.  
  8137.  hob   linear    flgs ownr hmte  sown,cnt lt st / owner / decoded_flags
  8138. 0294  7D3211D0   8000 FFE1 025F  0000 00  00 00 / VM arena header / Pseudo-object
  8139.  
  8140.  
  8141. ΓòÉΓòÉΓòÉ <hidden> Contents of the Object Record Display ΓòÉΓòÉΓòÉ
  8142.  
  8143. The object record displayed contains the following entries: 
  8144.  
  8145. Column           Meaning 
  8146. hob              The hob of the displayed object record. 
  8147. har              The har of the arena record associated with this object 
  8148.                  record. 
  8149. next             The next object record in the chain for this memory object. 
  8150. linear           The linear address of the pseudo-object. 
  8151. flgs             Flags to indicate the status of the memory object. They are 
  8152.                  decoded into English at the end of the line. 
  8153. ownr             Objects have owners. This is the hob of the owner. 
  8154. hmte             The hmte that allocated the memory object. 
  8155. sown             ID of thread owning the semaphore. 
  8156. cnt              Counter and waiting flag associated with sown. 
  8157. lt               Number of long-term locks that are outstanding. 
  8158. st               Number of short-term locks that are outstanding. 
  8159. owner            The name of the owner in ASCII. 
  8160. decoded_flags    The flags are decoded into readable form: 
  8161.  
  8162.    Pseudo-object The object is a pseudo-object. The linear address of the 
  8163.               object is contained in the object record. 
  8164.    API_allocated_object Object was allocated by an application. 
  8165.    lock       Some thread to wake in VMUnlock. 
  8166.    aliases    The object has aliases. 
  8167.    shared     The object's contents are shared. 
  8168.    UVirt      UVirt object. 
  8169.    zero-init  Object is zero-initialized. 
  8170.    resident   The object is to remain resident. It is not allowed to be paged 
  8171.               out. 
  8172.    low memory The object's memory is to be allocated from low memory. 
  8173.    guard      The object has guard pages. 
  8174.    exec       The object has executable pages 
  8175.    read       The object has readable pages 
  8176.    user       The object has user pages. 
  8177.    write      The object has writable pages. 
  8178.  
  8179.  
  8180. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8181.  
  8182. o Memory Management Control Blocks 
  8183.  
  8184. o Handles 
  8185.  
  8186.  
  8187. ΓòÉΓòÉΓòÉ 11.5.8. Context Record Display ΓòÉΓòÉΓòÉ
  8188.  
  8189. Select one: 
  8190.  
  8191. Contents of Display 
  8192.  
  8193. Selecting 
  8194.  
  8195. Example Output 
  8196.  
  8197. Related Topics 
  8198.  
  8199.  
  8200. ΓòÉΓòÉΓòÉ <hidden> Context Record Display ΓòÉΓòÉΓòÉ
  8201.  
  8202. Select one: 
  8203.  
  8204. Contents of Display 
  8205.  
  8206. Selecting 
  8207.  
  8208. Example Output 
  8209.  
  8210. Related Topics 
  8211.  
  8212.  
  8213. ΓòÉΓòÉΓòÉ <hidden> Selecting the Context Record Display ΓòÉΓòÉΓòÉ
  8214.  
  8215. Context records are displayed by selecting a hyperblock link from an hco field 
  8216. of some display. 
  8217.  
  8218.  
  8219. ΓòÉΓòÉΓòÉ <hidden> Example of the Context Record Display ΓòÉΓòÉΓòÉ
  8220.  
  8221.  hco  next ptda flgs / process / decoded_flags
  8222. 0472  02C6 0283  16  / THESEUS2 / read user write
  8223.  
  8224.  
  8225. ΓòÉΓòÉΓòÉ <hidden> Contents of the Context Record Display ΓòÉΓòÉΓòÉ
  8226.  
  8227. The context record displayed contains the following entries: 
  8228.  
  8229. Column            Meaning 
  8230. hco               The hco of the displayed context record. 
  8231. next              The hco of the next context record in the chain. The last 
  8232.                   context record has a next field of 0000. 
  8233. ptda              The hob of the PTDA which has access to the shared memory 
  8234.                   object. 
  8235. flgs              The flag byte is presented in hex. It is decoded into English 
  8236.                   at the end of the line. 
  8237. process           The name of the process referred to by the PTDA handle. 
  8238. decoded_flags     The flags are decoded into readable form: 
  8239.  
  8240.    privatized  The context is privatized. 
  8241.    guard       The object has guard pages. 
  8242.    read        Object is readable from this process. 
  8243.    exec        Object is executable from this process. 
  8244.    user        The object has user pages. 
  8245.    write       Object is writable from this process. 
  8246.    originator  This process that originally allocated the object. 
  8247.  
  8248.  
  8249. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8250.  
  8251. o Memory Management Control Blocks 
  8252.  
  8253. o Handles 
  8254.  
  8255.  
  8256. ΓòÉΓòÉΓòÉ 11.5.9. Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  8257.  
  8258. Select one: 
  8259.  
  8260. Contents of Display 
  8261.  
  8262. Selecting 
  8263.  
  8264. Example Output 
  8265.  
  8266. Related Topics 
  8267.  
  8268.  
  8269. ΓòÉΓòÉΓòÉ <hidden> Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  8270.  
  8271. Select one: 
  8272.  
  8273. Contents of Display 
  8274.  
  8275. Selecting 
  8276.  
  8277. Example Output 
  8278.  
  8279. Related Topics 
  8280.  
  8281.  
  8282. ΓòÉΓòÉΓòÉ <hidden> Selecting the Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  8283.  
  8284. Virtual Page Table entries are displayed by selecting a hyperblock link from a 
  8285. vp field of the Page Frame display. 
  8286.  
  8287. They also appear a number of other displays. 
  8288.  
  8289.  
  8290. ΓòÉΓòÉΓòÉ <hidden> Example of the Virtual Page Table Entry Display ΓòÉΓòÉΓòÉ
  8291.  
  8292. Virtual Page Table entry at FF40F064:
  8293.   hob=0007 refCount=0001 relPage=0001 block#=00002 flag=0410 / pf resident
  8294.  
  8295.  
  8296. ΓòÉΓòÉΓòÉ <hidden> Contents of the Virtual Page Table entry display ΓòÉΓòÉΓòÉ
  8297.  
  8298. The fields of the Virtual Page Table entry are decoded: 
  8299.  
  8300. Term             Meaning 
  8301. hob=oooo         The hob of the memory object that this page is a part of. 
  8302. refCount=hhhh    The number of objects that refer to this page. 
  8303. relPage=hhhh     The relative page number within the object. 
  8304. block#=hhhhh     Pager disk frame or loader block number for pages which are 
  8305.                  not in RAM. The physical page number of pages which are in 
  8306.                  RAM. 
  8307. flag=hhhh        Flags indicating the status of the virtual page. They are 
  8308.                  shown as hex and then decoded into ASCII: 
  8309.  
  8310.    busy          Page semaphore is taken. 
  8311.    wanted        Page semaphore has been requested. 
  8312.    cache         Search page cache for the page. 
  8313.    pfidle        Cross linked to an idle page frame. 
  8314.    pf            Cross linked to a page frame. 
  8315.    swapped       Has a swap file disk frame. 
  8316.    dirty         Page contents have been written to. 
  8317.    shdirty       Shadow dirty bit (for VDMs). 
  8318.    sow           Change to swappable on write. 
  8319.    resident      Cannot be moved or paged. 
  8320.    discardable   Page is discardable. 
  8321.  
  8322.  
  8323. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8324.  
  8325. o Memory addressing 
  8326.  
  8327. o Handles 
  8328.  
  8329.  
  8330. ΓòÉΓòÉΓòÉ 11.5.10. MTE Display ΓòÉΓòÉΓòÉ
  8331.  
  8332. Select one: 
  8333.  
  8334. Contents of Display 
  8335.  
  8336. Selecting 
  8337.  
  8338. Example Output 
  8339.  
  8340. Related Topics 
  8341.  
  8342.  
  8343. ΓòÉΓòÉΓòÉ <hidden> Selecting the MTE Display ΓòÉΓòÉΓòÉ
  8344.  
  8345. This is selected by a hyperblock link from the MTE @ column of the Modules 
  8346. display. 
  8347.  
  8348.  
  8349. ΓòÉΓòÉΓòÉ <hidden> Example of the MTE Display ΓòÉΓòÉΓòÉ
  8350.  
  8351. Resident portion of MTE (@ FEB717E8):
  8352. Use count = 1
  8353. Number of entries in Imp Mod Name Tbl = 5
  8354. Module name @ FEB71820 -> THESEUS2
  8355. Module pointers table @ FEB71808
  8356. Handle of the mte = 0345
  8357. File system number for open file = 0077
  8358. Link to next mte = FEB71B18
  8359. Link to swappable mte = FE5BA250
  8360. Signature = LX
  8361. Flags = 04903142
  8362.   Class = Program
  8363.   File Media permits discarding
  8364.   Program module
  8365.  
  8366. Swappable portion of MTE (@ FE5BA250):
  8367. Module # pages = 0000003C
  8368. Initial instruction pointer = 0001:00026634
  8369. Initial stack       pointer = 0002:0001B100
  8370. Fixup section size = 00009440
  8371. Object table offset = FE5BA305
  8372. Number of objects in module = 00000002
  8373. Object page map offset = FE5BA335
  8374. Object iterated data map offset = 00000000
  8375. Offset of Resource Table = 00000000
  8376. Number of resource entries = 00000000
  8377. Offset of resident name table = FE5BA515
  8378. Offset of Entry Table = FE5BA521
  8379. Offset of Fixup Page Table = FE5BA522
  8380. Offset of Fixup Record Table = FE5BA616
  8381. Offset of Import Module Name Table = FE5C393D
  8382. Offset of Imp Procedure Name Table = FE5C3962
  8383. Offset of Enumerated Data Pages = 00009800
  8384. Number of preload pages = 00000000
  8385. Offset of Non-resident Names Table = 00044400
  8386. Size of Non-resident Name Table = 00000042
  8387. Object # for automatic data object = 00000002
  8388. Offset of the debugging info = 00000000
  8389. The length of the debug info in bytes = 00000000
  8390. Number of instance pages in preload section = 00000000
  8391. Use for converted 16-bit modules = 00000000 (heapsize)
  8392. Full pathname = FE5BA2EC -> E:\THESEUS2\THESEUS2.EXE
  8393. Length of pathname = 0018
  8394. Used by dynamic trace = 0000
  8395. Count of threads waiting on MTE semaphore = 0
  8396. Slot number of the owner of the MTE semaphore = 0000
  8397. Pointer to preload pages = 00000000
  8398. Start of object with preload pages = FDD09000
  8399. Size  of object with preload pages = 00000000
  8400. Pointer to file cache for Dos32CacheModule= 00000000
  8401. Use for converted 16-bit modules = 0000 (alignshift)
  8402. Use for converted 16-bit modules = 0000 (stacksize)
  8403. Original flags from NE header = 0000
  8404. expver from NE header = 0000
  8405. exetype from NE header = 0000
  8406. Original other flags from NE header = 0000
  8407. Number of preload pages used = 00
  8408.  
  8409. Object Table:
  8410. Obj#   address      size   hob   sel  page map  map size     flags / flags...
  8411. 0001  00010000  0002A579  035D  000F  00000001  0000002B  80002025 / readable executable shared 32-bit
  8412. 0002  00040000  0001B100  0000  0027  0000002C  00000011  80002003 / readable writeable 32-bit
  8413.  
  8414.  
  8415. ΓòÉΓòÉΓòÉ <hidden> Contents of the MTE Display ΓòÉΓòÉΓòÉ
  8416.  
  8417. The MTE is in two sections: resident and swappable. They are displayed as 
  8418. follows: 
  8419.  
  8420. The resident portion of the MTE is as follows: 
  8421.  
  8422. Resident portion of MTE (@ llllllll): 
  8423.           The linear address of the resident portion of the MTE. 
  8424. Use count = i 
  8425.           Number of times a DosLoadModule function has been done for this 
  8426.           module. 
  8427. Number of entries in Imp Mod Name Tbl = i 
  8428.           Number of entries in Import Module Name Table. 
  8429. Module name @ llllllll -> 'name' 
  8430.           The linear address of the module name, followed by the name in ASCII. 
  8431.           (Only the linear address is in the MTE; THESEUS2 retrieves the 
  8432.           contents of the ASCII string that is pointed to.) 
  8433. Module pointers table @ llllllll 
  8434.           Pointer to the Module Pointers Table. 
  8435. Handle of the mte = oooo 
  8436.           The hob of this MTE. 
  8437. File system number for open file = hhhh 
  8438.           System file number for the open .EXE or .DLL program file. 
  8439. Link to next mte = llllllll 
  8440.           Linear address of the next MTE in the chain. 
  8441. Link to swappable mte = llllllll 
  8442.           Linear address of the swappable portion of this MTE. 
  8443. Signature = aa 
  8444.           The signature indicates the type of the module. 
  8445.           NE = 16-bit segmented module.  (Built by the old linker.) 
  8446.           LX = 16 or 32-bit module.  (Build by the new linker.) 
  8447. Flags = hhhhhhhh 
  8448.           Module flags.  The relevant flags are decoded on the following lines. 
  8449.  
  8450. The swappable portion of the MTE is as follows: 
  8451.  
  8452. Swappable portion of MTE (@ llllllll): 
  8453.           The linear address of the swappable portion of the MTE. 
  8454. Module # pages 
  8455.           The number of pages in the module. 
  8456. Initial instruction pointer = ssss:oooooooo 
  8457.           ssss is the module-relative segment/object number where the initial 
  8458.           entry point is located. oooooooo is the offset within the 
  8459.           segment/object of the entry point. (The module type determines 
  8460.           whether the ssss is segment or object.) This address will match the 
  8461.           address on the .MAP file produced by the linker. 
  8462. Initial stack    pointer = ssss:oooooooo 
  8463.           ssss is the module-relative segment/object number where the initial 
  8464.           stack is located. oooooooo is the offset within the segment/object of 
  8465.           the stack. (The module type determines whether the ssss is segment or 
  8466.           object.) This address will match the address on the .MAP file 
  8467.           produced by the linker. 
  8468. Fixup section size = hhhhhhhh 
  8469.           Number of bytes in the "fixup" section of the module. 
  8470. Object table offset = llllllll 
  8471.           Linear address of the Object Table. 
  8472. Number of objects in module = hhhhhhhh 
  8473.           Number of segments/objects in the module. 
  8474. Object page map offset = llllllll 
  8475.           Linear address of the Object Page Map. 
  8476. Object iterated data map offset = hhhhhhhh 
  8477.           ??? 
  8478. Offset of Resource Table = llllllll 
  8479.           Linear address of the modules Resource Table. 
  8480. Number of resource entries = hhhhhhhh 
  8481.           Number of entries in the Resource Table. 
  8482. Offset of resident name table = llllllll 
  8483.           Linear address of the Resident Name Table. 
  8484. Offset of Entry Table = llllllll 
  8485.           Linear address of the Entry Table. 
  8486. Offset of Fixup Page Table = llllllll 
  8487.           Linear address of the Fixup Page Table. 
  8488. Offset of Fixup Record Table = llllllll 
  8489.           Linear address of the Fixup Record Table. 
  8490. Offset of Import Module Name Table = llllllll 
  8491.           Linear address of the Import Module Name Table. 
  8492. Offset of Imp Procedure Name Table = llllllll 
  8493.           Linear address of the Import Procedure Name Table. 
  8494. Offset of Enumerated Data Pages = hhhhhhhh 
  8495.           ??? 
  8496. Number of preload pages = hhhhhhhh 
  8497.           Number of pages which have been marked "preload" by the linker. 
  8498. Offset of Non-resident Names Table = hhhhhhh 
  8499.           ??? 
  8500. Size of Non-resident Name Table = hhhhhhhh 
  8501.           ??? 
  8502. Object # for automatic data object = ssssssss 
  8503.           Segment/object number that contains the automatic data object. 
  8504. Offset of the debugging info = hhhhhhhh 
  8505.           ??? 
  8506. The length of the debug info in bytes = hhhhhhhh 
  8507.           The size of the debug information in bytes. 
  8508. Number of instance pages in preload section = hhhhhhhh 
  8509.           Number of instance pages that are to be preloaded. 
  8510. Use for converted 16-bit modules = hhhhhhhh (heapsize) 
  8511.           Size of the heap. 
  8512. Full pathname = llllllll -> 'file name' 
  8513.           Linear address of the fully qualified file name, followed by the 
  8514.           fully qualified file name. (Only the linear address is in the MTE; 
  8515.           THESEUS2 retrieves the contents of the ASCIIZ string that is pointed 
  8516.           to.) 
  8517. Length of pathname = hhhh 
  8518.           Length (in bytes) of the path name. 
  8519. Used by dynamic trace = hhhh 
  8520.           ??? 
  8521. Count of threads waiting on MTE semaphore = i 
  8522.           ??? 
  8523. Slot number of the owner of the MTE semaphore = hhhh 
  8524.           ??? 
  8525. Pointer to preload pages = hhhhhhhh 
  8526.           ??? 
  8527. Start of object with preload pages = hhhhhhhh 
  8528.           ??? 
  8529. Size  of object with preload pages = hhhhhhhh 
  8530.           ??? 
  8531. Pointer to file cache for Dos32CacheModule= hhhhhhhh 
  8532.           ??? 
  8533. Use for converted 16-bit modules = hhhh (alignshift) 
  8534.           ??? 
  8535. Use for converted 16-bit modules = hhhh (stacksize) 
  8536.           ??? 
  8537. Original flags from NE header = hhhh 
  8538.           ??? 
  8539. expver from NE header = hhhh 
  8540.           ??? 
  8541. exetype from NE header = hhhh 
  8542.           ??? 
  8543. Original other flags from NE header = hhhh 
  8544.           ??? 
  8545. Number of preload pages used = hh 
  8546.           ??? 
  8547.  
  8548. Following this is either a Segment Table or Object Table, depending on the 
  8549. module type. 
  8550.  
  8551. Each line of an Object Table contains the following: 
  8552.  
  8553. Obj#        Module relative number of the object. This will match the linker's 
  8554.             output. 
  8555. address     Linear address of the object in memory. 
  8556. size        Size of the object in bytes. 
  8557. hob         The hob assigned to the object. 
  8558. sel         Selector in the LDT assigned to this object. (This is only for 
  8559.             16-bit compatibility.) 
  8560. page map    ??? 
  8561. map size    ??? 
  8562. flags       Flags for this object.  They are decoded to the right. 
  8563.  
  8564. Each line of a Segment Table contains the following: 
  8565.  
  8566. Seg#        Module relative number of the segment. This will match the linker's 
  8567.             output. 
  8568. file offset Location of the segment in the file on disk. The interpretation of 
  8569.             this depends on the "file granularity" specified to the linker. 
  8570. file size   The size, in bytes, of the segment within the file. 
  8571. flag        Flags for this segment.  They are decoded to the right. 
  8572. ram size    The size, in bytes, of the segment after being loaded into RAM. 
  8573. hob         The hob assigned to the segment. 
  8574. sel         Selector in the LDT assigned to this object. 
  8575. fixups      ??? 
  8576.  
  8577.  
  8578. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8579.  
  8580. o Memory Management Control Blocks 
  8581.  
  8582. o Memory addressing 
  8583.  
  8584.  
  8585. ΓòÉΓòÉΓòÉ 11.5.11. TCB Display ΓòÉΓòÉΓòÉ
  8586.  
  8587. Select one: 
  8588.  
  8589. Contents of Display 
  8590.  
  8591. Selecting 
  8592.  
  8593. Example Output 
  8594.  
  8595. Related Topics 
  8596.  
  8597.  
  8598. ΓòÉΓòÉΓòÉ <hidden> Selecting the TCB Display ΓòÉΓòÉΓòÉ
  8599.  
  8600. This is selected by a hyperblock link from the TCB column of a display. 
  8601.  
  8602.  
  8603. ΓòÉΓòÉΓòÉ <hidden> Example of the TCB Display ΓòÉΓòÉΓòÉ
  8604.  
  8605. Thread Control Block at FD423E78:
  8606.  
  8607. TCB Linkage Information:
  8608. TID = 0001, Thread slot number = 0028
  8609. Forced action bit vector = 00000000
  8610. PTDA @ 7D3234E0
  8611. TSD @ 7D145000, TIB @ 00060030
  8612. Forward link to next (active) TCB = 00000000
  8613.  
  8614. Dos32CreateThread stack parameters:
  8615. Virtual   size of stack object = 00000000
  8616. Committed size of stack object = 00000000
  8617. Virtual   base of stack object = FFFFFFFF
  8618. Libi load data area link head    @ 00000000
  8619. Libi load data area link current @ 00000000
  8620. Libi load data area link free    @ 00000000
  8621. Stack frame type = FFF3CCCC
  8622. Stack frame base pointer = 7D145F3C
  8623. Local context hook head = FD423EB0, 00000000
  8624.  
  8625. Information needed for context switching:
  8626. KStack page 0 of TCB  = 0065D203
  8627. KStack page 1 of TCB  = 0063C203
  8628. KStack TSD page       = 005AA203
  8629. KStack page 0 of PTDA = 00000000
  8630. KStack page 1 of PTDA = 00000000
  8631. KStack page 2 of PTDA = 00623203
  8632. SS-relative offset of Current TCB = 00009288
  8633. SS-relative offset of Current TSD = 00004410
  8634. stack-to-flat TCB conversion value = FD41ABF0
  8635. stack-to-flat TSD conversion value = 7D140BF0
  8636.  
  8637. Variables used in the file system:
  8638. User's I/O transfer address = 03F05E70
  8639. Position of first sector accessed within the file = 00000000
  8640. Pointer to SFT we're working with = 00000000
  8641. Number of valid (previously written) sectors = 0000005E
  8642. Redirector TCB (Used by LANMAN) = 05C10000
  8643. Process ID for file sharing checks = 0000
  8644. User    ID for file sharing checks = 0000
  8645. non-zero ==> no redirection = 00
  8646. see SetAttrib/file.asm = 00
  8647. JFN flag bits for current file handle = 1C
  8648. Allowed I 24 answers (see allowed_) = 00
  8649. Fields to support opportunistic locks.  These are set by the server.
  8650.     Server's per file cookie = 00120000
  8651.     Whether server wants oplock, etc. = FFFFEF4F
  8652. Variables used by the FAT file system.  These are specific for the FAT
  8653.  file system and are not used for any IFS.
  8654.     Currently assigned buffer = FFFF0000
  8655.     Handle of current VPB = 0005
  8656.     TCBNextAdd = 001D
  8657.     Position of first byte within sector = 0000
  8658.     TCBClusNum = 0000
  8659.     TCBLastPos = 0101
  8660.     Number of bytes in 1st sector = 0000
  8661.     # of bytes in last sector = 003E
  8662.     Number of whole sectors = 0000
  8663.     Position of first sector within cluster = FFFFFFF4
  8664. How to handle a HardError = 02
  8665. Action response from user on HardError = 01
  8666. NZ if TCBLockHndl is valid = 00
  8667. Lock Handle of user mem = D9 02 0C 06 D4 50 30 00 40 FF 00 00
  8668. Address of current CDS = 000051FA
  8669. Address of current FSC = 000051F4
  8670. NZ if user did FAIL on I 24 = 0000
  8671.  
  8672. 16bit addr of the ramsem blocked upon = 072306E0
  8673. Debugger display address fo ksems = FFFFFFFF
  8674.  
  8675. Per-thread NPX Information:
  8676. buffer @ 7CAD5EA0
  8677.  
  8678. TKWaitThread fields:
  8679. Next waiting TCB = 00000000
  8680. Threads waiting for me to die = 00000000
  8681.  
  8682. Scheduler fields:
  8683. Scheduler queue location (actual) = 05
  8684. Current scheduler state (desired) = 05
  8685. TKSleep/TKWakeup flags = 00
  8686. Window Boost count = 01
  8687. Priority Class (user) = 02
  8688. Priority Level (user) = 00
  8689. Priority Class modifier bits = 60
  8690. Misc. Scheduler flags = 00
  8691. Calculated Priority = 0500
  8692. Minimum Scheduling priority = 0000
  8693. Kernel Boost Lock nesting count = 00000000
  8694. Next     priority queue in chain = FD423E78
  8695. Previous priority queue in chain = FD423E78
  8696. Higher priority thread = FD423E78
  8697. Lower  priority thread = FD423E78
  8698. Next     same-priority thread = FD423E78
  8699. Previous same-priority thread = FD423E78
  8700. TKQueryWakeup TCB list = 00000000
  8701. Sleep ID this TCB is sleeping on = FFFE0064
  8702. Timeout/Starvation Timeout element = ????
  8703. Used by the loader (TCBCheckedSig) = 01
  8704.  
  8705. Per-thread Swapper Information:
  8706. Status of swapping = 00
  8707.  
  8708. Info about nesting level in FSH_DoVolIO:
  8709. Nesting level of FSH_DoVolIO = 00
  8710.  
  8711. Device I/O fields:
  8712. Flag to indicate if request pkt in use = 00
  8713. I/O request packet for thread = 01000000
  8714.  
  8715.  
  8716. ΓòÉΓòÉΓòÉ <hidden> Contents of the TCB Display ΓòÉΓòÉΓòÉ
  8717.  
  8718. No additional explanation is available. 
  8719.  
  8720.  
  8721. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8722.  
  8723. o Memory Management Control Blocks 
  8724.  
  8725. o Memory addressing 
  8726.  
  8727.  
  8728. ΓòÉΓòÉΓòÉ 11.5.12. Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  8729.  
  8730. Select one: 
  8731.  
  8732. Contents of Display 
  8733.  
  8734. Selecting 
  8735.  
  8736. Example Output 
  8737.  
  8738. Related Topics 
  8739.  
  8740.  
  8741. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  8742.  
  8743. This is selected by a hyperblock link from the accessed - yes column of the 
  8744. Detail of Working Set (by Object) display. 
  8745.  
  8746.  
  8747. ΓòÉΓòÉΓòÉ <hidden> Example of the Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  8748.  
  8749. Details of Working Set for Object with hob = 0429, Process = 'THESEUS2':
  8750. It is (shared) object # 0001 of module THESEUS2.
  8751.   linear   physical  time   status
  8752. 00010000   00639000     1   in Working Set
  8753. 00011000   00060000         not in Working Set
  8754. 00012000   003BF000     1   in Working Set
  8755. 00013000   0047E000     1   in Working Set
  8756. 00014000   00058000     1   in Working Set
  8757. 00015000   00895000     1   in Working Set
  8758. 00016000   0070B000     3   in Working Set
  8759. 00017000   001F6000     1   in Working Set
  8760. 00018000   006B0000         not in Working Set
  8761. 00019000   00096000         not in Working Set
  8762. 0001A000   00072000         not in Working Set
  8763. 0001B000   003BC000         not in Working Set
  8764. 0001C000   0048A000         not in Working Set
  8765. 0001D000                    not in memory
  8766. 0001E000                    not in memory
  8767. 0001F000                    not in memory
  8768. 00020000                    not in memory
  8769. 00021000   005C3000     1   in Working Set
  8770. 00022000                    not in memory
  8771. 00023000                    not in memory
  8772.   linear   physical  time   status
  8773. 00024000                    not in memory
  8774. 00025000   0043D000         not in Working Set
  8775. 00026000                    not in memory
  8776. 00027000                    not in memory
  8777. 00028000   00488000     1   in Working Set
  8778. 00029000   0024E000     1   in Working Set
  8779. 0002A000   002E3000     1   in Working Set
  8780. 0002B000   002D9000         not in Working Set
  8781. 0002C000   005F0000         not in Working Set
  8782. 0002D000   00186000         not in Working Set
  8783. 0002E000   005CD000     1   in Working Set
  8784. 0002F000                    not in memory
  8785. 00030000   00444000         not in Working Set
  8786. 00031000   00363000         not in Working Set
  8787. 00032000   0004B000     1   in Working Set
  8788. 00033000   00487000     1   in Working Set
  8789. 00034000   00474000     1   in Working Set
  8790. 00035000   00340000         not in Working Set
  8791. 00036000   00190000     1   in Working Set
  8792. 00037000   0018E000     1   in Working Set
  8793.   linear   physical  time   status
  8794. 00038000   009E7000     1   in Working Set
  8795. 00039000   0034D000     1   in Working Set
  8796. 0003A000   004C3000     1   in Working Set
  8797. 0003B000   00699000         not in Working Set
  8798. 0003C000   009F2000     1   in Working Set
  8799.  
  8800.  
  8801. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detail Working Set Information for an Object Display ΓòÉΓòÉΓòÉ
  8802.  
  8803. One line is displayed for each committed page within the object: 
  8804.  
  8805. Column     Meaning 
  8806. linear     The linear address of the page. 
  8807. physical   The physical address of the page. 
  8808. time       The number of intervals since the page was last accessed. 
  8809. status     The status of the page relative to the working set: 
  8810.  
  8811.    in Working Set        The page was in memory and was accessed sometime 
  8812.                          within the working set interval. 
  8813.    not in Working Set    The page was in memory but was last accessed outside 
  8814.                          the working set interval. 
  8815.    not in memory         This is a committed page that was not in RAM during 
  8816.                          the run. 
  8817.  
  8818.  
  8819. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8820.  
  8821. o Memory analysis 
  8822.  
  8823. o Memory addressing 
  8824.  
  8825.  
  8826. ΓòÉΓòÉΓòÉ 11.5.13. SFT Entry Display ΓòÉΓòÉΓòÉ
  8827.  
  8828. Select one: 
  8829.  
  8830. Contents of Display 
  8831.  
  8832. Selecting 
  8833.  
  8834. Example Output 
  8835.  
  8836. Related Topics 
  8837.  
  8838.  
  8839. ΓòÉΓòÉΓòÉ <hidden> Selecting the SFT Entry Display ΓòÉΓòÉΓòÉ
  8840.  
  8841. This is selected by a hyperblock link of the SFT address field on the Open 
  8842. Files display. 
  8843.  
  8844.  
  8845. ΓòÉΓòÉΓòÉ <hidden> Example of the SFT Entry Display ΓòÉΓòÉΓòÉ
  8846.  
  8847. System File Table Entry located at 03F8:30A6:
  8848.  
  8849. Base portion of the SFT entry:
  8850.   Reference count = 1
  8851.   User count = 0
  8852.   Flag word 1 = 0040 / local file 40
  8853.   Flag word 2 = 0000 /
  8854.   Device pointer = 00000012
  8855.   File System Control (FSC) block @ 0000FF40
  8856.   'cookie' = 00000000
  8857.   Next in chain = 0000:0000
  8858.   Master File Table (MFT) entry @ FEB62FA0
  8859.  
  8860. File system dependent portion of the SFT:
  8861.  
  8862. File system independent portion of the SFT:
  8863.   Access mode = 00A0
  8864.   Additional openmode bits for DosOpen2 = 0000
  8865.   handle of volume = 0012
  8866.   Creation time of file = 0000
  8867.   Creation date of file = 0000
  8868.   Time of last access of file 0000
  8869.   Date of last access of file 0000
  8870.   Time of last modification of file = 5C4A
  8871.   Date of last modification of file = 1913
  8872.   Size associated with file = 0003910D
  8873.   Read/Write pointer or LRU count for FCBs = 000060A1
  8874.   User ID = 0000
  8875.   Process ID = 00FF
  8876.   Process Data Block = 0000
  8877.   SFN of this sf_entry = 0062
  8878.   update time stamp flags = 00
  8879.   file/device/named-pipe/FCB = 0000
  8880.   performance counter data block pointer = 00000000
  8881.   DOS attributes of file(sys,hid,r/o,arch = 20
  8882.  
  8883. Used for spooling:
  8884.   16 bit offset to first pending LOCK record = 0000
  8885.   SFN of named pipe for spooled files = 0000
  8886.   Current codepage (font) for data in file = 0
  8887.  
  8888.  
  8889. ΓòÉΓòÉΓòÉ <hidden> Contents of the SFT Entry Display ΓòÉΓòÉΓòÉ
  8890.  
  8891. No additional explanation is available. 
  8892.  
  8893.  
  8894. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8895.  
  8896. o Memory addressing 
  8897.  
  8898.  
  8899. ΓòÉΓòÉΓòÉ 11.5.14. Detailed Memory Assignment Information ΓòÉΓòÉΓòÉ
  8900.  
  8901. Select one: 
  8902.  
  8903. Contents of Display 
  8904.  
  8905. Selecting 
  8906.  
  8907. Example Output 
  8908.  
  8909. Related Topics 
  8910.  
  8911.  
  8912. ΓòÉΓòÉΓòÉ <hidden> Selecting the Detailed Memory Assignment Information Display ΓòÉΓòÉΓòÉ
  8913.  
  8914. This is selected by a hyperblock link of the RAM amount field on the Free, 
  8915. Idle, and Locked Memory display or the RAM Usage by Process display. 
  8916.  
  8917.  
  8918. ΓòÉΓòÉΓòÉ <hidden> Example of the Detailed Memory Assignment Information Display ΓòÉΓòÉΓòÉ
  8919.  
  8920. There are two different formats of the information displayed, one for Locked 
  8921. memory and one for all the other types. 
  8922.  
  8923. The detail of locked memory is: 
  8924.  
  8925. Detail memory assignment information, PID = 0000, Process = system:
  8926.  giving detail about Long  Term Locked memory:
  8927. 0012F000 is Long Term Locked, count = 1.
  8928. 004EB000 is Long Term Locked, count = 1.
  8929. 00510000 is Long Term Locked, count = 5.
  8930. 00670000 is Long Term Locked, count = 1.
  8931. ┬╖┬╖┬╖
  8932.  
  8933. The detail of other type memory is: 
  8934.  
  8935. Detail memory assignment information, PID = 0000, Process = system,
  8936.  giving detail about IDLE memory:
  8937. 0009C000 is assigned as IDLE
  8938. 001D1000 is assigned as IDLE
  8939. 001E8000 is assigned as IDLE
  8940. 001ED000 is assigned as IDLE, page is dirty
  8941. ┬╖┬╖┬╖
  8942.  
  8943.  
  8944. ΓòÉΓòÉΓòÉ <hidden> Contents of the Detailed Memory Assignment Information Display ΓòÉΓòÉΓòÉ
  8945.  
  8946. The free and idle detail lists are presented in the order they are linked into 
  8947. the chain. If an idle page is dirty, it is indicated as such. 
  8948.  
  8949. The locked detail lists are presented in physical page address order. The lock 
  8950. count from the Page Frame Table is given. This count specifies the number of 
  8951. times that Device Drivers have locked the particular page. 
  8952.  
  8953.  
  8954. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  8955.  
  8956. o Memory addressing 
  8957.  
  8958. o Physical Memory States 
  8959.  
  8960.  
  8961. ΓòÉΓòÉΓòÉ 11.6. Common Elements ΓòÉΓòÉΓòÉ
  8962.  
  8963. This section describes items common to several of the displays. 
  8964.  
  8965. Displays are: 
  8966.  
  8967. Descriptor Table Entry 
  8968.           Displays fields of the entries in the GDT, LDT, and IDT displays. 
  8969. Page Table Entry/Page Directory Entry 
  8970.           Displays fields of the entries in the Page Table Entry/Page Directory 
  8971.           Entry displays. 
  8972.  
  8973.  
  8974. ΓòÉΓòÉΓòÉ 11.6.1. Descriptor Table Entry ΓòÉΓòÉΓòÉ
  8975.  
  8976. The fields of the Descriptor Table Entry are decoded. (See the Intel 80386 
  8977. Programmer's Reference Manual for details about each field.) 
  8978.  
  8979. Term           Meaning 
  8980. Table          This is either GDT, LDT, Trap, or Int. 
  8981. (number)       For GDT and LDT, this is the selector referring to this entry. 
  8982.                For Trap, this is the trap number referring to this entry. 
  8983.                For Int, this is the interrupt number referring to this entry. 
  8984. Type           Type of selector: 
  8985.  
  8986.    Code           Code segment 
  8987.    Data           Data segment 
  8988.    ATSS16         Available Task State Segment - 286 mode 
  8989.    ATSS32         Available Task State Segment - 386 mode 
  8990.    BTSS16         Busy Task State Segment - 286 mode 
  8991.    BTSS32         Busy Task State Segment - 386 mode 
  8992.    LDT            Selector that points to an LDT 
  8993.    CallG          Call Gate - 286 mode 
  8994.    CallG32        Call Gate - 386 mode 
  8995.    TaskG          Task Gate 
  8996.    IntG           Interrupt Gate - 286 mode 
  8997.    IntG32         Interrupt Gate - 386 mode 
  8998.    TrapG          Trap Gate - 286 mode 
  8999.    TrapG32        Trap Gate - 386 mode. 
  9000. Base           Base address (linear) of the segment. 
  9001. Limit          Length (-1) of the segment. (For "expand up" segments, this is 
  9002.                the largest offset that may be used. For "expand down" segments, 
  9003.                this is the smallest offset that may be used.) 
  9004. DPL            Descriptor Privilege Level (2 bits). 
  9005. CF             Code segment is "Conforming" (0=not conforming, 1=conforming). 
  9006. R              Code segment is "Readable" (0=not readable, 1=readable). 
  9007. ED             Data segment is "Expand Down" (0=expand up, 1=expand down). 
  9008. W              Data segment is "Writable" (0=not writable, 1=writable). 
  9009. A              Segment has been Accessed (0=not accessed, 1=accessed) 
  9010. P              Segment is Present (0=not present, 1=present). 
  9011. G              Granularity of limit value (0=byte (64K segment), 1=page (4G 
  9012.                segment)). 
  9013. D              Code segment default operand size (0=16-bit, 1=32-bit). 
  9014. B              Data segment default size (0=16-bit, 1=32-bit). 
  9015. Selector       Selector of gate's target segment. 
  9016. Offset         Offset within selector of target code. 
  9017. Word Count     Number of words on stack to be copied. 
  9018. Alias          The selector is an "alias". 
  9019.  
  9020.  
  9021. ΓòÉΓòÉΓòÉ 11.6.2. Page Table Entry/Page Directory Entry ΓòÉΓòÉΓòÉ
  9022.  
  9023. The fields of the Page Table Entry or Page Directory Entry are decoded. (See 
  9024. the Intel 80386 Programmer's Reference Manual for details about each field.) 
  9025.  
  9026. Term           Meaning 
  9027. *              The asterisk (*) in the first column indicates a PDE. 
  9028. Linear         The linear address associated with the entry. 
  9029. Physical       The physical address of the page in memory. (The page is 
  9030.                present.) 
  9031. Invalid page   The entry indicates that there is no committed page for this 
  9032.                address. 
  9033. Guard          The page is a "guard page". 
  9034. FrameId        The index into the Virtual Page Table for the page. (The page is 
  9035.                not present.) 
  9036. D              The page is "Dirty" (0=clean, 1=dirty). 
  9037. A              The page has been "Accessed" (0=not accessed, 1=accessed). 
  9038. User           The page is a "User page". The page can be accessed from any 
  9039.                protection ring. 
  9040. Super          The page is a "Supervisor page". The page can only be accessed 
  9041.                from ring 0. 
  9042. R/W            The page can be written. 
  9043. R/O            The page can only be read. 
  9044. P              The page is "Present" (0=not present, 1=present). 
  9045. Resident       The page is not to be paged out nor discarded. 
  9046. UVirt          The page is a UVirt page. 
  9047. Cache_disabled ??? 
  9048. Cache_write-through ??? 
  9049.  
  9050.  
  9051. ΓòÉΓòÉΓòÉ 12. Application Programming Interface ΓòÉΓòÉΓòÉ
  9052.  
  9053. THESEUS2 provides an Application Programming Interface (API) for certain of its 
  9054. functions. These are provided with the THESEUS0.DLL file. 
  9055.  
  9056. CAUTION:
  9057. These functions should only be used by a single thread of an application. They 
  9058. use the Microsoft** compiler's DLL library and it is probably not compatible 
  9059. with CSet/2*'s multi-thread environment. 
  9060.  
  9061. The functions provided by THESEUS0.DLL can be accessed from either a 'C' 
  9062. program or REXX. 
  9063.  
  9064.  
  9065. ΓòÉΓòÉΓòÉ 12.1. Restriction ΓòÉΓòÉΓòÉ
  9066.  
  9067. You may not distribute the THESEUS0.DLL program unless you have a Software 
  9068. Technology License Agreement with IBM for the THESEUS0.DLL program. 
  9069.  
  9070.  
  9071. ΓòÉΓòÉΓòÉ 12.2. 'C' Application Programming Interface ΓòÉΓòÉΓòÉ
  9072.  
  9073. The functions provided by THESEUS0.DLL are divided into the following 
  9074. categories: 
  9075.  
  9076. Error Handling, Initialization/Termination, and Handle Management 
  9077.           Functions to handle errors, cause THESEUS0.DLL to initialize and 
  9078.           terminate and THESEUS0 handle management. 
  9079. Free Memory, Swapper, and Process Functions 
  9080.           Functions to determine information about the system as a whole. 
  9081. Working Set Functions 
  9082.           Functions to perform working set analysis. 
  9083.  
  9084. Note:  THESEUS0.DLL has 32-bit interfaces ONLY. If you want to interface to it 
  9085. from a 16-bit compiler, then you must provide the THUNKS yourself. 
  9086.  
  9087.  
  9088. ΓòÉΓòÉΓòÉ 12.2.1. Error Handling, Initialization/Termination, and Handle Management ΓòÉΓòÉΓòÉ
  9089.  
  9090. These functions apply to all the APIs. 
  9091.  
  9092. Error handling function: 
  9093.  
  9094. error handler        Specify the error handler provided by the user. 
  9095.  
  9096. Initialization/termination functions: 
  9097.  
  9098. T2Initialize         Initialize THESEUS0.DLL for use. 
  9099. T2Terminate          Terminate the use of THESEUS0.DLL. 
  9100.  
  9101. Handle management functions: 
  9102.  
  9103. T2GetHandle0         Get an instance handle. 
  9104. T2ReleaseHandle0     Release an instance handle. 
  9105.  
  9106.  
  9107. ΓòÉΓòÉΓòÉ 12.2.1.1. error handler ΓòÉΓòÉΓòÉ
  9108.  
  9109. Select an item: 
  9110.  
  9111. Function Syntax 
  9112.  
  9113. Parameters 
  9114.  
  9115. Example 
  9116.  
  9117. Related Functions 
  9118.  
  9119.  
  9120. ΓòÉΓòÉΓòÉ <hidden> Syntax - error handler ΓòÉΓòÉΓòÉ
  9121.  
  9122. The error handler is provided by the user to format and display errors 
  9123. generated by the routines in THESEUS0.DLL. It must be provided by the user 
  9124. program because the lower level routines do not know what the output 
  9125. environment is. 
  9126.  
  9127. #include "THESEUS0.h"
  9128.  
  9129. VOID EXPENTRY error_handler0( T2HANDLE0 t2handle0,
  9130.                               ULONG     error_code,
  9131.                               ULONG     p1,
  9132.                               ULONG     p2)
  9133. {
  9134.   /* error handler code */
  9135. }
  9136.  
  9137.  
  9138. ΓòÉΓòÉΓòÉ <hidden> Parameters - error handler ΓòÉΓòÉΓòÉ
  9139.  
  9140. t2handle0 (T2HANDLE0) - input 
  9141.           The instance handle that was being used by the lower level routine 
  9142.           when the error was detected. This is given to the error routine in 
  9143.           case the output is handle specific. 
  9144.  
  9145. error_code (ULONG) - input 
  9146.           The values of the error_code and meanings of the other two parameters 
  9147.           are: 
  9148.  
  9149.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  9150.                     Γöéerror_codeΓöép1    Γöép2    Γöéexplanation                      Γöé
  9151.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9152.                     Γöé1         ΓöélinearΓöén/a   ΓöéThe starting address (linear) hasΓöé
  9153.                     Γöé          Γöé      Γöé      Γöéno page table.                   Γöé
  9154.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9155.                     Γöé2         ΓöélinearΓöélengthΓöéThe ending address               Γöé
  9156.                     Γöé          Γöé      Γöé      Γöé(linear+length-1) has no page    Γöé
  9157.                     Γöé          Γöé      Γöé      Γöétable.                           Γöé
  9158.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9159.                     Γöé3         ΓöélinearΓöén/a   ΓöéThe page at the starting address Γöé
  9160.                     Γöé          Γöé      Γöé      Γöéis not present.                  Γöé
  9161.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9162.                     Γöé4         ΓöélinearΓöélengthΓöéThe page at the ending address   Γöé
  9163.                     Γöé          Γöé      Γöé      Γöé(linear+length-1) is not present.Γöé
  9164.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9165.                     Γöé5         ΓöélinearΓöélengthΓöéThe address+length is greater    Γöé
  9166.                     Γöé          Γöé      Γöé      Γöéthan 32 bits.                    Γöé
  9167.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  9168.                     Γöé6         ΓöélinearΓöén/a   ΓöéThe header for the System Arena  Γöé
  9169.                     Γöé          Γöé      Γöé      Γöéwas not located. The value found Γöé
  9170.                     Γöé          Γöé      Γöé      Γöéis returned, but is not valid.   Γöé
  9171.                     Γöé          Γöé      Γöé      ΓöéSystem Working Set cannot be     Γöé
  9172.                     Γöé          Γöé      Γöé      Γöémeasured.                        Γöé
  9173.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  9174.  
  9175. p1 (ULONG) - input 
  9176.           see above 
  9177.  
  9178. p2 (ULONG) - input 
  9179.           see above 
  9180.  
  9181.  
  9182. ΓòÉΓòÉΓòÉ <hidden> Example - error handler ΓòÉΓòÉΓòÉ
  9183.  
  9184. This example will print error messages to the STDOUT device. 
  9185.  
  9186. #include <os2.h>
  9187. #include <stdio.h>
  9188. #include "THESEUS0.h"
  9189.  
  9190. VOID EXPENTRY error_handler0( T2HANDLE0 t2handle0,
  9191.                               ULONG     error_code,
  9192.                               ULONG     p1,
  9193.                               ULONG     p2)
  9194. {
  9195.  switch (error_code)
  9196.  {
  9197.   case 1:
  9198.    printf( "Linear address: no Page Table, linear=%0.8X.\n", p1);
  9199.    break;
  9200.   case 2:
  9201.    printf( "Linear address+length: no Page Table, linear=%0.8X, length=%0.8X.\n",
  9202.            p1, p2);
  9203.    break;
  9204.   case 3:
  9205.    printf( "Linear address: page not present, linear=%0.8X.\n", p1);
  9206.    break;
  9207.   case 4:
  9208.    printf( "Linear address+Length: page not present, linear=%0.8X, length=%0.8X.\n",
  9209.            p1, p2);
  9210.    break;
  9211.   case 5:
  9212.    printf( "Linear address+Length: > 32 bits, linear=%0.8X, length=%0.8X.\n",
  9213.            p1, p2);
  9214.    break;
  9215.   case 6:
  9216.    printf( "SystemArenaHeaderLinear = %0.8X.\n", p1);
  9217.    printf( "SystemArenaHeaderLinear was not properly located.\n");
  9218.    printf( "System Working Set cannot be measured.\n");
  9219.    break;
  9220.   default:
  9221.    printf( "unknown error to error_handler0: t2handle0=%0.8X, error_code=%i, p1=%i, p2=%i.\n",
  9222.            t2handle0, error_code, p1, p2);
  9223.    break;
  9224.  }
  9225. }
  9226.  
  9227.  
  9228. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9229.  
  9230. o T2Initialize 
  9231.  
  9232. o T2GetHandle0 
  9233.  
  9234.  
  9235. ΓòÉΓòÉΓòÉ 12.2.1.2. T2Initialize ΓòÉΓòÉΓòÉ
  9236.  
  9237. Select an item: 
  9238.  
  9239. Function Syntax 
  9240.  
  9241. Parameters 
  9242.  
  9243. Return Values 
  9244.  
  9245. Example 
  9246.  
  9247. Related Functions 
  9248.  
  9249.  
  9250. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2Initialize ΓòÉΓòÉΓòÉ
  9251.  
  9252. T2Initialize is used to cause THESEUS0 to initialize all its internal 
  9253. information that is required for later use. 
  9254.  
  9255. #include "THESEUS0.h"
  9256.  
  9257. PULONG ulDDVersion;
  9258. ULONG  ulrc;
  9259.  
  9260. ulrc = T2Initialize0( ulDDVersion, error_handler0);
  9261.  
  9262.  
  9263. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2Initialize ΓòÉΓòÉΓòÉ
  9264.  
  9265. ulDDVersion (PULONG) - output 
  9266.           The address of a ULONG where the version of the THESEUS2.SYS device 
  9267.           driver installed in CONFIG.SYS is returned. The upper USHORT is the 
  9268.           version found and the lower USHORT is the version required. 
  9269.  
  9270.           Note:  It is returned only if the return code is Theseus2WrongDD. 
  9271.  
  9272. error_handler0 (function) - input 
  9273.           The address (name) of the error handler provided by the user program. 
  9274.  
  9275.  
  9276. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2Initialize ΓòÉΓòÉΓòÉ
  9277.  
  9278. ulrc (ULONG) 
  9279.           return code 
  9280.  
  9281.    Theseus2OK 
  9282.              Initialization completed successfully. 
  9283.  
  9284.    Theseus2NoDD 
  9285.              There is no THESEUS2.SYS installed in CONFIG.SYS. The program 
  9286.              cannot continue. 
  9287.  
  9288.    Theseus2WrongDD 
  9289.              The version of THESEUS2.SYS installed in CONFIG.SYS is not the 
  9290.              version expected.  ulDDVersion contains the versions found and 
  9291.              required. The program cannot continue. 
  9292.  
  9293.    Theseus2BadPTDA 
  9294.              The initialization code could not determine the size of the PTDA. 
  9295.              The program cannot continue. 
  9296.  
  9297.    Theseus2NoMte 
  9298.              The initialization code could not determine the format for the 
  9299.              resident portion of the MTE. The program cannot continue. 
  9300.  
  9301.  
  9302. ΓòÉΓòÉΓòÉ <hidden> Example - T2Initialize ΓòÉΓòÉΓòÉ
  9303.  
  9304. This example will cause T2Initialize to perform the initialization of the 
  9305. internal functions. 
  9306.  
  9307. VOID EXPENTRY error_handler0( ULONG error_code, ULONG p1, ULONG p2)
  9308. {
  9309. ┬╖┬╖┬╖
  9310. }
  9311.  
  9312. ULONG ulDDVersion;
  9313.  
  9314. switch (T2Initialize0( &ulDDVersion, error_handler0) )
  9315. {
  9316.  case Theseus2NoDD:
  9317.   printf( "THESEUS2.SYS was not installed in your CONFIG.SYS.\n");
  9318.   break;
  9319.  case Theseus2WrongDD:
  9320.   printf( "The THESEUS2.SYS that was found is not the required version.\n");
  9321.   printf( "Version %i was found and %i is required.\n",
  9322.           ulDDVersion >> 16,
  9323.           ulDDVersion & 0xFFFF);
  9324.   printf( "Please acquire the correct version.\n");
  9325.   break;
  9326.  case Theseus2BadPTDA:
  9327.   printf( "PTDA_findSize did not determine the size of a PTDA.\n");
  9328.   break;
  9329.  case Theseus2OK:
  9330.   printf( "Initialization completed normally.\n");
  9331.  
  9332.   /* Execute program functions. */
  9333.  
  9334.   T2Terminate0();
  9335.   break;
  9336. }
  9337.  
  9338.  
  9339. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9340.  
  9341. o error handler 
  9342.  
  9343. o T2Terminate 
  9344.  
  9345.  
  9346. ΓòÉΓòÉΓòÉ 12.2.1.3. T2Terminate ΓòÉΓòÉΓòÉ
  9347.  
  9348. Select an item: 
  9349.  
  9350. Function Syntax 
  9351.  
  9352. Example 
  9353.  
  9354. Related Functions 
  9355.  
  9356.  
  9357. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2Terminate ΓòÉΓòÉΓòÉ
  9358.  
  9359. T2Terminate is used to cause THESEUS0 to close the device driver. 
  9360.  
  9361. #include "THESEUS0.h"
  9362.  
  9363. T2Terminate0( VOID );
  9364.  
  9365.  
  9366. ΓòÉΓòÉΓòÉ <hidden> Example - T2Terminate ΓòÉΓòÉΓòÉ
  9367.  
  9368. This example will cause T2Terminate to close out all the processing of 
  9369. THESEUS0.DLL. 
  9370.  
  9371. ULONG ulDDVersion;
  9372.  
  9373. switch (T2Initialize0( &ulDDVersion, error_handler0) )
  9374. {
  9375. ┬╖┬╖┬╖
  9376.  case Theseus2OK:
  9377.   printf( "Initialization completed normally.\n");
  9378.  
  9379.   /* Execute program functions. */
  9380.  
  9381.   T2Terminate0();
  9382.   break;
  9383. }
  9384.  
  9385.  
  9386. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9387.  
  9388. o T2Initialize 
  9389.  
  9390.  
  9391. ΓòÉΓòÉΓòÉ 12.2.1.4. T2GetHandle0 ΓòÉΓòÉΓòÉ
  9392.  
  9393. Select an item: 
  9394.  
  9395. Function Syntax 
  9396.  
  9397. Parameters 
  9398.  
  9399. Return Values 
  9400.  
  9401. Example 
  9402.  
  9403. Related Functions 
  9404.  
  9405.  
  9406. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2GetHandle0 ΓòÉΓòÉΓòÉ
  9407.  
  9408. T2GetHandle0 is used to cause THESEUS0 to allocate an instance handle. 
  9409.  
  9410. #include "THESEUS0.h"
  9411. VOID EXPENTRY error_handler0( ULONG error_code, ULONG p1, ULONG p2)
  9412. {
  9413. ┬╖┬╖┬╖
  9414. }
  9415.  
  9416. T2HANDLE0 t2handle0;
  9417.  
  9418. t2handle0 = T2GetHandle0( error_handler0);
  9419.  
  9420.  
  9421. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2GetHandle0 ΓòÉΓòÉΓòÉ
  9422.  
  9423. error_handler0 (function) - input 
  9424.           The address (name) of the error handler provided by the user program. 
  9425.  
  9426.  
  9427. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2GetHandle0 ΓòÉΓòÉΓòÉ
  9428.  
  9429. t2handle0 (T2HANDLE0) 
  9430.           The new instance handle. This handle must be passed to other 
  9431.           functions. 
  9432.  
  9433.  
  9434. ΓòÉΓòÉΓòÉ <hidden> Example - T2GetHandle0 ΓòÉΓòÉΓòÉ
  9435.  
  9436. This example will allocate an instance handle. 
  9437.  
  9438. #include "THESEUS0.h"
  9439. T2HANDLE0 t2handle0;
  9440.  
  9441. t2handle0 = T2GetHandle0( error_handler0);
  9442.  
  9443.  
  9444. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9445.  
  9446. o error handler 
  9447.  
  9448. o T2ReleaseHandle0 
  9449.  
  9450.  
  9451. ΓòÉΓòÉΓòÉ 12.2.1.5. T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  9452.  
  9453. Select an item: 
  9454.  
  9455. Function Syntax 
  9456.  
  9457. Parameters 
  9458.  
  9459. Example 
  9460.  
  9461. Related Functions 
  9462.  
  9463.  
  9464. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  9465.  
  9466. T2ReleaseHandle0 is used to cause THESEUS0 to release an instance handle and 
  9467. free the resources associated with it. 
  9468.  
  9469. #include "THESEUS0.h"
  9470. T2HANDLE0 *pT2Handle0;
  9471.  
  9472. T2ReleaseHandle0( pT2Handle0);
  9473.  
  9474.  
  9475. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  9476.  
  9477. t2handle0 (T2HANDLE0) - input/output 
  9478.           An instance handle acquired from T2GetHandle0. It is zeroed by the 
  9479.           function. 
  9480.  
  9481.  
  9482. ΓòÉΓòÉΓòÉ <hidden> Example - T2ReleaseHandle0 ΓòÉΓòÉΓòÉ
  9483.  
  9484. This example will release the instance handle previously acquired. 
  9485.  
  9486. #include "THESEUS0.h"
  9487. T2HANDLE0 t2handle0;
  9488.  
  9489. T2ReleaseHandle0( &t2handle0);
  9490.  
  9491.  
  9492. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9493.  
  9494. o T2GetHandle0 
  9495.  
  9496.  
  9497. ΓòÉΓòÉΓòÉ 12.2.2. Free Memory, Swapper, and Process Functions ΓòÉΓòÉΓòÉ
  9498.  
  9499. These functions are used to acquire specific information about the system as a 
  9500. whole. 
  9501.  
  9502. Free memory function: 
  9503.  
  9504. T2FreeMemory            Determine the amount of free, idle, and locked memory. 
  9505.  
  9506. SWAPPER.DAT analysis function: 
  9507.  
  9508. T2AnalyzeSwapper        Determine the amount of free and used space in the 
  9509.                         SWAPPER.DAT file. 
  9510.  
  9511. Process functions: 
  9512.  
  9513. T2FindProcesses         Returns an array with the current processes. 
  9514. T2RamUseByProcess       Returns an array with the current RAM usage by each 
  9515.                         process. 
  9516.  
  9517.  
  9518. ΓòÉΓòÉΓòÉ 12.2.2.1. T2FreeMemory ΓòÉΓòÉΓòÉ
  9519.  
  9520. Select an item: 
  9521.  
  9522. Function Syntax 
  9523.  
  9524. Parameters 
  9525.  
  9526. Example 
  9527.  
  9528. Related Functions 
  9529.  
  9530.  
  9531. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2FreeMemory ΓòÉΓòÉΓòÉ
  9532.  
  9533. T2FreeMemory is used to cause THESEUS0 to calculate the amount of free, idle, 
  9534. and locked memory. 
  9535.  
  9536. #include "THESEUS0.h"
  9537. T2HANDLE0 t2handle0;
  9538. PULONG pFreeRam,
  9539.        pIdleRam,
  9540.        pDirtyRam,
  9541.        pLLockRam,
  9542.        pSLockRam,
  9543.        pBLockRam;
  9544.  
  9545. T2FreeMemory( t2handle0,
  9546.               pFreeRam, pIdleRam, pDirtyRam,
  9547.               pLLockRam, pSLockRam, pBLockRam);
  9548.  
  9549.  
  9550. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2FreeMemory ΓòÉΓòÉΓòÉ
  9551.  
  9552. t2handle0 (T2HANDLE0) - input 
  9553.           An instance handle previously allocated by T2GetHandle0. 
  9554.  
  9555. pFreeRam (PULONG) - output 
  9556.           Address of the ULONG where the amount of free memory is returned. 
  9557.  
  9558. pIdleRam (PULONG) - output 
  9559.           Address of the ULONG where the amount of idle memory is returned. 
  9560.  
  9561. pDirtyRam (PULONG) - output 
  9562.           Address of the ULONG where the amount of dirty memory is returned. 
  9563.           This memory is included in the idle memory. 
  9564.  
  9565. pLLockRam (PULONG) - output 
  9566.           Address of the ULONG where the amount of long-term locked memory is 
  9567.           returned. 
  9568.  
  9569. pSLockRam (PULONG) - output 
  9570.           Address of the ULONG where the amount of short-term locked memory is 
  9571.           returned. 
  9572.  
  9573. pBLockRam (PULONG) - output 
  9574.           Address of the ULONG where the amount of memory which is locked both 
  9575.           long-term and short-term is returned. 
  9576.  
  9577.  
  9578. ΓòÉΓòÉΓòÉ <hidden> Example - T2FreeMemory ΓòÉΓòÉΓòÉ
  9579.  
  9580. This example will cause T2FreeMemory to calculate the free, idle, and locked 
  9581. memory. 
  9582.  
  9583. #include "THESEUS0.h"
  9584. T2HANDLE0 t2handle0;
  9585. ULONG freeRam,
  9586.       idleRam,
  9587.       dirtyRam,
  9588.       LLockRam,
  9589.       SLockRam,
  9590.       BLockRam;
  9591.  
  9592. T2FreeMemory(  t2handle0,
  9593.               &freeRam,
  9594.               &idleRam,
  9595.               &dirtyRam,
  9596.               &LLockRam,
  9597.               &SLockRam,
  9598.               &BLockRam);
  9599.  
  9600.  
  9601. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9602.  
  9603. o T2GetHandle0 
  9604.  
  9605. o Contents of the Free, Idle, and Locked Memory Display 
  9606.  
  9607.  
  9608. ΓòÉΓòÉΓòÉ 12.2.2.2. T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  9609.  
  9610. Select an item: 
  9611.  
  9612. Function Syntax 
  9613.  
  9614. Parameters 
  9615.  
  9616. Example 
  9617.  
  9618. Related Functions 
  9619.  
  9620.  
  9621. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  9622.  
  9623. T2AnalyzeSwapper is used to cause THESEUS0 to calculate the amount of free and 
  9624. used space in the SWAPPER.DAT file. 
  9625.  
  9626. #include "THESEUS0.h"
  9627. T2HANDLE0 t2handle0;
  9628. PULONG SwapUsed,
  9629.        SwapFree;
  9630.  
  9631. T2AnalyzeSwapper( t2handle0, SwapUsed, SwapFree);
  9632.  
  9633.  
  9634. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  9635.  
  9636. t2handle0 (T2HANDLE0) - input 
  9637.           An instance handle previously allocated by T2GetHandle0. 
  9638.  
  9639. SwapUsed (PULONG) - output 
  9640.           The address of a ULONG where the number of used disk frames is 
  9641.           returned. 
  9642.  
  9643. SwapFree (PULONG) - output 
  9644.           The address of a ULONG where the number of free disk frames is 
  9645.           returned. 
  9646.  
  9647. Each disk frame is 4K bytes. 
  9648.  
  9649.  
  9650. ΓòÉΓòÉΓòÉ <hidden> Example - T2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  9651.  
  9652. This example will cause T2AnalyzeSwapper to calculate the free and used space 
  9653. in the SWAPPER.DAT file. 
  9654.  
  9655. #include "THESEUS0.h"
  9656. T2HANDLE0 t2handle0;
  9657. ULONG SwapUsed,
  9658.       SwapFree;
  9659.  
  9660. T2AnalyzeSwapper( t2handle0, &SwapUsed, &SwapFree);
  9661.  
  9662.  
  9663. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9664.  
  9665. o T2GetHandle0 
  9666.  
  9667. o Contents of the Swapper Display 
  9668.  
  9669.  
  9670. ΓòÉΓòÉΓòÉ 12.2.2.3. T2FindProcesses ΓòÉΓòÉΓòÉ
  9671.  
  9672. Select an item: 
  9673.  
  9674. Function Syntax 
  9675.  
  9676. Parameters 
  9677.  
  9678. Return Values 
  9679.  
  9680. Example 
  9681.  
  9682. Related Functions 
  9683.  
  9684.  
  9685. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2FindProcesses ΓòÉΓòÉΓòÉ
  9686.  
  9687. T2FindProcesses is used to cause THESEUS0 to count the number of processes in 
  9688. the system. It also returns an array which contains some information about each 
  9689. process. 
  9690.  
  9691. #include "THESEUS0.h"
  9692. T2HANDLE0 t2handle0;
  9693. ULONG     ulProcessCount;
  9694. T2PROCESS_TABLE *pProcessTable;
  9695.  
  9696. ulProcessCount = T2FindProcesses( t2handle0,
  9697.                                   pProcessTable);
  9698.  
  9699.  
  9700. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2FindProcesses ΓòÉΓòÉΓòÉ
  9701.  
  9702. t2handle0 (T2HANDLE0) - input 
  9703.           An instance handle previously allocated by T2GetHandle0. 
  9704.  
  9705. pProcessTable (T2PROCESS_TABLE *) - output 
  9706.           Address of a pointer which will point to the Process Table which is 
  9707.           returned. 
  9708.  
  9709.           The array contains an entry for each process currently running: 
  9710.  
  9711.    ptdaPID          The PID of this process. 
  9712.    pidParent        The pid of this process's parent process. 
  9713.    cThreads         The number of threads in this process. 
  9714.    processName      The name of this process. 
  9715.  
  9716.           Note:  It is the users responsibility to issue a DosFreeMem on this 
  9717.           array when it is no longer needed. 
  9718.  
  9719.  
  9720. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2FindProcesses ΓòÉΓòÉΓòÉ
  9721.  
  9722. ulProcessCount (ULONG) 
  9723.           The number of processes currently running in the system. This will 
  9724.           also be the number of entries in pProcessTable. 
  9725.  
  9726.  
  9727. ΓòÉΓòÉΓòÉ <hidden> Example - T2FindProcesses ΓòÉΓòÉΓòÉ
  9728.  
  9729. This example will cause T2FindProcesses to return an array with process names 
  9730. and PIDs. 
  9731.  
  9732. #include "THESEUS0.h"
  9733. T2HANDLE0 t2handle0;
  9734. ULONG     cProcess;
  9735. T2PROCESS_TABLE *tProcessTable;
  9736.  
  9737. cProcess = T2FindProcesses( t2handle0,
  9738.                             &tProcessTable);
  9739.  
  9740.  
  9741. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9742.  
  9743. o T2GetHandle0 
  9744.  
  9745. o Contents of the Process List Display 
  9746.  
  9747.  
  9748. ΓòÉΓòÉΓòÉ 12.2.2.4. T2RamUseByProcess ΓòÉΓòÉΓòÉ
  9749.  
  9750. Select an item: 
  9751.  
  9752. Function Syntax 
  9753.  
  9754. Parameters 
  9755.  
  9756. Return Values 
  9757.  
  9758. Example 
  9759.  
  9760. Related Functions 
  9761.  
  9762.  
  9763. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  9764.  
  9765. T2RamUseByProcess is used to cause THESEUS0 to determine the RAM used by each 
  9766. process in the system. It returns an array which contains the usage of each 
  9767. process. 
  9768.  
  9769. #include "THESEUS0.h"
  9770. T2HANDLE0 t2handle0;
  9771. ULONG     ulProcessCount;
  9772. T2RAM_TABLE *pRamTable;
  9773. PULONG    ulFreeRam;
  9774.  
  9775. ulProcessCount = T2RamUseByProcess( t2handle0,
  9776.                                     pProcessTable,
  9777.                                     ulFreeRam);
  9778.  
  9779.  
  9780. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  9781.  
  9782. t2handle0 (T2HANDLE0) - input 
  9783.           An instance handle previously allocated by T2GetHandle0. 
  9784.  
  9785. pRamTable (T2RAM_TABLE *) - output 
  9786.           Address of a pointer which will point to the RAM Table which is 
  9787.           returned. 
  9788.  
  9789.           The array contains an entry for each process currently running: 
  9790.  
  9791.    ptdaPID          The PID of this process. The entry with PID = 0000 contains 
  9792.                     the memory used by the "system". 
  9793.    ulPrivate        The amount of memory in the private arena of this process. 
  9794.                     If multiple processes have the same page in their private 
  9795.                     arenas, the process with the lowest PID value is charged 
  9796.                     with the memory. 
  9797.    ulShared         The amount of memory from the shared arena that is owned by 
  9798.                     this process. 
  9799.  
  9800.           Note:  It is the users responsibility to issue a DosFreeMem on this 
  9801.           array when it is no longer needed. 
  9802.  
  9803. ulFreeRam (ULONG) - output 
  9804.           The address of a ULONG where the amount of free memory is returned. 
  9805.  
  9806.  
  9807. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  9808.  
  9809. ulProcessCount (ULONG) 
  9810.           The number of processes currently running in the system. This will 
  9811.           also be the number of entries in pRamTable. 
  9812.  
  9813.  
  9814. ΓòÉΓòÉΓòÉ <hidden> Example - T2RamUseByProcess ΓòÉΓòÉΓòÉ
  9815.  
  9816. This example will cause T2RamUseByProcess to return an array with PIDs and RAM 
  9817. usage for each process. 
  9818.  
  9819. #include "THESEUS0.h"
  9820. T2HANDLE0 t2handle0;
  9821. ULONG     cProcess;
  9822. T2RAM_TABLE *tRamTable;
  9823. ULONG     ulFreeRam;
  9824.  
  9825. cProcess = T2RamUseByProcess( t2handle0,
  9826.                               &tRamTable,
  9827.                               &ulFreeRam);
  9828.  
  9829.  
  9830. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  9831.  
  9832. o T2GetHandle0 
  9833.  
  9834. o Contents of the RAM Usage by Process Display 
  9835.  
  9836.  
  9837. ΓòÉΓòÉΓòÉ 12.2.3. Working Set Functions ΓòÉΓòÉΓòÉ
  9838.  
  9839. These functions are used to acquire working set information. 
  9840.  
  9841. Working Set functions: 
  9842.  
  9843. T2WSStart            Sets up to do working set analysis for a particular 
  9844.                      process or the entire system. 
  9845. T2WSSystemTick       Collects data when doing working set for the entire 
  9846.                      system. 
  9847. T2WSProcessTick      Collects data when doing working set for a particular 
  9848.                      process. 
  9849. T2WSStop             Stops the collection of working set data and returns 
  9850.                      summary information. 
  9851. T2WSCheck            See if it is valid to collect working set data for a 
  9852.                      particular process or the entire system. 
  9853.  
  9854. The general way that these functions are used is: 
  9855.  
  9856. T2WSStart.
  9857. do {
  9858.   Wait for the desired interval to elapse.
  9859.   T2WSSystemTick or T2WSProcessTick.
  9860. } while (data is desired).
  9861. T2WSStop.
  9862.  
  9863.  
  9864. ΓòÉΓòÉΓòÉ 12.2.3.1. T2WSStart ΓòÉΓòÉΓòÉ
  9865.  
  9866. Select an item: 
  9867.  
  9868. Function Syntax 
  9869.  
  9870. Parameters 
  9871.  
  9872. Return Values 
  9873.  
  9874. System Example 
  9875.  
  9876. Process Example 
  9877.  
  9878. Related Functions 
  9879.  
  9880.  
  9881. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSStart ΓòÉΓòÉΓòÉ
  9882.  
  9883. T2WSStart is used to cause THESEUS0 to set up for working set data collection 
  9884. for a particular process or the entire system. 
  9885.  
  9886. #include "THESEUS0.h"
  9887.  
  9888. T2HANDLE0  t2handle0;
  9889. WS_HANDLE0 ws_handle0;
  9890. ULONG      pid;
  9891.  
  9892. ulrc = T2WSStart( t2handle0, ws_handle0, pid);
  9893.  
  9894.  
  9895. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSStart ΓòÉΓòÉΓòÉ
  9896.  
  9897. t2handle0 (T2HANDLE0) - input 
  9898.           An instance handle previously allocated by T2GetHandle0. 
  9899.  
  9900. ws_handle0 (WS_HANDLE0) - output 
  9901.           The address of a WS_HANDLE0 where the working set handle is returned. 
  9902.           This handle must be used in the T2WSSystemTick/T2WSProcessTick and 
  9903.           T2WSStop calls. 
  9904.  
  9905. pid (ULONG) - input 
  9906.           The pid of the process that you want to measure. If 0 is specified, 
  9907.           then the working set of the entire system is measured. The process 
  9908.           with pid of 0001 is not valid for measurement. 
  9909.  
  9910.  
  9911. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSStart ΓòÉΓòÉΓòÉ
  9912.  
  9913. ulrc (ULONG) 
  9914.           return code 
  9915.  
  9916.    T2WS_OK 
  9917.              The T2WSStart call completed properly. The ws_handle0 value is 
  9918.              returned. 
  9919.  
  9920.    T2WS_InUse 
  9921.              The process requested is already having working set data collected 
  9922.              for it. A process can have working set data collected for it from 
  9923.              only one place. 
  9924.  
  9925.    T2WS_SystemBeingDone 
  9926.              Working set collection is being done for the system. If system is 
  9927.              being done, no process can have data collected for it. 
  9928.  
  9929.    T2WS_PidNotFound 
  9930.              The requested process was not found as an active process. 
  9931.  
  9932.    T2WS_BadArena 
  9933.              An error occurred during initialization. Working set data cannot 
  9934.              be collected. 
  9935.  
  9936.  
  9937. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStart System Working Set ΓòÉΓòÉΓòÉ
  9938.  
  9939. This example will cause THESEUS0 to collect working set data for the entire 
  9940. system. It will sample every 2 seconds and will take 5 samples. The working set 
  9941. interval is set as 3 intervals. The results are printed to the window. 
  9942.  
  9943. #include "THESEUS0.h"
  9944.  
  9945. T2HANDLE0  t2handle0;
  9946. ULONG      rc;
  9947. int        i;
  9948. WS_HANDLE0 ws_handle0;
  9949. ULONG      ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  9950.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  9951. ULONG      iIntervals, ulMinimum, ulRecommended;
  9952.  
  9953. rc = T2WSStart( t2handle0, &ws_handle0, 0);
  9954. if (rc == T2WS_OK)
  9955. {
  9956.   for (i=0; i<5; i++)
  9957.   {
  9958.     printf( " waiting 2 seconds.");
  9959.     DosSleep( 2000);
  9960.     rc = T2WSSystemTick( ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  9961.                          &ulFree, &ulIdle,
  9962.                          &ulProcessesUsed, &ulProcessCount,
  9963.                          &ulResident, &ulTotalRam);
  9964.     printf( "\n  tick (rc=%i), %i %i %i %i %i %i %i %i %i\n",
  9965.             rc, ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  9966.             ulProcessesUsed, ulProcessCount,
  9967.             ulResident, ulTotalRam);
  9968.   }
  9969.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  9970.                  &ulMinimum, &ulRecommended, &ulAccessed);
  9971.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  9972.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  9973. }
  9974.  
  9975.  
  9976. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStart Process Working Set ΓòÉΓòÉΓòÉ
  9977.  
  9978. This example will cause THESEUS0 to collect working set data for process with 
  9979. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  9980. set interval is set as 3 intervals. The results are printed to the window. 
  9981.  
  9982. #include "THESEUS0.h"
  9983.  
  9984. T2HANDLE0  t2handle0;
  9985. ULONG      rc;
  9986. int        i;
  9987. WS_HANDLE0 ws_handle0;
  9988. ULONG     ulNow, ulWS, ulAccessed;
  9989. ULONG     iIntervals, ulMinimum, ulRecommended, ulTotalRam;
  9990.  
  9991. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  9992. if (rc == T2WS_OK)
  9993. {
  9994.   for (i=0; i<5; i++)
  9995.   {
  9996.     printf( " waiting 2 seconds.");
  9997.     DosSleep( 2000);
  9998.     rc = T2WSProcessTick(  ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  9999.                           &ulTotalRam);
  10000.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i\n",
  10001.             rc, i, ulNow, ulWS, ulAccessed, ulTotalRam);
  10002.   }
  10003.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  10004.                  &ulMinimum, &ulRecommended, &ulAccessed);
  10005.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  10006.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  10007. }
  10008.  
  10009.  
  10010. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10011.  
  10012. o T2GetHandle0 
  10013.  
  10014. o T2WSSystemTick 
  10015.  
  10016. o T2WSProcessTick 
  10017.  
  10018. o T2WSStop 
  10019.  
  10020. o Working Set of the Entire System? 
  10021.  
  10022. o Working Set of a Single Process? 
  10023.  
  10024.  
  10025. ΓòÉΓòÉΓòÉ 12.2.3.2. T2WSSystemTick ΓòÉΓòÉΓòÉ
  10026.  
  10027. Select an item: 
  10028.  
  10029. Function Syntax 
  10030.  
  10031. Parameters 
  10032.  
  10033. Return Values 
  10034.  
  10035. Notes 
  10036.  
  10037. Example 
  10038.  
  10039. Related Functions 
  10040.  
  10041.  
  10042. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSSystemTick ΓòÉΓòÉΓòÉ
  10043.  
  10044. T2WSSystemTick is used to cause THESEUS0 to determine the amount of memory 
  10045. accessed since the last T2WSSystemTick call or from the T2WSStart call. 
  10046.  
  10047. #include "THESEUS0.h"
  10048.  
  10049. ULONG      rc;
  10050. WS_HANDLE0 ws_handle0;
  10051. ULONG      ulIntervals;
  10052. PULONG     ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  10053.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  10054.  
  10055. rc = T2WSSystemTick( ws_handle0, ulIntervals,
  10056.                      ulNow, ulWS, ulAccessed,
  10057.                      ulFree, ulIdle,
  10058.                      ulProcessesUsed, ulProcessCount,
  10059.                      ulResident, ulTotalRam);
  10060.  
  10061.  
  10062. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSSystemTick ΓòÉΓòÉΓòÉ
  10063.  
  10064. ws_handle0 (WS_HANDLE0) - input 
  10065.           An instance handle previously allocated by T2WSStart. 
  10066.  
  10067. ulIntervals (ULONG) - input 
  10068.           The number of intervals that constitute the working set. This value 
  10069.           must be less than 254 for the computations to work properly. 
  10070.  
  10071. ulNow (PULONG) - output 
  10072.           The address of a ULONG where the number of pages of memory that was 
  10073.           accessed during the last interval is returned. 
  10074.  
  10075. ulWS (PULONG) - output 
  10076.           The address of a ULONG where the number of pages of memory in the 
  10077.           working set is returned. 
  10078.  
  10079. ulAccessed (PULONG) - output 
  10080.           The address of a ULONG where the number of pages of memory accessed 
  10081.           since the T2WSStart was issued is returned. 
  10082.  
  10083. ulFree (PULONG) - output 
  10084.           The address of a ULONG where the number of pages of free memory is 
  10085.           returned. 
  10086.  
  10087. ulIdle (PULONG) - output 
  10088.           The address of a ULONG where the number of pages of idle memory is 
  10089.           returned. 
  10090.  
  10091. ulProcessesUsed (PULONG) - output 
  10092.           The address of a ULONG where the number of processes that had memory 
  10093.           accessed during the interval is returned. This value indicates the 
  10094.           number of processes which are both running and touching non-system 
  10095.           memory. 
  10096.  
  10097. ulProcessCount (PULONG) - output 
  10098.           The address of a ULONG where the total number of processes found 
  10099.           during the interval is returned. This number changes as processes are 
  10100.           created or destroyed. 
  10101.  
  10102. ulResident (PULONG) - output 
  10103.           The address of a ULONG where the number of pages of resident memory 
  10104.           is returned. 
  10105.  
  10106. ulTotalRam (PULONG) - output 
  10107.           The address of a ULONG where the total number of pages of RAM being 
  10108.           used by OS/2* is returned. 
  10109.  
  10110.  
  10111. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSSystemTick ΓòÉΓòÉΓòÉ
  10112.  
  10113. ulrc (ULONG) 
  10114.           return code 
  10115.  
  10116.    T2WS_OK 
  10117.              The T2WSSystemTick call completed properly. 
  10118.  
  10119.    T2WS_InvalidHandle 
  10120.              The ws_handle0 passed was not valid. 
  10121.  
  10122.  
  10123. ΓòÉΓòÉΓòÉ <hidden> Notes - T2WSSystemTick ΓòÉΓòÉΓòÉ
  10124.  
  10125. The interval between calls to T2WSSystemTick should be chosen carefully. If the 
  10126. interval is too short, the processing could cause the rest of the system to 
  10127. have problems. However, if the interval is too long, dynamic memory allocated 
  10128. and freed will be missed. The overhead is dependent on the number of processes, 
  10129. more so than the amount of RAM in the machine. The interval should never be 
  10130. less than 1 second nor longer than 1 minute. 
  10131.  
  10132.  
  10133. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSSystemTick ΓòÉΓòÉΓòÉ
  10134.  
  10135. This example will cause THESEUS0 to collect working set data for the entire 
  10136. system. It will sample every 2 seconds and will take 5 samples. The working set 
  10137. interval is set as 3 intervals. The results are printed to the window. 
  10138.  
  10139. #include "THESEUS0.h"
  10140.  
  10141. T2HANDLE0  t2handle0;
  10142. ULONG      rc;
  10143. int        i;
  10144. WS_HANDLE0 ws_handle0;
  10145. ULONG      ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  10146.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  10147. ULONG      iIntervals, ulMinimum, ulRecommended;
  10148.  
  10149. rc = T2WSStart( t2handle0, &ws_handle0, 0);
  10150. if (rc == T2WS_OK)
  10151. {
  10152.   for (i=0; i<5; i++)
  10153.   {
  10154.     printf( " waiting 2 seconds.");
  10155.     DosSleep( 2000);
  10156.     rc = T2WSSystemTick( ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  10157.                          &ulFree, &ulIdle,
  10158.                          &ulProcessesUsed, &ulProcessCount,
  10159.                          &ulResident, &ulTotalRam);
  10160.     printf( "\n  tick (rc=%i), %i %i %i %i %i %i %i %i %i\n",
  10161.             rc, ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  10162.             ulProcessesUsed, ulProcessCount,
  10163.             ulResident, ulTotalRam);
  10164.   }
  10165.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  10166.                  &ulMinimum, &ulRecommended, &ulAccessed);
  10167.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  10168.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  10169. }
  10170.  
  10171.  
  10172. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10173.  
  10174. o T2WSStart 
  10175.  
  10176. o T2WSStop 
  10177.  
  10178. o Working Set of the Entire System? 
  10179.  
  10180. o System Working Set 
  10181.  
  10182.  
  10183. ΓòÉΓòÉΓòÉ 12.2.3.3. T2WSProcessTick ΓòÉΓòÉΓòÉ
  10184.  
  10185. Select an item: 
  10186.  
  10187. Function Syntax 
  10188.  
  10189. Parameters 
  10190.  
  10191. Return Values 
  10192.  
  10193. Notes 
  10194.  
  10195. Example 
  10196.  
  10197. Related Functions 
  10198.  
  10199.  
  10200. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSProcessTick ΓòÉΓòÉΓòÉ
  10201.  
  10202. T2WSProcessTick is used to cause THESEUS0 to determine the amount of memory 
  10203. accessed since the last T2WSProcessTick call or from the T2WSStart call. 
  10204.  
  10205. #include "THESEUS0.h"
  10206.  
  10207. ULONG      rc;
  10208. WS_HANDLE0 ws_handle0;
  10209. ULONG      ulIntervals;
  10210. PULONG     ulNow, ulWS, ulAccessed, ulTotalRam;
  10211.  
  10212. rc = T2WSProcessTick( ws_handle0, ulIntervals,
  10213.                      ulNow, ulWS, ulAccessed, ulTotalRam);
  10214.  
  10215.  
  10216. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSProcessTick ΓòÉΓòÉΓòÉ
  10217.  
  10218. ws_handle0 (WS_HANDLE0) - input 
  10219.           An instance handle previously allocated by T2WSStart. 
  10220.  
  10221. ulIntervals (ULONG) - input 
  10222.           The number of intervals that constitute the working set. This value 
  10223.           must be less than 254 for the computations to work properly. 
  10224.  
  10225. ulNow (PULONG) - output 
  10226.           The address of a ULONG where the number of pages of memory that was 
  10227.           accessed during the last interval is returned. 
  10228.  
  10229. ulWS (PULONG) - output 
  10230.           The address of a ULONG where the number of pages of memory in the 
  10231.           working set is returned. 
  10232.  
  10233. ulAccessed (PULONG) - output 
  10234.           The address of a ULONG where the number of pages of memory accessed 
  10235.           since the T2WSStart was issued is returned. 
  10236.  
  10237. ulTotalRam (PULONG) - output 
  10238.           The address of a ULONG where the total number of pages of RAM being 
  10239.           used by OS/2* is returned. 
  10240.  
  10241.  
  10242. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSProcessTick ΓòÉΓòÉΓòÉ
  10243.  
  10244. ulrc (ULONG) 
  10245.           return code 
  10246.  
  10247.    T2WS_OK 
  10248.              The T2WSProcessTick call completed properly. 
  10249.  
  10250.    T2WS_InvalidHandle 
  10251.              The ws_handle0 passed was not valid. 
  10252.  
  10253.    T2WS_PidNotFound 
  10254.              The requested process was not found as an active process. It was 
  10255.              found when the T2WSStart was done, but has since terminated. 
  10256.  
  10257.  
  10258. ΓòÉΓòÉΓòÉ <hidden> Notes - T2WSProcessTick ΓòÉΓòÉΓòÉ
  10259.  
  10260. The interval between calls to T2WSProcessTick should be chosen carefully. If 
  10261. the interval is too short, the processing could cause the rest of the system to 
  10262. have problems. However, if the interval is too long, dynamic memory allocated 
  10263. and freed will be missed. The overhead is dependent on the number of processes 
  10264. being monitored, more so than the amount of RAM in the machine. The interval 
  10265. should never be less than 1 second nor longer than 1 minute. 
  10266.  
  10267.  
  10268. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSProcessTick ΓòÉΓòÉΓòÉ
  10269.  
  10270. This example will cause THESEUS0 to collect working set data for process with 
  10271. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  10272. set interval is set as 3 intervals. The results are printed to the window. 
  10273.  
  10274. #include "THESEUS0.h"
  10275.  
  10276. T2HANDLE0  t2handle0;
  10277. ULONG      rc;
  10278. int        i;
  10279. WS_HANDLE0 ws_handle0;
  10280. ULONG     ulNow, ulWS, ulAccessed;
  10281. ULONG     iIntervals, ulMinimum, ulRecommended, ulTotalRam;
  10282.  
  10283. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  10284. if (rc == T2WS_OK)
  10285. {
  10286.   for (i=0; i<5; i++)
  10287.   {
  10288.     printf( " waiting 2 seconds.");
  10289.     DosSleep( 2000);
  10290.     rc = T2WSProcessTick(  ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  10291.                           &ulTotalRam);
  10292.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i\n",
  10293.             rc, i, ulNow, ulWS, ulAccessed, ulTotalRam);
  10294.   }
  10295.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  10296.                  &ulMinimum, &ulRecommended, &ulAccessed);
  10297.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  10298.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  10299. }
  10300.  
  10301.  
  10302. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10303.  
  10304. o T2WSStart 
  10305.  
  10306. o T2WSStop 
  10307.  
  10308. o Working Set of a Single Process? 
  10309.  
  10310. o Process Working Set 
  10311.  
  10312.  
  10313. ΓòÉΓòÉΓòÉ 12.2.3.4. T2WSStop ΓòÉΓòÉΓòÉ
  10314.  
  10315. Select an item: 
  10316.  
  10317. Function Syntax 
  10318.  
  10319. Parameters 
  10320.  
  10321. Return Values 
  10322.  
  10323. System Example 
  10324.  
  10325. Process Example 
  10326.  
  10327. Related Functions 
  10328.  
  10329.  
  10330. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSStop ΓòÉΓòÉΓòÉ
  10331.  
  10332. T2WSStop is used to cause THESEUS0 to count the number of 
  10333.  
  10334. #include "THESEUS0.h"
  10335.  
  10336. WS_HANDLE0 ws_handle0;
  10337. BOOL       fCollectOne;
  10338. PULONG     iIntervals, ulMinimum, ulRecommended, ulAccessed;
  10339.  
  10340. rc = T2WSStop( ws_handle0, fCollectOne, iIntervals,
  10341.                ulMinimum, ulRecommended, ulAccessed);
  10342.  
  10343.  
  10344. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSStop ΓòÉΓòÉΓòÉ
  10345.  
  10346. ws_handle0 (WS_HANDLE0) - input 
  10347.           An instance handle previously allocated by T2WSStart. 
  10348.  
  10349. fCollectOne (BOOL) - input 
  10350.           Indicate if at least one collection cycle must be accomplished. 
  10351.  
  10352.    TRUE    Perform a collection cycle (tick), if one has not already been done. 
  10353.    FALSE   Do not force a collection cycle. 
  10354.  
  10355. iIntervals (PULONG) - output 
  10356.           Address of a ULONG where the number of data collections cycles 
  10357.           completed is returned. 
  10358.  
  10359. ulMinimum (PULONG) - output 
  10360.           The address of a ULONG where the maximum value from the now column is 
  10361.           returned. This is the amount of memory absolutely required to run the 
  10362.           application without "thrashing" memory. 
  10363.  
  10364. ulRecommended (PULONG) - output 
  10365.           The address of a ULONG where the maximum value from the ws column is 
  10366.           returned. This is the recommended amount of memory for the 
  10367.           application to run with minimum impact on paging. 
  10368.  
  10369. ulAccessed (PULONG) - output 
  10370.           The address of a ULONG where the maximum value from the accessed 
  10371.           column is returned. This is the amount of memory required to run the 
  10372.           application with no paging activity. 
  10373.  
  10374.  
  10375. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSStop ΓòÉΓòÉΓòÉ
  10376.  
  10377. ulrc (ULONG) 
  10378.           return code 
  10379.  
  10380.    T2WS_OK 
  10381.              The T2WSStop call completed properly. 
  10382.  
  10383.    T2WS_InvalidHandle 
  10384.              The ws_handle0 passed was not valid. 
  10385.  
  10386.  
  10387. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStop System Working Set ΓòÉΓòÉΓòÉ
  10388.  
  10389. This example will cause THESEUS0 to collect working set data for the entire 
  10390. system. It will sample every 2 seconds and will take 5 samples. The working set 
  10391. interval is set as 3 intervals. The results are printed to the window. 
  10392.  
  10393. #include "THESEUS0.h"
  10394.  
  10395. T2HANDLE0  t2handle0;
  10396. ULONG      rc;
  10397. int        i;
  10398. WS_HANDLE0 ws_handle0;
  10399. ULONG      ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  10400.            ulProcessesUsed, ulProcessCount, ulResident, ulTotalRam;
  10401. ULONG      iIntervals, ulMinimum, ulRecommended;
  10402.  
  10403. rc = T2WSStart( t2handle0, &ws_handle0, 0);
  10404. if (rc == T2WS_OK)
  10405. {
  10406.   for (i=0; i<5; i++)
  10407.   {
  10408.     printf( " waiting 2 seconds.");
  10409.     DosSleep( 2000);
  10410.     rc = T2WSSystemTick( ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  10411.                          &ulFree, &ulIdle,
  10412.                          &ulProcessesUsed, &ulProcessCount,
  10413.                          &ulResident, &ulTotalRam);
  10414.     printf( "\n  tick (rc=%i), %i %i %i %i %i %i %i %i %i\n",
  10415.             rc, ulNow, ulWS, ulAccessed, ulFree, ulIdle,
  10416.             ulProcessesUsed, ulProcessCount,
  10417.             ulResident, ulTotalRam);
  10418.   }
  10419.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  10420.                  &ulMinimum, &ulRecommended, &ulAccessed);
  10421.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  10422.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  10423. }
  10424.  
  10425.  
  10426. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSStop Process Working Set ΓòÉΓòÉΓòÉ
  10427.  
  10428. This example will cause THESEUS0 to collect working set data for process with 
  10429. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  10430. set interval is set as 3 intervals. The results are printed to the window. 
  10431.  
  10432. #include "THESEUS0.h"
  10433.  
  10434. T2HANDLE0  t2handle0;
  10435. ULONG      rc;
  10436. int        i;
  10437. WS_HANDLE0 ws_handle0;
  10438. ULONG     ulNow, ulWS, ulAccessed;
  10439. ULONG     iIntervals, ulMinimum, ulRecommended, ulTotalRam;
  10440.  
  10441. rc = T2WSStart( t2handle0, &ws_handle0, 2);
  10442. if (rc == T2WS_OK)
  10443. {
  10444.   for (i=0; i<5; i++)
  10445.   {
  10446.     printf( " waiting 2 seconds.");
  10447.     DosSleep( 2000);
  10448.     rc = T2WSProcessTick(  ws_handle0, 3, &ulNow, &ulWS, &ulAccessed,
  10449.                           &ulTotalRam);
  10450.     printf( "  tick (rc=%i) pid=%i, %i %i %i %i\n",
  10451.             rc, i, ulNow, ulWS, ulAccessed, ulTotalRam);
  10452.   }
  10453.   rc = T2WSStop( &ws_handle0, TRUE, &iIntervals,
  10454.                  &ulMinimum, &ulRecommended, &ulAccessed);
  10455.   printf( " count = %i, minimum = %i, recommended = %i, accessed = %i\n",
  10456.           iIntervals, ulMinimum, ulRecommended, ulAccessed);
  10457. }
  10458.  
  10459.  
  10460. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10461.  
  10462. o T2GetHandle0 
  10463.  
  10464. o T2WSStart 
  10465.  
  10466.  
  10467. ΓòÉΓòÉΓòÉ 12.2.3.5. T2WSCheck ΓòÉΓòÉΓòÉ
  10468.  
  10469. Select an item: 
  10470.  
  10471. Function Syntax 
  10472.  
  10473. Parameters 
  10474.  
  10475. Return Values 
  10476.  
  10477. Example 
  10478.  
  10479. Related Functions 
  10480.  
  10481.  
  10482. ΓòÉΓòÉΓòÉ <hidden> Syntax - T2WSCheck ΓòÉΓòÉΓòÉ
  10483.  
  10484. T2WSCheck is used to cause THESEUS0 to determine if a particular process or the 
  10485. entire system can have working set data collected. 
  10486.  
  10487. #include "THESEUS0.h"
  10488.  
  10489. ULONG ulPidToCheck;
  10490. BOOL  fStatus;
  10491.  
  10492. fStatus = T2WSCheck( ulPidToCheck);
  10493.  
  10494.  
  10495. ΓòÉΓòÉΓòÉ <hidden> Parameters - T2WSCheck ΓòÉΓòÉΓòÉ
  10496.  
  10497. ulPidToCheck (ULONG) - input 
  10498.           The pid of the process to be queried. If ulPidToCheck is 0, then 
  10499.           check for the system as a whole. 
  10500.  
  10501.  
  10502. ΓòÉΓòÉΓòÉ <hidden> Return Values - T2WSCheck ΓòÉΓòÉΓòÉ
  10503.  
  10504. fStatus (BOOL) 
  10505.           requestable status 
  10506.  
  10507.    TRUE    A T2WSStart request for this process would probably succeed. 
  10508.    FALSE   A T2WSStart request for this process will fail. See return values of 
  10509.            T2WS_InUse and T2WS_SystemBemingDone in T2WSStart Return Values. 
  10510.  
  10511.  
  10512. ΓòÉΓòÉΓòÉ <hidden> Example - T2WSCheck ΓòÉΓòÉΓòÉ
  10513.  
  10514. To determine if it is possible to collect system working set data: 
  10515.  
  10516. if (T2WSCheck( 0))
  10517.   /* I can collect system working set data */
  10518. else
  10519.   /* not valid, someone else is already doing it or someone is
  10520.      collecting process data */
  10521.  
  10522. To determine if it is possible to collect working set data for the process with 
  10523. pid 0002: 
  10524.  
  10525. if (T2WSCheck( 2))
  10526.   /* I can collect process working set data */
  10527. else
  10528.   /* not valid, someone else is already doing it or someone is
  10529.      collecting system data */
  10530.  
  10531.  
  10532. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10533.  
  10534. o T2WSStart 
  10535.  
  10536.  
  10537. ΓòÉΓòÉΓòÉ 12.3. REXX Application Programming Interface ΓòÉΓòÉΓòÉ
  10538.  
  10539. The functions provided by THESEUS0.DLL are divided into the following 
  10540. categories: 
  10541.  
  10542. Initialization 
  10543.           Function to cause THESEUS0.DLL to initialize for use by REXX. 
  10544. Free Memory, Swapper, and Process Functions 
  10545.           Functions to determine information about the system as a whole. 
  10546. Working Set Functions 
  10547.           Functions to perform working set analysis. 
  10548.  
  10549. Errors are output to the stderr device. 
  10550.  
  10551.  
  10552. ΓòÉΓòÉΓòÉ 12.3.1. RT2LoadFuncs ΓòÉΓòÉΓòÉ
  10553.  
  10554. Select an item: 
  10555.  
  10556. Function Syntax 
  10557.  
  10558. Return Values 
  10559.  
  10560. Example 
  10561.  
  10562. Related Functions 
  10563.  
  10564.  
  10565. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2LoadFuncs ΓòÉΓòÉΓòÉ
  10566.  
  10567. RT2LoadFuncs is used to cause THESEUS0 to initialize all its internal 
  10568. information that is required for later use and make the other functions 
  10569. available to REXX. 
  10570.  
  10571. rc = RT2LoadFuncs()
  10572.  
  10573.  
  10574. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2LoadFuncs ΓòÉΓòÉΓòÉ
  10575.  
  10576. rc (number) return code 
  10577.  
  10578.    0  Initialization completed successfully. 
  10579.  
  10580.    1  There is no THESEUS2.SYS installed in CONFIG.SYS. The program cannot 
  10581.       continue. 
  10582.  
  10583.    2  The version of THESEUS2.SYS installed in CONFIG.SYS is not the version 
  10584.       expected.  ulDDVersion contains the versions found and required. The 
  10585.       program cannot continue. 
  10586.  
  10587.    3  The initialization code could not determine the size of the PTDA. The 
  10588.       program cannot continue. 
  10589.  
  10590.    4  The initialization code could not determine the format for the resident 
  10591.       portion of the MTE. The program cannot continue. 
  10592.  
  10593.  
  10594. ΓòÉΓòÉΓòÉ <hidden> Example - RT2LoadFuncs ΓòÉΓòÉΓòÉ
  10595.  
  10596. This example will cause RT2LoadFuncs to perform the initialization of the 
  10597. internal functions. 
  10598.  
  10599. call RxFuncAdd "RT2LoadFuncs", "THESEUS0", "RT2LoadFuncs"
  10600. rc = RT2LoadFuncs()
  10601. if rc \= 0 then
  10602.   do
  10603.     say "THESEUS0 did not initialize properly.  It's return code = "rc
  10604.     exit
  10605.   end
  10606.  
  10607.  
  10608. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10609.  
  10610. Although the following routines are not directly related, the discussion of 
  10611. errors is applicable. 
  10612.  
  10613. o error handler 
  10614.  
  10615. o T2Initialize 
  10616.  
  10617.  
  10618. ΓòÉΓòÉΓòÉ 12.3.2. Free Memory, Swapper, and Process Functions ΓòÉΓòÉΓòÉ
  10619.  
  10620. These functions are used to acquire specific information about the system as a 
  10621. whole. 
  10622.  
  10623. Free memory function: 
  10624.  
  10625. RT2FreeMemory            Determine the amount of free, idle, and locked memory. 
  10626.  
  10627. SWAPPER.DAT analysis function: 
  10628.  
  10629. RT2AnalyzeSwapper        Determine the amount of free and used space in the 
  10630.                          SWAPPER.DAT file. 
  10631.  
  10632. Process functions: 
  10633.  
  10634. RT2FindProcesses         Returns an array with the current processes. 
  10635. RT2RamUseByProcess       Returns an array with the current RAM usage by each 
  10636.                          process. 
  10637.  
  10638.  
  10639. ΓòÉΓòÉΓòÉ 12.3.2.1. RT2FreeMemory ΓòÉΓòÉΓòÉ
  10640.  
  10641. Select an item: 
  10642.  
  10643. Function Syntax 
  10644.  
  10645. Return Values 
  10646.  
  10647. Example 
  10648.  
  10649. Related Functions 
  10650.  
  10651.  
  10652. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2FreeMemory ΓòÉΓòÉΓòÉ
  10653.  
  10654. RT2FreeMemory is used to cause THESEUS0 to calculate the amount of free, idle, 
  10655. and locked memory. 
  10656.  
  10657. FreeReturn = RT2FreeMemory()
  10658.  
  10659. FreeReturn contains: 
  10660.  
  10661. FreeRam IdleRam DirtyRam LLockRam SLockRam BLockRam
  10662.  
  10663.  
  10664. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2FreeMemory ΓòÉΓòÉΓòÉ
  10665.  
  10666. FreeRam (number) 
  10667.           The number of bytes of free memory. 
  10668.  
  10669. IdleRam (number) 
  10670.           The number of bytes of idle memory. 
  10671.  
  10672. DirtyRam (number) 
  10673.           The number of bytes of dirty memory. This memory is included in the 
  10674.           idle memory. 
  10675.  
  10676. LLockRam (number) 
  10677.           The number of bytes of long-term locked memory. 
  10678.  
  10679. SLockRam (number) 
  10680.           The number of bytes of short-term locked memory. 
  10681.  
  10682. BLockRam (number) 
  10683.           The number of bytes of memory which is locked both long-term and 
  10684.           short-term. 
  10685.  
  10686.  
  10687. ΓòÉΓòÉΓòÉ <hidden> Example - RT2FreeMemory ΓòÉΓòÉΓòÉ
  10688.  
  10689. This example will cause RT2FreeMemory to calculate the free, idle, and locked 
  10690. memory. 
  10691.  
  10692. parse value RT2FreeMemory() with freeRam idleRam dirtyRam LLockRam SLockRam BLockRam
  10693. say "freeRam  = "freeRam
  10694. say "idleRam  = "idleRam
  10695. say "dirtyRam = "dirtyRam
  10696. say "LLockRam = "LLockRam
  10697. say "SLockRam = "SLockRam
  10698. say "BLockRam = "BLockRam
  10699. say "cleanRam = "idleRam-dirtyRam" (computed value = idleRam - dirtyRam)"
  10700.  
  10701.  
  10702. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10703.  
  10704. o RT2LoadFuncs 
  10705.  
  10706. o Contents of the Free, Idle, and Locked Memory Display 
  10707.  
  10708.  
  10709. ΓòÉΓòÉΓòÉ 12.3.2.2. RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  10710.  
  10711. Select an item: 
  10712.  
  10713. Function Syntax 
  10714.  
  10715. Return Values 
  10716.  
  10717. Example 
  10718.  
  10719. Related Functions 
  10720.  
  10721.  
  10722. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  10723.  
  10724. RT2AnalyzeSwapper is used to cause THESEUS0 to calculate the amount of free and 
  10725. used space in the SWAPPER.DAT file. 
  10726.  
  10727. SwapReturn = RT2AnalyzeSwapper()
  10728.  
  10729. SwapReturn contains: 
  10730.  
  10731. SwapUsed SwapFree
  10732.  
  10733.  
  10734. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  10735.  
  10736. SwapUsed (number) 
  10737.           The number of used disk frames. 
  10738.  
  10739. SwapFree (number) 
  10740.           The number of free disk frames. 
  10741.  
  10742. Each disk frame is 4K bytes. 
  10743.  
  10744.  
  10745. ΓòÉΓòÉΓòÉ <hidden> Example - RT2AnalyzeSwapper ΓòÉΓòÉΓòÉ
  10746.  
  10747. This example will cause RT2AnalyzeSwapper to calculate the free and used space 
  10748. in the SWAPPER.DAT file. 
  10749.  
  10750. parse value RT2AnalyzeSwapper() with SwapUsed SwapFree
  10751. say "SwapUsed = "SwapUsed
  10752. say "SwapFree = "SwapFree
  10753.  
  10754.  
  10755. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10756.  
  10757. o RT2LoadFuncs 
  10758.  
  10759. o Contents of the Swapper Display 
  10760.  
  10761.  
  10762. ΓòÉΓòÉΓòÉ 12.3.2.3. RT2FindProcesses ΓòÉΓòÉΓòÉ
  10763.  
  10764. Select an item: 
  10765.  
  10766. Function Syntax 
  10767.  
  10768. Parameters 
  10769.  
  10770. Return Values 
  10771.  
  10772. Example 
  10773.  
  10774. Related Functions 
  10775.  
  10776.  
  10777. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2FindProcesses ΓòÉΓòÉΓòÉ
  10778.  
  10779. RT2FindProcesses is used to cause THESEUS0 to count the number of processes in 
  10780. the system. It also returns an array which contains some information about each 
  10781. process. 
  10782.  
  10783. RT2FindProcesses "stem"
  10784.  
  10785.  
  10786. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2FindProcesses ΓòÉΓòÉΓòÉ
  10787.  
  10788. stem (string) 
  10789.           The name of the stem variable used to contain the return list of 
  10790.           processes. 
  10791.  
  10792.  
  10793. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2FindProcesses ΓòÉΓòÉΓòÉ
  10794.  
  10795. stem.0 contains the number of processes found. 
  10796.  
  10797. The list contains an entry for each process currently running. Each entry 
  10798. contains: 
  10799.  
  10800. ptdaPID pidParent cThreads processName
  10801. where: 
  10802.  
  10803. ptdaPID          The PID of this process. 
  10804. pidParent        The pid of this process's parent process. 
  10805. cThreads         The number of threads in this process. 
  10806. processName      The name of this process. 
  10807.  
  10808.  
  10809. ΓòÉΓòÉΓòÉ <hidden> Example - RT2FindProcesses ΓòÉΓòÉΓòÉ
  10810.  
  10811. This example will cause RT2FindProcesses to return an array with process names 
  10812. and PIDs. 
  10813.  
  10814. call RT2FindProcesses "pTable"
  10815. say "pTable count = "pTable.0
  10816. do i = 1 to pTable.0
  10817.   say i": '"pTable.i"'"
  10818. end
  10819. parse value pTable.1 with Pid Parent Threads Name
  10820. say "pid = "Pid", parent = "Parent", threads = "Threads", name = '"Name"'"
  10821.  
  10822.  
  10823. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10824.  
  10825. o RT2LoadFuncs 
  10826.  
  10827. o Contents of the Process List Display 
  10828.  
  10829.  
  10830. ΓòÉΓòÉΓòÉ 12.3.2.4. RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  10831.  
  10832. Select an item: 
  10833.  
  10834. Function Syntax 
  10835.  
  10836. Parameters 
  10837.  
  10838. Return Values 
  10839.  
  10840. Example 
  10841.  
  10842. Related Functions 
  10843.  
  10844.  
  10845. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  10846.  
  10847. RT2RamUseByProcess is used to cause THESEUS0 to determine the RAM used by each 
  10848. process in the system. It returns an array which contains the usage of each 
  10849. process. 
  10850.  
  10851. T2RamUseByProcess "stem"
  10852.  
  10853.  
  10854. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  10855.  
  10856. stem (string) 
  10857.           The name of the stem variable used to contain the return list of 
  10858.           processes. 
  10859.  
  10860.  
  10861. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  10862.  
  10863. stem.0 contains the number of processes found. 
  10864.  
  10865. The list contains an entry for each process currently running. Each entry 
  10866. contains: 
  10867.  
  10868. ptdaPID Private Shared
  10869. where: 
  10870.  
  10871. ptdaPID          The PID of this process. The entry with PID = 0000 contains 
  10872.                  the memory used by the "system". 
  10873. Private          The number of bytes of memory in the private arena of this 
  10874.                  process. If multiple processes have the same page in their 
  10875.                  private arenas, the process with the lowest PID value is 
  10876.                  charged with the memory. 
  10877. Shared           The number of bytes of memory from the shared arena that is 
  10878.                  owned by this process. 
  10879.  
  10880.  
  10881. ΓòÉΓòÉΓòÉ <hidden> Example - RT2RamUseByProcess ΓòÉΓòÉΓòÉ
  10882.  
  10883. This example will cause RT2RamUseByProcess to return an array with PIDs and RAM 
  10884. usage for each process. 
  10885.  
  10886. call RT2RamUseByProcess "rTable"
  10887. say "rTable count = "rTable.0
  10888. do i = 1 to rTable.0
  10889.   say i": '"rTable.i"'"
  10890. end
  10891. parse value rTable.1 with Pid Private Shared
  10892. say "pid = "Pid", private = "Private", shared = "Shared
  10893.  
  10894.  
  10895. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  10896.  
  10897. o RT2LoadFuncs 
  10898.  
  10899. o Contents of the RAM Usage by Process Display 
  10900.  
  10901.  
  10902. ΓòÉΓòÉΓòÉ 12.3.3. Working Set Functions ΓòÉΓòÉΓòÉ
  10903.  
  10904. These functions are used to acquire working set information. 
  10905.  
  10906. Working Set functions: 
  10907.  
  10908. RT2WSStart            Sets up to do working set analysis for a particular 
  10909.                       process or the entire system. 
  10910. RT2WSSystemTick       Collects data when doing working set for the entire 
  10911.                       system. 
  10912. RT2WSProcessTick      Collects data when doing working set for a particular 
  10913.                       process. 
  10914. RT2WSStop             Stops the collection of working set data and returns 
  10915.                       summary information. 
  10916.  
  10917. The general way that these functions are used is: 
  10918.  
  10919. RT2WSStart.
  10920. do while data is desired
  10921.   Wait for the desired interval to elapse.
  10922.   RT2WSSystemTick or RT2WSProcessTick.
  10923. end
  10924. RT2WSStop.
  10925.  
  10926.  
  10927. ΓòÉΓòÉΓòÉ 12.3.3.1. RT2WSStart ΓòÉΓòÉΓòÉ
  10928.  
  10929. Select an item: 
  10930.  
  10931. Function Syntax 
  10932.  
  10933. Parameters 
  10934.  
  10935. Return Values 
  10936.  
  10937. System Example 
  10938.  
  10939. Process Example 
  10940.  
  10941. Related Functions 
  10942.  
  10943.  
  10944. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSStart ΓòÉΓòÉΓòÉ
  10945.  
  10946. RT2WSStart is used to cause THESEUS0 to set up for working set data collection 
  10947. for a particular process or the entire system. 
  10948.  
  10949. rc = RT2WSStart("ws_handle"ΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇ)
  10950.                             ΓööΓöÇ,pidΓöÇΓöÿ
  10951.  
  10952.  
  10953. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSStart ΓòÉΓòÉΓòÉ
  10954.  
  10955. ws_handle0 (string) 
  10956.           The name of a variable that will be the working set handle. This 
  10957.           handle must be used in the RT2WSSystemTick/RT2WSProcessTick and 
  10958.           RT2WSStop calls. 
  10959.  
  10960.           Note:  The value returned in this variable must not be changed. 
  10961.  
  10962. pid (number) 
  10963.           The pid of the process that you want to measure. If none is 
  10964.           specified, then the working set of the entire system is measured. The 
  10965.           process with pid of 1 is not valid for measurement. 
  10966.  
  10967.  
  10968. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSStart ΓòÉΓòÉΓòÉ
  10969.  
  10970. rc (number) return code 
  10971.  
  10972.    0  The RT2WSStart call completed properly. The ws_handle0 value is returned. 
  10973.  
  10974.    1  The process requested is already having working set data collected for 
  10975.       it. A process can have working set data collected for it from only one 
  10976.       place. 
  10977.  
  10978.    2  Working set collection is being done for the system. If system is being 
  10979.       done, no process can have data collected for it. 
  10980.  
  10981.    4  An error occurred during initialization. Working set data cannot be 
  10982.       collected. 
  10983.  
  10984.    5  The requested process was not found as an active process. 
  10985.  
  10986.  
  10987. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStart System Working Set ΓòÉΓòÉΓòÉ
  10988.  
  10989. This example will cause THESEUS0 to collect working set data for the entire 
  10990. system. It will sample every 2 seconds and will take 5 samples. The working set 
  10991. interval is set as 3 intervals. The results are printed to the window. 
  10992.  
  10993. rc = RT2WSStart("ws_handle")
  10994. if rc = 0 then
  10995.   do
  10996.     do i = 1 to 5
  10997.       say "sleep for 2 seconds."
  10998.       call SysSleep 2
  10999.       parse value RT2WSSystemTick("ws_handle",3) with Rc,
  11000.                   Now WS Accessed Free Idle ProcUsed,
  11001.                   ProcCount Resident TotalRam
  11002.       say Rc Now WS Accessed Free Idle,
  11003.           ProcUsed ProcCount Resident TotalRam
  11004.     end
  11005.     StopReturn = RT2WSStop("ws_handle")
  11006.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  11007.     say Rc Intervals Minimum Recommended Accessed
  11008.   end
  11009.  
  11010.  
  11011. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStart Process Working Set ΓòÉΓòÉΓòÉ
  11012.  
  11013. This example will cause THESEUS0 to collect working set data for process with 
  11014. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  11015. set interval is set as 3 intervals. The results are printed to the window. 
  11016.  
  11017. rc = RT2WSStart("ws_handle",2)
  11018. if rc = 0 then
  11019.   do
  11020.     do i = 1 to 5
  11021.       say "sleep for 2 seconds."
  11022.       call SysSleep 2
  11023.       parse value RT2WSProcessTick("ws_handle",3) with Rc,
  11024.                   Now WS Accessed TotalRam
  11025.       say Rc Now WS Accessed TotalRam
  11026.     end
  11027.     StopReturn = RT2WSStop("ws_handle")
  11028.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  11029.     say Rc Intervals Minimum Recommended Accessed
  11030.   end
  11031.  
  11032.  
  11033. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11034.  
  11035. o RT2LoadFuncs 
  11036.  
  11037. o RT2WSSystemTick 
  11038.  
  11039. o RT2WSProcessTick 
  11040.  
  11041. o RT2WSStop 
  11042.  
  11043. o Working Set of the Entire System? 
  11044.  
  11045. o Working Set of a Single Process? 
  11046.  
  11047.  
  11048. ΓòÉΓòÉΓòÉ 12.3.3.2. RT2WSSystemTick ΓòÉΓòÉΓòÉ
  11049.  
  11050. Select an item: 
  11051.  
  11052. Function Syntax 
  11053.  
  11054. Parameters 
  11055.  
  11056. Return Values 
  11057.  
  11058. Notes 
  11059.  
  11060. Example 
  11061.  
  11062. Related Functions 
  11063.  
  11064.  
  11065. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  11066.  
  11067. RT2WSSystemTick is used to cause THESEUS0 to determine the amount of memory 
  11068. accessed since the last RT2WSSystemTick call or from the RT2WSStart call. 
  11069.  
  11070. TickReturn = RT2WSSystemTick("ws_handle", Intervals)
  11071.  
  11072. TickReturn contains: 
  11073.  
  11074. rc Now WS Accessed Free Idle ProcUsed ProcCount Resident TotalRam
  11075.  
  11076.  
  11077. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  11078.  
  11079. ws_handle0 (string) 
  11080.           The name of the variable that was used in the RT2WSStart. 
  11081.  
  11082. Intervals (number) 
  11083.           The number of intervals that constitute the working set. This value 
  11084.           must be less than 254 for the computations to work properly. 
  11085.  
  11086.  
  11087. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  11088.  
  11089. rc (number) 
  11090.           return code 
  11091.  
  11092.    0  The RT2WSSystemTick call completed properly. 
  11093.  
  11094.    3  The ws_handle0 passed was not valid. 
  11095.  
  11096. Now (number) 
  11097.           The number of pages of memory that was accessed during the last 
  11098.           interval. 
  11099.  
  11100. WS (number) 
  11101.           The number of pages of memory in the working set. 
  11102.  
  11103. Accessed (number) 
  11104.           The number of pages of memory accessed since the RT2WSStart was 
  11105.           issued. 
  11106.  
  11107. Free (number) 
  11108.           The number of pages of free memory. 
  11109.  
  11110. Idle (number) 
  11111.           The number of pages of idle memory. 
  11112.  
  11113. ProcUsed (number) 
  11114.           The number of processes that had memory accessed during the interval. 
  11115.           This value indicates the number of processes which are both running 
  11116.           and touching non-system memory. 
  11117.  
  11118. ProcCount (number) 
  11119.           The total number of processes found during the interval. This number 
  11120.           changes as processes are created or destroyed. 
  11121.  
  11122. Resident (number) 
  11123.           The number of pages of resident memory. 
  11124.  
  11125. TotalRam (number) 
  11126.           The total number of pages of RAM being used by OS/2*. 
  11127.  
  11128.  
  11129. ΓòÉΓòÉΓòÉ <hidden> Notes - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  11130.  
  11131. The interval between calls to RT2WSSystemTick should be chosen carefully. If 
  11132. the interval is too short, the processing could cause the rest of the system to 
  11133. have problems. However, if the interval is too long, dynamic memory allocated 
  11134. and freed will be missed. The overhead is dependent on the number of processes, 
  11135. more so than the amount of RAM in the machine. The interval should never be 
  11136. less than 1 second nor longer than 1 minute. 
  11137.  
  11138.  
  11139. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSSystemTick ΓòÉΓòÉΓòÉ
  11140.  
  11141. This example will cause THESEUS0 to collect working set data for the entire 
  11142. system. It will sample every 2 seconds and will take 5 samples. The working set 
  11143. interval is set as 3 intervals. The results are printed to the window. 
  11144.  
  11145. rc = RT2WSStart("ws_handle")
  11146. if rc = 0 then
  11147.   do
  11148.     do i = 1 to 5
  11149.       say "sleep for 2 seconds."
  11150.       call SysSleep 2
  11151.       parse value RT2WSSystemTick("ws_handle",3) with Rc,
  11152.                   Now WS Accessed Free Idle ProcUsed,
  11153.                   ProcCount Resident TotalRam
  11154.       say Rc Now WS Accessed Free Idle,
  11155.           ProcUsed ProcCount Resident TotalRam
  11156.     end
  11157.     StopReturn = RT2WSStop("ws_handle")
  11158.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  11159.     say Rc Intervals Minimum Recommended Accessed
  11160.   end
  11161.  
  11162.  
  11163. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11164.  
  11165. o RT2LoadFuncs 
  11166.  
  11167. o RT2WSStart 
  11168.  
  11169. o RT2WSStop 
  11170.  
  11171. o Working Set of the Entire System? 
  11172.  
  11173. o System Working Set 
  11174.  
  11175.  
  11176. ΓòÉΓòÉΓòÉ 12.3.3.3. RT2WSProcessTick ΓòÉΓòÉΓòÉ
  11177.  
  11178. Select an item: 
  11179.  
  11180. Function Syntax 
  11181.  
  11182. Parameters 
  11183.  
  11184. Return Values 
  11185.  
  11186. Notes 
  11187.  
  11188. Example 
  11189.  
  11190. Related Functions 
  11191.  
  11192.  
  11193. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  11194.  
  11195. RT2WSProcessTick is used to cause THESEUS0 to determine the amount of memory 
  11196. accessed since the last RT2WSProcessTick call or from the RT2WSStart call. 
  11197.  
  11198. TickReturn = RT2WSProcessTick("ws_handle", Intervals)
  11199.  
  11200. TickReturn contains: 
  11201.  
  11202. rc Now WS Accessed TotalRam
  11203.  
  11204.  
  11205. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  11206.  
  11207. ws_handle0 (string) 
  11208.           The name of the variable that was used in the RT2WSStart. 
  11209.  
  11210. Intervals (number) 
  11211.           The number of intervals that constitute the working set. This value 
  11212.           must be less than 254 for the computations to work properly. 
  11213.  
  11214.  
  11215. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  11216.  
  11217. rc (number) 
  11218.           return code 
  11219.  
  11220.    0  The T2WSProcessTick call completed properly. 
  11221.  
  11222.    3  The ws_handle0 passed was not valid. 
  11223.  
  11224.    5  The requested process was not found as an active process. It was found 
  11225.       when the RT2WSStart was done, but has since terminated. 
  11226.  
  11227. Now (number) 
  11228.           The number of pages of memory that was accessed during the last 
  11229.           interval. 
  11230.  
  11231. WS (number) 
  11232.           The number of pages of memory in the working set. 
  11233.  
  11234. Accessed (number) 
  11235.           The number of pages of memory accessed since the RT2WSStart was 
  11236.           issued. 
  11237.  
  11238. TotalRam (number) 
  11239.           The total number of pages of RAM being used by OS/2*. 
  11240.  
  11241.  
  11242. ΓòÉΓòÉΓòÉ <hidden> Notes - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  11243.  
  11244. The interval between calls to RT2WSProcessTick should be chosen carefully. If 
  11245. the interval is too short, the processing could cause the rest of the system to 
  11246. have problems. However, if the interval is too long, dynamic memory allocated 
  11247. and freed will be missed. The overhead is dependent on the number of processes 
  11248. being monitored, more so than the amount of RAM in the machine. The interval 
  11249. should never be less than 1 second nor longer than 1 minute. 
  11250.  
  11251.  
  11252. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSProcessTick ΓòÉΓòÉΓòÉ
  11253.  
  11254. This example will cause THESEUS0 to collect working set data for process with 
  11255. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  11256. set interval is set as 3 intervals. The results are printed to the window. 
  11257.  
  11258. rc = RT2WSStart("ws_handle",2)
  11259. if rc = 0 then
  11260.   do
  11261.     do i = 1 to 5
  11262.       say "sleep for 2 seconds."
  11263.       call SysSleep 2
  11264.       parse value RT2WSProcessTick("ws_handle",3) with Rc,
  11265.                   Now WS Accessed TotalRam
  11266.       say Rc Now WS Accessed TotalRam
  11267.     end
  11268.     StopReturn = RT2WSStop("ws_handle")
  11269.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  11270.     say Rc Intervals Minimum Recommended Accessed
  11271.   end
  11272.  
  11273.  
  11274. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11275.  
  11276. o RT2LoadFuncs 
  11277.  
  11278. o RT2WSStart 
  11279.  
  11280. o RT2WSStop 
  11281.  
  11282. o Working Set of a Single Process? 
  11283.  
  11284. o Process Working Set 
  11285.  
  11286.  
  11287. ΓòÉΓòÉΓòÉ 12.3.3.4. RT2WSStop ΓòÉΓòÉΓòÉ
  11288.  
  11289. Select an item: 
  11290.  
  11291. Function Syntax 
  11292.  
  11293. Parameters 
  11294.  
  11295. Return Values 
  11296.  
  11297. System Example 
  11298.  
  11299. Process Example 
  11300.  
  11301. Related Functions 
  11302.  
  11303.  
  11304. ΓòÉΓòÉΓòÉ <hidden> Syntax - RT2WSStop ΓòÉΓòÉΓòÉ
  11305.  
  11306. RT2WSStop is used to cause THESEUS0 to count the number of 
  11307.  
  11308. StopReturn = RT2WSStop("ws_handle")
  11309.  
  11310. StopReturn contains: 
  11311.  
  11312. rc Intervals Minimum Recommended Accessed
  11313.  
  11314.  
  11315. ΓòÉΓòÉΓòÉ <hidden> Parameters - RT2WSStop ΓòÉΓòÉΓòÉ
  11316.  
  11317. ws_handle0 (string) 
  11318.           The name of the variable that was used in the RT2WSStart. 
  11319.  
  11320.           Note:  The value of this variable is destroyed. (A DROP is done on 
  11321.           the variable by RT2WSStop.) 
  11322.  
  11323.  
  11324. ΓòÉΓòÉΓòÉ <hidden> Return Values - RT2WSStop ΓòÉΓòÉΓòÉ
  11325.  
  11326. rc (number) 
  11327.           return code 
  11328.  
  11329.    0  The T2WSStop call completed properly. 
  11330.  
  11331.    3  The ws_handle0 passed was not valid. 
  11332.  
  11333. Intervals (number) 
  11334.           The number of data collections cycles completed. 
  11335.  
  11336. Minimum (number) 
  11337.           The maximum value from the now column. This is the amount of memory 
  11338.           absolutely required to run the application without "thrashing" 
  11339.           memory. 
  11340.  
  11341. Recommended (number) 
  11342.           The maximum value from the ws column. This is the recommended amount 
  11343.           of memory for the application to run with minimum impact on paging. 
  11344.  
  11345. Accessed (number) 
  11346.           The maximum value from the accessed column. This is the amount of 
  11347.           memory required to run the application with no paging activity. 
  11348.  
  11349.  
  11350. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStop System Working Set ΓòÉΓòÉΓòÉ
  11351.  
  11352. This example will cause THESEUS0 to collect working set data for the entire 
  11353. system. It will sample every 2 seconds and will take 5 samples. The working set 
  11354. interval is set as 3 intervals. The results are printed to the window. 
  11355.  
  11356. rc = RT2WSStart("ws_handle")
  11357. if rc = 0 then
  11358.   do
  11359.     do i = 1 to 5
  11360.       say "sleep for 2 seconds."
  11361.       call SysSleep 2
  11362.       parse value RT2WSSystemTick("ws_handle",3) with Rc,
  11363.                   Now WS Accessed Free Idle ProcUsed,
  11364.                   ProcCount Resident TotalRam
  11365.       say Rc Now WS Accessed Free Idle,
  11366.           ProcUsed ProcCount Resident TotalRam
  11367.     end
  11368.     StopReturn = RT2WSStop("ws_handle")
  11369.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  11370.     say Rc Intervals Minimum Recommended Accessed
  11371.   end
  11372.  
  11373.  
  11374. ΓòÉΓòÉΓòÉ <hidden> Example - RT2WSStop Process Working Set ΓòÉΓòÉΓòÉ
  11375.  
  11376. This example will cause THESEUS0 to collect working set data for process with 
  11377. pid of 2. It will sample every 2 seconds and will take 5 samples. The working 
  11378. set interval is set as 3 intervals. The results are printed to the window. 
  11379.  
  11380. rc = RT2WSStart("ws_handle",2)
  11381. if rc = 0 then
  11382.   do
  11383.     do i = 1 to 5
  11384.       say "sleep for 2 seconds."
  11385.       call SysSleep 2
  11386.       parse value RT2WSProcessTick("ws_handle",3) with Rc,
  11387.                   Now WS Accessed TotalRam
  11388.       say Rc Now WS Accessed TotalRam
  11389.     end
  11390.     StopReturn = RT2WSStop("ws_handle")
  11391.     parse value StopReturn with Rc Intervals Minimum Recommended Accessed
  11392.     say Rc Intervals Minimum Recommended Accessed
  11393.   end
  11394.  
  11395.  
  11396. ΓòÉΓòÉΓòÉ <hidden> Related Topics ΓòÉΓòÉΓòÉ
  11397.  
  11398. o RT2LoadFuncs 
  11399.  
  11400. o RT2WSStart 
  11401.  
  11402.  
  11403. ΓòÉΓòÉΓòÉ 13. Errors ΓòÉΓòÉΓòÉ
  11404.  
  11405. THESEUS2 displays errors in two different ways: 
  11406.  
  11407. o in popup windows 
  11408. o imbedded within output. 
  11409.  
  11410.  
  11411. ΓòÉΓòÉΓòÉ 13.1. Popup Window Errors ΓòÉΓòÉΓòÉ
  11412.  
  11413. THESEUS2 generates several popup windows: 
  11414.  
  11415. o Cannot describe an HCO 
  11416. o Clipboard error 
  11417. o Dependent window error 
  11418. o Error in decimal input 
  11419. o Error in hex input 
  11420. o Find text not entered 
  11421. o Incorrect THESEUS2.SYS version 
  11422. o Missing THESEUS2.SYS file 
  11423. o Missing THESEUSR.DLL file 
  11424. o No monospaced font 
  11425. o Out of windows error 
  11426. o Process ended 
  11427. o PTDA size not determined 
  11428. o MTE format not recognized 
  11429. o File name not valid 
  11430.  
  11431.  
  11432. ΓòÉΓòÉΓòÉ 13.1.1. Cannot describe an HCO ΓòÉΓòÉΓòÉ
  11433.  
  11434. Message text: 
  11435.      An HCO cannot be described. 
  11436.  
  11437. Explanation: 
  11438.      The hco is the only one of the address/handle type of hypertext links that 
  11439.      THESEUS2 is not programmed to describe. 
  11440.  
  11441. Corrective action: 
  11442.      Do not request a description of an hco. 
  11443.  
  11444.  
  11445. ΓòÉΓòÉΓòÉ 13.1.2. Clipboard error ΓòÉΓòÉΓòÉ
  11446.  
  11447. Message text: 
  11448.      Could not allocate memory for Clipboard data.  Copy request cannot be 
  11449.      done. 
  11450.  
  11451. Explanation: 
  11452.      An error was received while trying allocate shared memory. This memory is 
  11453.      required in order to copy the marked area into the clipboard. 
  11454.  
  11455. Corrective action: 
  11456.      Free some memory and try the request again. 
  11457.  
  11458.  
  11459. ΓòÉΓòÉΓòÉ 13.1.3. Dependent Window Error ΓòÉΓòÉΓòÉ
  11460.  
  11461. Message text: 
  11462.      This window cannot be closed before its dependent window is closed. 
  11463.  
  11464. Explanation: 
  11465.      Working Set detail windows are dependent on the Working Set window for 
  11466.      some of their data. 
  11467.  
  11468.      As long as the Working Set Detail (by Object) or Working Set Summary by 
  11469.      Process window is present, the Working Set window cannot be closed. 
  11470.  
  11471. Corrective action: 
  11472.      Close the Working Set Detail (by Object) or Working Set Summary by Process 
  11473.      window, then you can close the Working Set window. 
  11474.  
  11475.  
  11476. ΓòÉΓòÉΓòÉ 13.1.4. Error in decimal input ΓòÉΓòÉΓòÉ
  11477.  
  11478. Message text: 
  11479.      Enter a valid decimal number in the 's' field. 
  11480.      s can be `Interval' or `Intervals per Working Set'. 
  11481.  
  11482. Explanation: 
  11483.      An error was made when typing the desired decimal value into the dialog 
  11484.      field. 
  11485.  
  11486. Corrective action: 
  11487.      When you press OK, the cursor is placed in the erroneous field in the 
  11488.      dialog. Type the correct decimal character and press Enter. 
  11489.  
  11490.  
  11491. ΓòÉΓòÉΓòÉ 13.1.5. Error in hex input ΓòÉΓòÉΓòÉ
  11492.  
  11493. Message text: 
  11494.      Enter a valid hex number in the 's' field. 
  11495.      s can be `Address', `Length', `Width', `Selector', `or Offset'. 
  11496.  
  11497. Explanation: 
  11498.      An error was made when typing the desired hexadecimal value into the 
  11499.      dialog field. 
  11500.  
  11501. Corrective action: 
  11502.      When you press OK, the cursor is placed in the erroneous field in the 
  11503.      dialog. Type the correct hexadecimal character and press Enter. 
  11504.  
  11505.  
  11506. ΓòÉΓòÉΓòÉ 13.1.6. Find text not entered ΓòÉΓòÉΓòÉ
  11507.  
  11508. Message text: 
  11509.      Text must be typed in the field. 
  11510.  
  11511. Explanation: 
  11512.      You did not type a string to find. 
  11513.  
  11514. Corrective action: 
  11515.      When you press OK, the cursor is placed in the erroneous field in the 
  11516.      dialog. Type the string you want to find and press Enter. 
  11517.  
  11518.  
  11519. ΓòÉΓòÉΓòÉ 13.1.7. Incorrect THESEUS2.SYS Version ΓòÉΓòÉΓòÉ
  11520.  
  11521. Message text: 
  11522.      THESEUS2.SYS is not version nn.  Please install the current version. 
  11523.  
  11524. Explanation: 
  11525.      The version of THESEUS2.SYS which is installed in CONFIG.SYS is not the 
  11526.      expected version. nn gives the version number that is expected. If the 
  11527.      correct device driver is not found, THESEUS2 cannot continue to run. 
  11528.  
  11529. Corrective action: 
  11530.      Install the correct version of THESEUS2.SYS in your CONFIG.SYS file, then 
  11531.      restart your computer. 
  11532.  
  11533.  
  11534. ΓòÉΓòÉΓòÉ 13.1.8. Missing THESEUS2.SYS File ΓòÉΓòÉΓòÉ
  11535.  
  11536. Message text: 
  11537.      THESEUS2.SYS is not installed in your CONFIG.SYS. Please install the 
  11538.      current version and restart the computer. 
  11539.  
  11540. Explanation: 
  11541.      THESEUS2 is made up of several files. The device driver THESEUS2.SYS must 
  11542.      be installed in the CONFIG.SYS. If this device driver is not found, 
  11543.      THESEUS2 cannot continue to run. 
  11544.  
  11545. Corrective action: 
  11546.      Install THESEUS2.SYS in your CONFIG.SYS file, then restart the computer. 
  11547.  
  11548.  
  11549. ΓòÉΓòÉΓòÉ 13.1.9. Missing THESEUSR.DLL File ΓòÉΓòÉΓòÉ
  11550.  
  11551. Message text: 
  11552.      THESEUS2 could not locate its resource file THESEUSR.DLL. Please place 
  11553.      THESEUSR.DLL in a directory pointed to by the LIBPATH statement in 
  11554.      CONFIG.SYS then restart the computer. 
  11555.  
  11556. Explanation: 
  11557.      THESEUS2 is made up of several files. The resources used by the 
  11558.      Presentation Manager are located in THESEUSR.DLL. If this file is not 
  11559.      found, THESEUS2 cannot continue to run. 
  11560.  
  11561.      The LIBPATH statement in your CONFIG.SYS file must contain the directory 
  11562.      that contains THESEUSR.DLL. 
  11563.  
  11564. Corrective action: 
  11565.      Either: 
  11566.  
  11567.    o Move THESEUSR.DLL into a directory that is in the LIBPATH statement, or 
  11568.    o Add the directory that contains THESEUSR.DLL to the LIBPATH statement. 
  11569.      Restart the computer for the changed LIBPATH statement to become 
  11570.      effective. 
  11571.  
  11572.  
  11573. ΓòÉΓòÉΓòÉ 13.1.10. No Monospaced Font ΓòÉΓòÉΓòÉ
  11574.  
  11575. Message text: 
  11576.      A monospaced font was not found.  Please install one. 
  11577.  
  11578. Explanation: 
  11579.      THESEUS2 uses only monospaced Single Byte Character Set (SBCS) fonts. The 
  11580.      "System Monospaced - 8x12" font is used, if it is present. If it is not 
  11581.      present and another monospaced font is present, then the first monospaced 
  11582.      font found will be used. If a monospaced font is not found, THESEUS2 
  11583.      cannot continue to run. 
  11584.  
  11585. Corrective action: 
  11586.      Install a monospaced font, then try THESEUS2 again. 
  11587.  
  11588.  
  11589. ΓòÉΓòÉΓòÉ 13.1.11. Out of Windows Error ΓòÉΓòÉΓòÉ
  11590.  
  11591. Message text: 
  11592.      All THESEUS2 windows are in use. You must close one before another can be 
  11593.      created. 
  11594.  
  11595. Explanation: 
  11596.      THESEUS2 can generate only 16 Detail windows. 
  11597.  
  11598. Corrective action: 
  11599.      Close one or more of the open THESEUS2 Detail windows. The Windows 
  11600.      pull-down on the Process Hierarchy window contains a list of the Detail 
  11601.      windows currently open. 
  11602.  
  11603.  
  11604. ΓòÉΓòÉΓòÉ 13.1.12. Process Ended ΓòÉΓòÉΓòÉ
  11605.  
  11606. Message text: 
  11607.      The selected process has ended.  The request cannot be performed. 
  11608.  
  11609. Explanation: 
  11610.      You had previously selected a process on the Process Hierarchy window. The 
  11611.      process you had selected has ended and you have requested that a display 
  11612.      be generated from that process. 
  11613.  
  11614. Corrective action: 
  11615.      Only active processes can be used for display generation. 
  11616.  
  11617.  
  11618. ΓòÉΓòÉΓòÉ 13.1.13. PTDA Size not Determined ΓòÉΓòÉΓòÉ
  11619.  
  11620. Message text: 
  11621.      This version of OS/2 is not supported by THESEUS2. The size of the PTDA 
  11622.      cannot be determined. 
  11623.  
  11624. Explanation: 
  11625.      Different levels of OS/2 2.x have different sizes of PTDAs. THESEUS2 must 
  11626.      "discover" the size of the PTDA during its initialization. The version of 
  11627.      OS/2 2.x that you have is so different from those THESEUS2 expects that it 
  11628.      could not determine the PTDA size. 
  11629.  
  11630. Corrective action: 
  11631.      Either: 
  11632.  
  11633.    o Acquire a version of THESEUS2 that supports the installed version of OS/2 
  11634.      2.x, or 
  11635.    o Install a version of OS/2 2.x that THESEUS2 supports. 
  11636.  
  11637.  
  11638. ΓòÉΓòÉΓòÉ 13.1.14. MTE Format not Recognized ΓòÉΓòÉΓòÉ
  11639.  
  11640. Message text: 
  11641.      This version of OS/2 is not supported by THESEUS2. The Module Table Entry 
  11642.      (MTE) format is unknown. 
  11643.  
  11644. Explanation: 
  11645.      Different levels of OS/2 2.x have different formats of the MTEs. THESEUS2 
  11646.      must "discover" the format of the MTE during its initialization. The 
  11647.      version of OS/2 2.x that you have is so different from those THESEUS2 
  11648.      expects that it could not determine the MTE format. 
  11649.  
  11650. Corrective action: 
  11651.      Either: 
  11652.  
  11653.    o Acquire a version of THESEUS2 that supports the installed version of OS/2 
  11654.      2.x, or 
  11655.    o Install a version of OS/2 2.x that THESEUS2 supports. 
  11656.  
  11657.  
  11658. ΓòÉΓòÉΓòÉ 13.1.15. File Name not Valid ΓòÉΓòÉΓòÉ
  11659.  
  11660. Message text: 
  11661.      The file name is not valid for the file system on the specified disk. 
  11662.  
  11663. Explanation: 
  11664.      The file name supplied in the SaveAs dialog was not accepted by the 
  11665.      operating system. You may have specified: 
  11666.  
  11667.    o An invalid path, or 
  11668.    o A long file name for a FAT disk. 
  11669.  
  11670. Corrective action: 
  11671.      Specify a correct path and file name. 
  11672.  
  11673.  
  11674. ΓòÉΓòÉΓòÉ 13.2. Imbedded Errors ΓòÉΓòÉΓòÉ
  11675.  
  11676. THESEUS2 generates some errors imbedded within the output: 
  11677.  
  11678. o Linear address: no Page Table 
  11679. o Linear address+length: no Page Table 
  11680. o Linear address: page not present 
  11681. o Linear address+Length: page not present 
  11682. o Linear address+Length: > 32 bits 
  11683. o SystemArenaHeaderLinear was not properly located 
  11684. o Unknown error to error_handler0 
  11685.  
  11686. (When the low-level error routine cannot determine what window is generating 
  11687. data, these messages may appear in a popup window. However, they will normally 
  11688. appear in the output window text at the point that the error was detected.) 
  11689.  
  11690.  
  11691. ΓòÉΓòÉΓòÉ 13.2.1. Linear address: no Page Table ΓòÉΓòÉΓòÉ
  11692.  
  11693. Message text: 
  11694.      >>> Linear address: no Page Table, linear=llllllll. 
  11695.  
  11696. Explanation: 
  11697.      A "read linear" request was done in the program. The requested linear 
  11698.      address is not valid because there is no page table defined for that 
  11699.      linear address. 
  11700.  
  11701.      This is an internal error in the program. It is not caused by user input. 
  11702.      It is normally caused by the program improperly interpreting a value in 
  11703.      one of the OS/2 control blocks. It is presented for the program support 
  11704.      personnel's use. 
  11705.  
  11706.  
  11707. ΓòÉΓòÉΓòÉ 13.2.2. Linear address+length: no Page Table ΓòÉΓòÉΓòÉ
  11708.  
  11709. Message text: 
  11710.      >>> Linear address+length: no Page Table, linear=llllllll, 
  11711.      length=hhhhhhhh. 
  11712.  
  11713. Explanation: 
  11714.      A "read linear" request was done in the program. The linear address at the 
  11715.      end of the requested area is not valid because there is no page table 
  11716.      defined for that linear address. 
  11717.  
  11718.      This is an internal error in the program. It is not caused by user input. 
  11719.      It is normally caused by the program improperly interpreting a value in 
  11720.      one of the OS/2 control blocks. It is presented for the program support 
  11721.      personnel's use. 
  11722.  
  11723.  
  11724. ΓòÉΓòÉΓòÉ 13.2.3. Linear address: page not present ΓòÉΓòÉΓòÉ
  11725.  
  11726. Message text: 
  11727.      >>> Linear address: page not present, linear=llllllll. 
  11728.  
  11729. Explanation: 
  11730.      A "read linear" request was done in the program. The requested linear 
  11731.      address is not valid because the page at that linear address is not 
  11732.      present. 
  11733.  
  11734.      This is an internal error in the program. It is not caused by user input. 
  11735.      It is normally caused by the program improperly interpreting a value in 
  11736.      one of the OS/2 control blocks. It is presented for the program support 
  11737.      personnel's use. 
  11738.  
  11739.  
  11740. ΓòÉΓòÉΓòÉ 13.2.4. Linear address+Length: page not present ΓòÉΓòÉΓòÉ
  11741.  
  11742. Message text: 
  11743.      >>> Linear address+Length: page not present, linear=llllllll, 
  11744.      length=hhhhhhhh. 
  11745.  
  11746. Explanation: 
  11747.      A "read linear" request was done in the program. The linear address at the 
  11748.      end of the requested area is not valid because the page at that linear 
  11749.      address is not present. 
  11750.  
  11751.      This is an internal error in the program. It is not caused by user input. 
  11752.      It is normally caused by the program improperly interpreting a value in 
  11753.      one of the OS/2 control blocks. It is presented for the program support 
  11754.      personnel's use. 
  11755.  
  11756.  
  11757. ΓòÉΓòÉΓòÉ 13.2.5. Linear address+Length: > 32 bits ΓòÉΓòÉΓòÉ
  11758.  
  11759. Message text: 
  11760.      >>> Linear address+Length: > 32 bits, linear=llllllll, length=hhhhhhhh. 
  11761.  
  11762. Explanation: 
  11763.      A "read linear" request was done in the program. The requested linear 
  11764.      address is not valid because the address of the end of the area is greater 
  11765.      than 32 bits. 
  11766.  
  11767.      This is an internal error in the program. It is not caused by user input. 
  11768.      It is normally caused by the program improperly interpreting a value in 
  11769.      one of the OS/2 control blocks. It is presented for the program support 
  11770.      personnel's use. 
  11771.  
  11772.  
  11773. ΓòÉΓòÉΓòÉ 13.2.6. SystemArenaHeaderLinear was not properly located ΓòÉΓòÉΓòÉ
  11774.  
  11775. Message text: 
  11776.      >>> SystemArenaHeaderLinear was not properly located at llllllll. 
  11777.  
  11778. Explanation: 
  11779.      The "System Arena Header" was not found. 
  11780.  
  11781.      This is an internal error in the program. It is not caused by user input. 
  11782.      It is normally caused by the program improperly interpreting a value in 
  11783.      one of the OS/2 control blocks. It is presented for the program support 
  11784.      personnel's use. 
  11785.  
  11786.  
  11787. ΓòÉΓòÉΓòÉ 13.2.7. Unknown error to error_handler0 ΓòÉΓòÉΓòÉ
  11788.  
  11789. Message text: 
  11790.      >>> Unknown error to error_handler0: error_code=i1, p1=i2, p2=i3. 
  11791.  
  11792. Explanation: 
  11793.      An error was sent to the error handler which had an unknown error code. 
  11794.      The values printed (i1, i2, i3) are the inputs to the routine. 
  11795.  
  11796.      This is an internal error in the program. It is not caused by user input. 
  11797.      It is normally caused by the program improperly interpreting a value in 
  11798.      one of the OS/2 control blocks. It is presented for the program support 
  11799.      personnel's use. 
  11800.  
  11801.  
  11802. ΓòÉΓòÉΓòÉ <hidden> Enter Button ΓòÉΓòÉΓòÉ
  11803.  
  11804. When you press the Enter button, the action is performed. 
  11805.  
  11806.  
  11807. ΓòÉΓòÉΓòÉ <hidden> Find Button ΓòÉΓòÉΓòÉ
  11808.  
  11809. When you press the Find button, the search begins from the start of the window. 
  11810.  
  11811.  
  11812. ΓòÉΓòÉΓòÉ <hidden> OK Button ΓòÉΓòÉΓòÉ
  11813.  
  11814. When you press the OK button, the dialog is canceled and you are returned to 
  11815. the window. 
  11816.  
  11817.  
  11818. ΓòÉΓòÉΓòÉ <hidden> Cancel Button ΓòÉΓòÉΓòÉ
  11819.  
  11820. When you press the Cancel button, the dialog is canceled and you are returned 
  11821. to the window.