home *** CD-ROM | disk | FTP | other *** search
/ World of Shareware - Software Farm 2 / wosw_2.zip / wosw_2 / CPROG / CSWITCH.ZIP / MTTEST.C < prev    next >
C/C++ Source or Header  |  1990-06-19  |  2KB  |  87 lines

  1. /*
  2. ** This is a demonstration program for CSWITCH multitasking library.
  3. ** Copyright 1990 by Herb Rose
  4. */
  5.  
  6. #include "stdio.h"
  7. #include "tcb.h"
  8.  
  9. extern struct tcb_rec tcb[];
  10. extern int swap_count;
  11. extern int readyq, swapq;
  12. extern int extmem_pages, exmemfree;
  13. extern int mapsize, swap_segment;
  14. extern int idletask2tcb;
  15. extern unsigned int totfreemem;
  16. extern int dos48, dos49, dos4a, dos1a, dos2f;
  17.  
  18. char msgbuf[1024];
  19.  
  20. char *tasks[5]={
  21.     "test1.exe","test2.exe","test3.exe","test4.exe","test5.exe" };
  22.  
  23. int taskidx;
  24.  
  25. main(argc, argv) int argc; char *argv[];
  26. {
  27.     int k,j,n,m;
  28.     int mf;
  29.     int t[16];
  30.     int noswap;
  31.  
  32.     noswap=0;
  33.     if(argc > 1)
  34.     {
  35.         if(tolower(argv[1][0])=='n') noswap=1;
  36.     }
  37.     for(k=0; k<10; k++) t[k]=0;
  38.  
  39.     puts("Multitasking test.\nPress any key to end.");
  40.     start_mt();
  41.     if(!noswap) j=start_swapping();
  42.     printf("Mapsize = %d   swap_segment= %04x\n",mapsize,swap_segment);
  43.     printf("extmem_pages = %uP     exmemfree = %uP\n",extmem_pages,exmemfree);
  44.     findlargemem();
  45.     printf("Memory available = %u paras\n",totfreemem);
  46.  
  47.     loadprg("test1.exe",3,1);
  48.     loadprg("test2.exe",4,1);
  49.     loadprg("test3.exe",5,1);
  50.     loadprg("test4.exe",6,1);
  51.     loadprg("test5.exe",7,1);
  52.     taskidx=0;
  53.  
  54.     k=0;
  55.  
  56.     while(!kbhit())
  57.     {
  58.         while(testmsg(1)>0)
  59.         {
  60.             if(kbhit()) break;
  61.             n=recvmsg(1,msgbuf,1000);
  62.             if(strncmp("test",msgbuf,4)!=0)
  63.             {
  64.                 puts(msgbuf);
  65.                 continue;
  66.             }
  67.             j=msgbuf[4] & 0xf;
  68.             t[j]++;
  69.             msgbuf[5]='\0';
  70.             printf("%5d:%s t1=%-4d t2=%-4d t3=%-4d t4=%-4d t5=%-4d\n",
  71.                 ++k,msgbuf,t[1],t[2],t[3],t[4],t[5]);
  72.             taskidx=j-1;
  73.             if((taskidx >=0) && (taskidx <5))
  74.             {
  75.                 while((m=loadprg(tasks[taskidx],j+2,j&1)) < 0)
  76.                 {
  77.                     printf("%d error loading %s\n",m,tasks[taskidx]);
  78.                 }
  79.             }
  80.         }
  81.         relinq();
  82.     }
  83.     getch();
  84.     end_mt();
  85. }
  86.  
  87.