Changeset 57 for trunk/include/helpers/procstat.h
- Timestamp:
- Apr 9, 2001, 10:50:16 PM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/helpers/procstat.h
r44 r57 233 233 ********************************************************************/ 234 234 235 // #pragma pack(1) 236 #pragma pack(4) // V0.9.10 (2001-04-08) [umoeller] 237 235 238 #define QS32_PROCESS 0x0001 236 239 #define QS32_SEMAPHORE 0x0002 … … 244 247 #define QS32_MODVER 0x0200 245 248 246 #define QS32_STANDARD (QS32_PROCESS | QS32_SEMAPHORE | QS32_MTE | QS32_FILESYS | QS32_SHMEMORY) 247 248 APIRET APIENTRY DosQuerySysState(ULONG flQueries, 249 ULONG arg1, 250 ULONG arg2, 251 ULONG _res_, 252 PVOID buf, 253 ULONG bufsz); 249 #define QS32_SUPPORTED (QS32_PROCESS | QS32_SEMAPHORE | QS32_MTE | QS32_FILESYS \ 250 | QS32_SHMEMORY | QS32_MODVER) 251 252 APIRET APIENTRY DosQuerySysState(ULONG EntityList, 253 ULONG EntityLevel, 254 PID pid, 255 TID tid, 256 PVOID pDataBuf, 257 ULONG cbBuf); 258 259 /********************** 260 * 261 * global struct 262 * 263 **********************/ 254 264 255 265 /* … … 265 275 } QGLOBAL32, *PQGLOBAL32; 266 276 277 /********************** 278 * 279 * thread struct 280 * 281 **********************/ 282 267 283 /* 268 284 *@@ QTHREAD32: … … 272 288 typedef struct _QTHREAD32 273 289 { 274 ULONG rectype; // 256 for thread290 ULONG ulRecType; // 256 for thread 275 291 USHORT usTID; // thread ID, process-specific 276 USHORT usSlotID; // slot ID, this identifies the thread to the kernel 277 ULONG ulSleepID; // something the kernel uses for blocking threads 292 USHORT usSlotID; // system-specific slot ID, this identifies the 293 // thread to the kernel 294 ULONG ulSleepID; // sleep ID the kernel uses for blocking threads 278 295 ULONG ulPriority; // priority flags 279 296 ULONG ulSystime; // CPU time spent in system code … … 287 304 USHORT _reserved2_; /* padding to ULONG */ 288 305 } QTHREAD32, *PQTHREAD32; 306 307 /********************** 308 * 309 * open files 310 * 311 **********************/ 289 312 290 313 // found the following in the "OS/2 Debugging handbook" … … 319 342 typedef struct _QFDS32 320 343 { 321 USHORT sfn;// "system file number" of the file.344 USHORT usSFN; // "system file number" of the file. 322 345 // This is the same as in 323 346 // the QPROCESS32.pausFds array, … … 350 373 351 374 ULONG ulFileSize; // file size in bytes 352 USHORT hVolume;// "volume handle"; apparently,375 USHORT usHVolume; // "volume handle"; apparently, 353 376 // this identifies some kernel 354 377 // structure, it's the same for 355 378 // files on the same disk 356 USHORT attrib;// attributes:379 USHORT fsAttribs; // attributes: 357 380 // 0x20: 'A' (archived) 358 381 // 0x10: 'D' (directory) … … 361 384 // 0x02: 'H' (hidden) 362 385 // 0x01: 'R' (read-only) 363 USHORT _reserved_;386 USHORT us_pad_; 364 387 } QFDS32, *PQFDS32; 365 388 … … 373 396 typedef struct _QFILEDATA32 374 397 { 375 ULONG rectype;// 8 for file376 struct _QFILEDATA32 *pNext; 377 ULONG ul OpenCount;378 PQFDS32 filedata;379 char acFilename[1];398 ULONG ulRecType; // 8 for file 399 struct _QFILEDATA32 *pNext; // next record 400 ULONG ulCFiles; // no. of SFT entries for this MFT entry 401 PQFDS32 paFiles; // first entry here 402 char szFilename[1]; 380 403 } QFILEDATA32, *PQFILEDATA32; 404 405 /********************** 406 * 407 * process struct 408 * 409 **********************/ 381 410 382 411 /* … … 393 422 typedef struct _QPROCESS32 394 423 { 395 ULONG rectype; // 1 for process 396 PQTHREAD32 pThreads; // thread data array; apperently with usThreadCount items 397 USHORT pid; // process ID 398 USHORT ppid; // parent process ID 424 ULONG ulRecType; // 1 for process 425 PQTHREAD32 pThreads; // thread data array, 426 // apperently with usThreadCount items 427 USHORT usPID; // process ID 428 USHORT usPPID; // parent process ID 399 429 ULONG ulProgType; 400 430 // -- 0: Full screen protected mode. … … 411 441 // -- STAT_DYING 0x40 412 442 // -- STAT_EMBRYO 0x80 413 ULONG sessid; // sessionID443 ULONG ulScreenGroupID; // screen group ID 414 444 USHORT usHModule; // module handle of main executable 415 USHORT usThreadCount; // no. of threads 445 USHORT usThreadCount; // no. of threads (TCB's in use) 416 446 ULONG ulPrivSem32Count; // count of 32-bit semaphores 417 ULONG ulPrivSem32s; // should be ptr to 32-bit sems array; 0 always447 PVOID pvPrivSem32s; // ptr to 32-bit sems array 418 448 USHORT usSem16Count; // count of 16-bit semaphores in pausSem16 array 419 449 USHORT usModuleCount; // count of DLLs owned by this process 420 USHORT usShrMemCount; // count of shared memory items450 USHORT usShrMemCount; // count of shared memory handles 421 451 USHORT usFdsCount; // count of open files; this is mostly way too large 422 452 PUSHORT pausSem16; // ptr to array of 16-bit semaphore handles; … … 424 454 PUSHORT pausModules; // ptr to array of modules (MTE); 425 455 // has usModuleCount items 426 PUSHORT pausShrMems; // ptr to array of shared mem items;456 PUSHORT pausShrMems; // ptr to array of shared mem handles; 427 457 // has usShrMemCount items 428 458 PUSHORT pausFds; // ptr to array of file handles; … … 432 462 } QPROCESS32, *PQPROCESS32; 433 463 434 /* 435 *@@ QSEMA32: 436 * Member of QSEM16STRUC32. 437 */ 438 439 typedef struct _QSEMA32 440 { 441 struct _QSEMA32 *pNext; 442 USHORT usRefCount; 443 UCHAR ucSysFlags; 444 UCHAR ucSysProcCount; 445 ULONG _reserved1_; 446 USHORT usIndex; 447 CHAR acName[1]; 448 } QSEMA32, *PQSEMA32; 449 450 /* 451 *@@ QSEM16STRUC32: 452 * Apparently 16-bit semaphores. 453 * 454 * Pointed to by QTOPLEVEL32. 455 */ 456 457 typedef struct _QSEM16STRUC32 458 { 459 ULONG rectype; /**/ 460 ULONG _reserved1_; 461 USHORT _reserved2_; 462 USHORT usSysSemIndex; 463 ULONG ulIndex; 464 QSEMA32 sema; 465 } QSEM16STRUC32, *PQSEM16STRUC32; 466 467 /* 468 *@@ QSEM32OWNER32: 469 * Pointed to by QSEM16SMUX32, QSEM16EV32, QSEM16MUX32. 470 */ 471 472 typedef struct _QSEM32OWNER32 473 { 474 USHORT pid; 475 USHORT usOpenCount; // or owner?!? 476 } QSEM32OWNER32, *PQSEM32OWNER32; 477 478 /* 479 *@@ QSEM32SMUX32: 480 * member of QSEM32STRUC32. 481 */ 482 483 typedef struct _QSEM32SMUX32 484 { 485 PQSEM32OWNER32 pOwner; 486 PCHAR pszName; 487 PVOID semrecs; // array of associated sema's 488 USHORT flags; 489 USHORT semreccnt; 490 USHORT waitcnt; 491 USHORT _reserved_; // padding to ULONG 492 } QSEM32SMUX32, *PQSEM32SMUX32; 493 494 /* 495 *@@ QSEM32EV32: 496 * describes an event semaphore. 497 * Member of QSEM32STRUC32. 498 */ 499 500 typedef struct _QSEM32EV32 501 { 502 PQSEM32OWNER32 pOwner; 503 PCHAR pacName; 504 PQSEM32SMUX32 pMux; 505 USHORT flags; 506 USHORT postcnt; 507 } QSEM32EV32, *PQSEM32EV32; 508 509 /* 510 *@@ QSEM32MUX32: 511 * member of QSEM32STRUC32. 512 */ 513 514 typedef struct _QSEM32MUX32 515 { 516 PQSEM32OWNER32 pOwner; 517 PCHAR name; 518 PQSEM32SMUX32 mux; 519 USHORT flags; 520 USHORT usRefCount; 521 USHORT thrdnum; 522 USHORT _reserved_; /* padding to ULONG */ 523 } QSEM32MUX32, *PQSEM32MUX32; 524 525 /* 526 *@@ QSEM32STRUC32: 527 * apparently describes a 32-bit semaphore. 528 * 529 * Pointed to by QTOPLEVEL32. 530 */ 531 532 typedef struct _QSEM32STRUC32 533 { 534 struct _QSEM32STRUC32 *pNext; 535 QSEM32EV32 EventSem; 536 QSEM32MUX32 MuxSem; 537 QSEM32SMUX32 SmuxSem; 538 } QSEM32STRUC32, *PQSEM32STRUC32; 464 /********************** 465 * 466 * 16-bit semaphores 467 * 468 **********************/ 469 470 // SysSemFlag values 471 472 #define QS32_SYSSEM_WAITING 0x01 /* a thread is waiting on the sem */ 473 #define QS32_SYSSEM_MUXWAITING 0x02 /* a thread is muxwaiting on the sem */ 474 #define QS32_SYSSEM_OWNER_DIED 0x04 /* the process/thread owning the sem died */ 475 #define QS32_SYSSEM_EXCLUSIVE 0x08 /* indicates a exclusive system semaphore */ 476 #define QS32_SYSSEM_NAME_CLEANUP 0x10 /* name table entry needs to be removed */ 477 #define QS32_SYSSEM_THREAD_OWNER_DIED 0x20 /* the thread owning the sem died */ 478 #define QS32_SYSSEM_EXITLIST_OWNER 0x40 /* the exitlist thread owns the sem */ 479 480 /* 481 *@@ QS32SEM16: 482 * 16-bit semaphore description. 483 * 484 *@@added V0.9.10 (2001-04-08) [umoeller] 485 */ 486 487 typedef struct _QS32SEM16 488 { 489 struct _QS32SEM16 *pNext; 490 // ULONG NextRec; /* offset to next record in buffer */ 491 /* System Semaphore Table Structure */ 492 USHORT usSysSemOwner; /* thread owning this semaphore */ 493 UCHAR fsSysSemFlags; /* system semaphore flag bit field */ 494 UCHAR usSysSemRefCnt ; /* number of references to this sys sem */ 495 UCHAR usSysSemProcCnt ; /* number of requests for this owner */ 496 UCHAR usSysSemPad ; /* pad byte to round structure up to word */ 497 USHORT pad_sh; 498 USHORT SemPtr; /* RMP SysSemPtr field */ 499 char szName[1]; /* start of semaphore name string */ 500 } QS32SEM16, *PQS32SEM16; 501 502 /* 503 *@@ QS32SEM16HEAD: 504 * 505 *@@added V0.9.10 (2001-04-08) [umoeller] 506 */ 507 508 typedef struct _QS32SEM16HEAD 509 { 510 ULONG SRecType; /* offset of SysSemDataTable */ 511 ULONG SpNextRec; /* overlays NextRec of 1st QS32SEM16 */ 512 ULONG S32SemRec; 513 ULONG S16TblOff; 514 // ULONG pSem16Rec; 515 QS32SEM16 Sem16Rec; // first record, with subsequent following 516 } QS32SEM16HEAD, *PQS32SEM16HEAD; 517 518 /********************** 519 * 520 * shared memory 521 * 522 **********************/ 539 523 540 524 /* … … 548 532 { 549 533 struct _QSHRMEM32 *pNext; 550 USHORT usHandle; 551 USHORT usSelector; 552 USHORT usRefCount; 553 CHAR acName[1]; 534 USHORT usHandle; // shared memory handle 535 USHORT usSelector; // selector 536 USHORT usRefCount; // reference count 537 CHAR acName[1]; // shared memory name 554 538 } QSHRMEM32, *PQSHRMEM32; 539 540 /********************** 541 * 542 * 32-bit semaphores 543 * 544 **********************/ 545 546 #define QS32_DC_SEM_SHARED 0x0001 // Shared Mutex, Event or MUX semaphore 547 #define QS32_DCMW_WAIT_ANY 0x0002 // Wait on any event/mutex to occur 548 #define QS32_DCMW_WAIT_ALL 0x0004 // Wait on all events/mutexs to occur 549 #define QS32_DCM_MUTEX_SEM 0x0008 // Mutex semaphore 550 #define QS32_DCE_EVENT_SEM 0x0010 // Event semaphore 551 #define QS32_DCMW_MUX_SEM 0x0020 // Muxwait semaphore 552 // #define QS32_DC_SEM_PM 0x0040 // PM Shared Event Semphore 553 #define QS32_DE_POSTED 0x0040 // event sem is in the posted state 554 #define QS32_DM_OWNER_DIED 0x0080 // The owning process died 555 #define QS32_DMW_MTX_MUX 0x0100 // MUX contains mutex sems 556 #define QS32_DHO_SEM_OPEN 0x0200 // Device drivers have opened this semaphore 557 #define QS32_DE_16BIT_MW 0x0400 // Part of a 16-bit MuxWait 558 #define QS32_DCE_POSTONE 0x0800 // Post one flag event semaphore 559 #define QS32_DCE_AUTORESET 0x1000 // Auto-reset event semaphore 560 561 /* 562 *@@ QS32OPENQ: 563 * 564 *@@added V0.9.10 (2001-04-08) [umoeller] 565 */ 566 567 typedef struct _QS32OPENQ { /* qsopenq */ 568 PID pidOpener; /* process id of opening process */ 569 USHORT OpenCt; /* number of opens for this process */ 570 } QS32OPENQ, *PQS32OPENQ; 571 572 /* 573 *@@ QS32EVENT: 574 * 575 *@@added V [umoeller] 576 */ 577 578 typedef struct _QS32EVENT { /* qsevent */ 579 QS32OPENQ *pOpenQ; /* pointer to open q entries */ 580 UCHAR *pName; /* pointer to semaphore name */ 581 ULONG *pMuxQ; /* pointer to the mux queue */ 582 USHORT flags; 583 USHORT PostCt; /* # of posts */ 584 } QS32EVENT, *PQS32EVENT; 585 586 /* 587 *@@ QS32MUTEX: 588 * 589 *@@added V0.9.10 (2001-04-08) [umoeller] 590 */ 591 592 typedef struct _QS32MUTEX { /* qsmutex */ 593 QS32OPENQ *pOpenQ; /* pointer to open q entries */ 594 UCHAR *pName; /* pointer to semaphore name */ 595 ULONG *pMuxQ; /* pointer to the mux queue */ 596 USHORT flags; 597 USHORT ReqCt; /* # of requests */ 598 USHORT SlotNum; /* slot # of owning thread */ 599 USHORT pad_sh; 600 } QS32MUTEX, *PQS32MUTEX; 601 602 /* 603 *@@ QS32MUX: 604 * 605 *@@added V0.9.10 (2001-04-08) [umoeller] 606 */ 607 608 typedef struct _QS32MUX { /* qsmux */ 609 QS32OPENQ *pOpenQ; /* pointer to open q entries */ 610 UCHAR *pName; /* pointer to semaphore name */ 611 void *pSemRec; /* array of semaphore record entries */ 612 USHORT flags; 613 USHORT cSemRec; /* count of semaphore records */ 614 USHORT WaitCt; /* # threads waiting on the mux */ 615 USHORT pad_sh; 616 } QS32MUX, *PQS32MUX; 617 618 /* 619 *@@ QS32SHUN: 620 * 621 *@@added V0.9.10 (2001-04-08) [umoeller] 622 */ 623 624 typedef union _QS32SHUN { /* qsshun */ 625 QS32EVENT qsSEvt; /* shared event sem */ 626 QS32MUTEX qsSMtx; /* shared mutex sem */ 627 QS32MUX qsSMux; /* shared mux sem */ 628 } QS32SHUN, *PQS32SHUN; 629 630 /* 631 *@@ QS32SEM32: 632 * 633 *@@added V0.9.10 (2001-04-08) [umoeller] 634 */ 635 636 typedef struct _QS32SEM32 { /* qsS32rec */ 637 void *pNext; /* pointer to next record in buffer */ 638 ULONG fl; // semaphore flags; THIS FIELD IS MISSING 639 // IN THE ORIGINAL TOOLKIT DEFINITIONS... 640 // only with this field we can determine 641 // if this is a mutex, event, or muxwait 642 PSZ pszName; // or NULL if unnamed 643 ULONG pvDeviceDriver; // ?!? points into kernel memory 644 USHORT usPostCount; 645 USHORT us_; 646 ULONG ulBlockID; 647 648 // can't make sense of the following fields... these 649 // seem to be variable in size 650 ULONG ulHandle; 651 /* USHORT usAlways1; 652 ULONG ulElse; 653 ULONG ulElse2; */ 654 } QS32SEM32, *PQS32SEM32; // qsS32rec_t; 655 656 /********************** 657 * 658 * modules 659 * 660 **********************/ 661 662 /* 663 *@@ QS32OBJ: 664 * describes an object in a module. 665 * Pointed to by QSMODULE32, but only 666 * if QS32_MTE was set on query. 667 * 668 *@@added V0.9.10 (2001-04-08) [umoeller] 669 */ 670 671 typedef struct _QS32OBJ { 672 ULONG oaddr; /* object address */ 673 ULONG osize; /* object size */ 674 ULONG oflags; /* object flags */ 675 } QS32OBJ, *PQS32OBJ; 555 676 556 677 /* … … 564 685 { 565 686 struct _QMODULE32 *pNext; // next module 566 USHORT usHModule; // module handle 567 USHORT type;568 ULONG ulRefCount; 569 ULONG ulSegmentCount;570 P VOID _reserved_;687 USHORT usHModule; // module handle (HMTE) 688 USHORT fFlat; // TRUE for 32-bit modules 689 ULONG ulRefCount; // no. of imports 690 ULONG cObjects; // no. of objects in module 691 PQS32OBJ paObjects; // ptr to objects list, if QS32_MTE was queried 571 692 PCHAR pcName; // module name (fully qualified) 572 693 USHORT ausModRef[1]; // array of module "references"; … … 575 696 } QMODULE32, *PQMODULE32; 576 697 698 /********************** 699 * 700 * top-level struct 701 * 702 **********************/ 703 577 704 /* 578 705 *@@ QTOPLEVEL32: … … 585 712 PQGLOBAL32 pGlobalData; 586 713 PQPROCESS32 pProcessData; 587 PQS EM16STRUC32pSem16Data;588 PQS EM32STRUC32pSem32Data; // not always present!714 PQS32SEM16HEAD pSem16Data; 715 PQS32SEM32 pSem32Data; // not always present! 589 716 PQSHRMEM32 pShrMemData; 590 717 PQMODULE32 pModuleData; … … 636 763 #pragma pack() 637 764 638 /********************************************************************639 *640 * DosQProcStat (16-bit) interface641 *642 ********************************************************************/643 644 PQPROCSTAT16 prc16GetInfo(APIRET *parc);645 646 VOIDprc16FreeInfo(PQPROCSTAT16 pInfo);765 /******************************************************************** 766 * 767 * DosQProcStat (16-bit) interface 768 * 769 ********************************************************************/ 770 771 APIRET prc16GetInfo(PQPROCSTAT16 *ppps); 772 773 APIRET prc16FreeInfo(PQPROCSTAT16 pInfo); 647 774 648 775 PQPROCESS16 prc16FindProcessFromName(PQPROCSTAT16 pInfo, … … 681 808 const char *pcszName); 682 809 683 PQS EMA32prc32FindSem16(PQTOPLEVEL32 pInfo,810 PQS32SEM16 prc32FindSem16(PQTOPLEVEL32 pInfo, 684 811 USHORT usSemID); 685 812 686 PQS EM32STRUC32 prc32FindSem32(PQTOPLEVEL32 pInfo,687 813 PQS32SEM32 prc32FindSem32(PQTOPLEVEL32 pInfo, 814 USHORT usSemID); 688 815 689 816 PQSHRMEM32 prc32FindShrMem(PQTOPLEVEL32 pInfo,
Note:
See TracChangeset
for help on using the changeset viewer.