versadac  1
versadac - Scalable Recorder Firmware
ostask.h
1 /*****************************************************************************
2 FILE : S C O S T A S K .H
3 AUTHOR : Dave Cozens
4 SYSTEM : Gnu C++
5 DESCRIPTION : SCOS Task class
6 *****************************************************************************/
7 
8 #ifndef __SCOSTASK_H
9 #define __SCOSTASK_H
10 
11 #include "priority.h"
12 
13 #define MAX_NAME_LEN 20
14 #define DEFAULT_PRIORITY (FBEXEC_PRIORITY - 1)
15 
17 {
18  public:
19 
20  OSRunnableTask(){m_bStop = 0;};
21 
22  void stop(){m_bStop = 1;};
23 
24  /* Any class that wishes to be run as an independant task must derive from
25  this base class and implement the following method */
26  virtual void runTask() = 0;
27 
28  protected:
29 
30  unsigned char m_bStop;
31 };
32 
33 class OSTask
34 {
35  public:
36 
37  OSTask(const char * z_name, unsigned short z_priority, unsigned short z_opt,
38  unsigned short z_stack, OSRunnableTask * z_task);
39 
40  ~OSTask();
41 
42  /* sets the task active */
43  void start();
44 
45  /* vxWorks task entry point */
46  static void taskEntry(OSTask *taskToStart);
47 
48  unsigned char completed(){return m_bCompleted;};
49  int get_taskid() {return m_tid;};
50 
51  private:
52 
53  unsigned char m_bCompleted; /* True if the runnable task has stopped */
54  int m_opt; /* vxWorks task options */
55  int m_tid; /* vxWorks task id */
56  unsigned int m_arg; /* vxWorks task argument */
57  unsigned int m_priority; /* vxWorks priority 1-255 */
58  unsigned int m_stack; /* vxWorks stack (in bytes) */
59  char m_name[MAX_NAME_LEN+1]; /* vxWorks task name */
60  OSRunnableTask *m_pRunnableTask; /* The task to be run, could be any class type
61  but must have runnable base class */
62 };
63 
64 #endif
Definition: ostask.h:16
Definition: ostask.h:33