view TaskManager/kernel/schedule/SchedTaskArrayNop.cc @ 830:c7905ead974f

return TaskList->self
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 25 May 2010 17:28:05 +0900
parents 45c141669de7
children 586ed400413a
line wrap: on
line source

#include "SchedTaskArrayNop.h"
#include "Scheduler.h"


SchedTaskArrayNop::SchedTaskArrayNop(Scheduler *s, SchedTaskBase *savedTask_, Task *curTask_, Task *_array)
{
    savedTask = savedTask_;
    params_addr = (memaddr)savedTask->task->self;
    atask = _array;
    scheduler = s;

    inListData.bound = 0;
    inListData.size = 0;
    inListData.length = 0;
    inListData.element = 0;
    outListData.bound = 0;
    outListData.size = 0;
    outListData.length = 0;
    outListData.element = 0;
}



/**
 */
SchedTaskArrayNop::~SchedTaskArrayNop()
{
}


/**
 * Task data / code read
 */
void
SchedTaskArrayNop::read()
{

}

/**
 *  Wait read data and execute task
 *  Start write DMA
 */
void
SchedTaskArrayNop::exec()
{

}

/**
 *   Wait write DMA
 *   send finish mail
 */
void
SchedTaskArrayNop::write()
{
#ifndef TASK_LIST_MAIL
    scheduler->mail_write((memaddr)params_addr);
#endif
    free(atask);

}

SchedTaskBase*
SchedTaskArrayNop::next(Scheduler *scheduler, SchedTaskBase *p)
{

    // 最後のTask が exec されて、次の Task を実行してかまわない。

    SchedTaskBase *n =  savedTask->next(scheduler, savedTask);
    
    delete savedTask;
    return n;

}


/* end */