/**
 * Scout - The Amiga System Monitor
 *
 *------------------------------------------------------------------
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 * You must not use this source code to gain profit of any kind!
 *
 *------------------------------------------------------------------
 *
 * @author Andreas Gelhausen
 * @author Richard Körber <rkoerber@gmx.de>
 */


/* Prototypes for functions defined in
objects/scout_tasks.c
 */

struct   TaskEntry {
   struct   TaskEntry   *ts_next;
   struct   Task        *ts_ptr;
   char  ts_address[ADDRESSLENGTH];
   char  ts_name[NODENAMELENGTH+2];
   char  ts_pri[PRIORITYLENGTH];
   char  ts_type[NODETYPELEN];
   char  ts_num[4];
   char  ts_state[TASKSTATELEN];
   char  ts_cpu[10];
   char  ts_sigwait[10];
};

struct   HunkEntry {
   char  he_lower[10];
   char  he_upper[10];
   char  he_size[10];
};

extern int taskcnt;

extern APTR taskmoretext0;

extern APTR taskmoretext1;

extern APTR taskmoretext2;

extern APTR taskmoretext3;

extern APTR procmorelist;

extern APTR processmoretext0;

extern APTR processmoretext1;

extern APTR processmoretext2;

extern APTR processmoretext3;

extern APTR processmoretext4;

extern APTR processmoretext5;

extern APTR processmoretext6;

extern APTR processmoretext7;

extern struct SignalSemaphore * patchsem;

extern void (* __asm cleartaskdata)(void);

extern LONG (* __asm gettaskdata)(register __d0 struct Task * );

extern struct Task * (* __asm getaddedtask)(void);

extern char * switchstate;

extern LONG totalmicros;

extern LONG cpuseconds;

extern LONG cpumicros;

extern struct Task * cheattask;

struct Task * AddCheatTask(void);

void RemoveCheatTask(void);

struct Task * TaskExists(struct Task * );

void HandleTimerRequest(BOOL );

void CheckCPUUsage(void);

char * GetTaskState(UBYTE );

char * GetNodeType(UBYTE );

LONG __asm tasklist_cmpcpufunc(register __a1 struct TaskEntry * , register __a2 struct TaskEntry * );

extern struct Hook tasklist_cmpcpuhook;

LONG __asm tasklist_cmpprifunc(register __a1 struct TaskEntry * , register __a2 struct TaskEntry * );

extern struct Hook tasklist_cmpprihook;

LONG __asm tasklist_cmpaddressfunc(register __a1 struct ListEntry * , register __a2 struct ListEntry * );

extern struct Hook tasklist_cmpaddresshook;

LONG __asm tasklist_dspfunc(register __a2 char ** , register __a1 struct TaskEntry * , register __a0 struct Hook * );

extern struct Hook tasklist_dsphook;

void FreeTasks(void);

char * GetTaskName(struct Task * );

void GetTaskNumber(struct Task * , char * );

void GetTaskEntry(struct Task * , struct TaskEntry * , BOOL );

void UpdateTasks(void);

int GetTasks(struct TaskEntry ** );

void PrintTasks(char * );

void ShowTasks(void);

void SendTaskList(void);

void GetTaskMore(struct Task * );

LONG __asm procmore_dspfunc(register __a2 char ** , register __a1 struct HunkEntry * , register __a0 struct Hook * );

extern struct Hook procmore_dsphook;

void GetSegList(struct Process *);

void GetProcessMore(struct Process * );

extern APTR TaskSortList[5];

extern APTR WI_Tasks;

extern APTR tasklist;

extern APTR tasktext;

extern APTR tasktext2;

extern APTR taskcount;

extern APTR CY_TaskSort;

extern int tasksortstate;

extern APTR BT_TaskPrint;

extern APTR BT_TaskFreeze;

extern APTR BT_TaskActivate;

extern APTR cpucount;

extern APTR CY_CpuUsage;

extern APTR BT_TaskUpdate;

extern APTR BT_TaskRemove;

extern APTR BT_TaskSignal;

extern APTR BT_TaskBreak;

extern APTR BT_TaskPriority;

extern APTR BT_TaskMore;

extern APTR BT_TaskExit;

void TasksWindow(BOOL );

