home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / lang / odinlib2_7.lzh / TASKS.C < prev   
Encoding:
C/C++ Source or Header  |  1990-10-16  |  1.4 KB  |  67 lines

  1. /****************************************************************
  2. * tasks.c Version 1.0
  3. * Created 25-aug-90
  4. * Lists tasks/processes currently running
  5. ****************************************************************/
  6.  
  7. #include    "exec/types.h"
  8. #include    "exec/execbase.h"
  9. #include    "stdio.h"
  10.  
  11. struct MyMem {
  12.     char    name[80];
  13.     int    pri;
  14.     ULONG    addr;
  15. };
  16.  
  17. struct MyMem mem[80];        /* holds max 80 tasks */
  18.  
  19. extern struct ExecBase *SysBase;
  20.  
  21. void main()
  22. {
  23.     struct Task *ptr;
  24.     int numtasks;
  25.     UWORD *tmp;
  26.     ULONG *tmp2;
  27.  
  28.     numtasks = 0;
  29.  
  30.     printf("Pri\tTask\tName\n");
  31.  
  32.     Forbid();
  33.     ptr = (struct Task *)(SysBase->TaskReady.lh_Head);
  34.     while(ptr->tc_Node.ln_Succ != NULL) {
  35.         mem[numtasks].pri = (int)ptr->tc_Node.ln_Pri;
  36.         mem[numtasks].addr = (ULONG)ptr;
  37.  
  38.         if(ptr->tc_Node.ln_Name != NULL) {
  39.             strcpy(mem[numtasks].name,ptr->tc_Node.ln_Name);
  40.         } else {
  41.             strcpy(mem[numtasks].name,"<anonymous>");
  42.         }
  43.         numtasks++;
  44.         ptr = (struct Task *)ptr->tc_Node.ln_Succ;
  45.     }
  46.     ptr = (struct Task *)(SysBase->TaskWait.lh_Head);
  47.     while(ptr->tc_Node.ln_Succ != NULL) {
  48.         mem[numtasks].pri = (int)ptr->tc_Node.ln_Pri;
  49.         mem[numtasks].addr = (ULONG)ptr;
  50.  
  51.         if(ptr->tc_Node.ln_Name != NULL) {
  52.             strcpy(mem[numtasks].name,ptr->tc_Node.ln_Name);
  53.         } else {
  54.             strcpy(mem[numtasks].name,"<anonymous>");
  55.         }
  56.         numtasks++;
  57.         ptr = (struct Task *)ptr->tc_Node.ln_Succ;
  58.     }
  59.     Permit();
  60.  
  61.     while(--numtasks >= 0) {
  62.         printf("%3d",mem[numtasks].pri);
  63.         printf("\t%6lx\t%s\n",mem[numtasks].addr,mem[numtasks].name);
  64.     }
  65. }
  66.  
  67.