
/******************************************************************************
 *
 * RCS ID
 * $Id: tasks,v 1.3 2000/04/17 16:46:02 david Exp $
 *
 * HISTORY
 * $Log: tasks,v $
 * Revision 1.3  2000/04/17 16:46:02  david
 * updates after testing event poll word non zero stuff
 *
 * Revision 1.2  1999/11/07 15:11:54  david
 * version:updated!
 * wimp:no longer used -> now using toolbox lib instead
 *
 * Revision 1.1  1999/05/16 12:00:07  david
 * Initial revision
 *
 *
 *****************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "kernel.h"
#include "swis.h"

extern int StrCaseCmp(const char *, const char *);
                                           
typedef struct sTaskInfo {
  int   handle;
  char *name;
  int   memory;
  int   flags;
} tTaskInfo, *ptTaskInfo; 
   
int taskCheck(char *mytask)
{
  _kernel_swi_regs r;               
  _kernel_oserror  *e=NULL;   
  int              keep_going=1;
  int              handle=0;
  tTaskInfo        buffer;
  int              counter=0;

  while (keep_going)
  {

    r.r[0]=handle;
    r.r[1]=(int)&buffer;
    r.r[2]=sizeof(buffer);              

    e = _kernel_swi(XOS_Bit|TaskManager_EnumerateTasks, &r, &r);                     
     
    if (e==NULL)
    {
      handle=r.r[0];
      if (handle<0)
      {
        keep_going=0;
      }
      else
      {               
#if 0
        fprintf(fp,"mytask %s :: handle %x, name %s, memory %d, flags %x\n",
               mytask,
               buffer.handle, 
               buffer.name, 
               buffer.memory, 
               buffer.flags); 
#endif
        
        if (strncmp(buffer.name,mytask,strlen(mytask))==0 &&
            buffer.flags==0)
        {
           counter++;
        }
      }   

    }  
    else
    {
      keep_going=0;
    }
  }                
                      
  return counter;
}
