Mercurial > hg > Members > kono > Cerium
diff TaskManager/kernel/ppe/TaskManagerImpl.h @ 637:5530fa36d42e
not yet worked...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Thu, 19 Nov 2009 11:13:42 +0900 |
parents | d433fc37587d |
children | 7c9ded1ea750 |
line wrap: on
line diff
--- a/TaskManager/kernel/ppe/TaskManagerImpl.h Wed Nov 18 19:09:40 2009 +0900 +++ b/TaskManager/kernel/ppe/TaskManagerImpl.h Thu Nov 19 11:13:42 2009 +0900 @@ -23,6 +23,7 @@ HTaskInfo *htaskImpl; SchedTask *schedTaskManager; + Scheduler *scheduler; /* constructor */ TaskManagerImpl(int num = 1) ; @@ -42,15 +43,38 @@ void systask_init(); // user - HTaskPtr create_task(int cmd); - HTaskPtr create_task(int cmd, memaddr rbuf, long r_size, memaddr wbuf, long w_size); - void set_task_depend(HTaskPtr master, HTaskPtr slave); - void spawn_task(HTaskPtr); - void set_task_cpu(HTaskPtr, CPU_TYPE); + virtual HTaskPtr create_task(int cmd); + virtual HTaskPtr create_task(int cmd, memaddr rbuf, long r_size, memaddr wbuf, long w_size); + virtual void set_task_depend(HTaskPtr master, HTaskPtr slave); + virtual void spawn_task(HTaskPtr); + virtual void set_task_cpu(HTaskPtr, CPU_TYPE); - virtual void* allocate(int size) = 0; - virtual void* allocate(int size,int align) = 0; - virtual Scheduler* get_scheduler() = 0; + void* allocate(int size, int alignment) + { + if (size==0) return 0; + #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) + return malloc(size); + #else + void *buff; + posix_memalign(&buff, alignment, size); + return buff; + #endif + } + + void* allocate(int size) + { + if (size==0) return 0; + #if defined(__SPU__) || ! defined(HAS_POSIX_MEMALIGN) + return malloc(size); + #else + void *buff; + posix_memalign(&buff, DEFAULT_ALIGNMENT, size); + return buff; + #endif + } + + Scheduler* get_scheduler() { return scheduler; } + void set_scheduler(Scheduler *s) { scheduler = s; } }; #endif