home *** CD-ROM | disk | FTP | other *** search
- /****************************************************************
- * tasks.c Version 1.0
- * Created 25-aug-90
- * Lists tasks/processes currently running
- ****************************************************************/
-
- #include "exec/types.h"
- #include "exec/execbase.h"
- #include "stdio.h"
-
- struct MyMem {
- char name[80];
- int pri;
- ULONG addr;
- };
-
- struct MyMem mem[80]; /* holds max 80 tasks */
-
- extern struct ExecBase *SysBase;
-
- void main()
- {
- struct Task *ptr;
- int numtasks;
- UWORD *tmp;
- ULONG *tmp2;
-
- numtasks = 0;
-
- printf("Pri\tTask\tName\n");
-
- Forbid();
- ptr = (struct Task *)(SysBase->TaskReady.lh_Head);
- while(ptr->tc_Node.ln_Succ != NULL) {
- mem[numtasks].pri = (int)ptr->tc_Node.ln_Pri;
- mem[numtasks].addr = (ULONG)ptr;
-
- if(ptr->tc_Node.ln_Name != NULL) {
- strcpy(mem[numtasks].name,ptr->tc_Node.ln_Name);
- } else {
- strcpy(mem[numtasks].name,"<anonymous>");
- }
- numtasks++;
- ptr = (struct Task *)ptr->tc_Node.ln_Succ;
- }
- ptr = (struct Task *)(SysBase->TaskWait.lh_Head);
- while(ptr->tc_Node.ln_Succ != NULL) {
- mem[numtasks].pri = (int)ptr->tc_Node.ln_Pri;
- mem[numtasks].addr = (ULONG)ptr;
-
- if(ptr->tc_Node.ln_Name != NULL) {
- strcpy(mem[numtasks].name,ptr->tc_Node.ln_Name);
- } else {
- strcpy(mem[numtasks].name,"<anonymous>");
- }
- numtasks++;
- ptr = (struct Task *)ptr->tc_Node.ln_Succ;
- }
- Permit();
-
- while(--numtasks >= 0) {
- printf("%3d",mem[numtasks].pri);
- printf("\t%6lx\t%s\n",mem[numtasks].addr,mem[numtasks].name);
- }
- }
-
-