|
|
1.1 root 1: /* This routine is started in a DosStartSession call from REGISTER.EXE. */
2: /* It accesses the shared memory allocated in REGISTER, and prints the */
3: /* contents of the counters being incremented by the viosubsystem */
4: /* replacement routine, REPLACE, found in the VIOROUT dll. */
5: /* */
6: /* Created by Microsoft Corp. 1988 */
7:
8: #define INCL_DOSPROCESS
9: #define INCL_DOSMEMMGR
10: #define INCL_DOSSEMAPHORES
11:
12: #include <os2def.h>
13: #include <bsedos.h>
14: #include <stdio.h>
15: #include "share.h" /* Common declarations between processes */
16:
17: main()
18: { SEL Selector; /* Shared memory selector */
19: struct ShareRec far *SmemPtr; /* Shared memory layout, defined in Share.h */
20: unsigned rc; /* Return code */
21: int calls;
22: int total;
23:
24: /* Access shared memory allocated in REGISTER.EXE */
25: /* This session is started after the memory has been allocated, so
26: no need to loop waiting for allocation */
27: if (rc = DosGetShrSeg(SHRSEGNAME, &Selector)){
28: printf(" Illegal share segment.\n");
29: DosExit(EXIT_PROCESS,0);
30: }
31:
32: /* Get far pointer from 16 bit selector */
33: SmemPtr = (struct ShareRec far *)MAKEP(Selector,0);
34:
35: printf("\n");
36: printf("\n");
37: printf("%60s\n", "ACCESSING SHARED MEMORY REPLACEMENT ROUTINE IS UPDATING");
38: printf("\n");
39: printf(" Type CTRL-C to quit\n");
40: printf("\n");
41: printf("\n");
42: while (1 ) {
43: /* Interleave with replacement routine, REPLACE */
44: DosSemWait((HSEM)&(SmemPtr->updated), WAITFOREVER);
45:
46: DosSemRequest((HSEM)&(SmemPtr->mutexsem), WAITFOREVER);
47: /* Access counter contents */
48: calls = SmemPtr->count;
49: total = SmemPtr->totalength;
50: DosSemClear((HSEM)&(SmemPtr->mutexsem));
51:
52: DosSemSet((HSEM)&(SmemPtr->updated));
53:
54: /* Print counter contents */
55: printf("%s%d%s%d\r", "Number of calls to VIOWRTTTY = ", calls,
56: " Total number of bytes written = ", total);
57: }
58:
59: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.