view TaskManager/kernel/schedule/SchedTaskList.cc @ 1467:d585a7614cd5 draft

look like working now.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 15 Jul 2012 17:33:50 +0900
parents cb57420a8219
children f82bb7393c4d
line wrap: on
line source

#include <stdlib.h>
#include <string.h>
#include "SchedTaskList.h"
#include "SchedTask.h"
#include "SysFunc.h"
#include "SchedNop2Ready.h"
#include "DmaManager.h"
#include "error.h"

/**
 * SchedTaskList を返す
 *
 * @param[in] next_list 次の実行する TaskList のアドレス
 * @param[in] next_list がメインメモリのアドレスか、
 *            SPE で生成されたアドレスかのフラグ
 *            SPE で生成されている場合、DMA の必要は無い
 *            0: メインメモリ, 1: SPE
 */

SchedTaskList::SchedTaskList(memaddr addr, Scheduler *sched, int tag)
{
    // next() で生成された時に、Task List read を始める
    memaddr params_addr = addr;
    // should check TaskList size  Todo
    scheduler = sched;
    list = scheduler->get_curListBuf();
    connector = scheduler->connector;
    list = (TaskListPtr)connector->dma_load1(list, params_addr,
                        sizeof(TaskList), DMA_READ_TASKLIST);
    cur_index = 0;

    this->tag = tag;

}


void
SchedTaskList::read()
{
    // next() で TaskListの中身を見られてしまうので、
    // ここで DMA 待ちを行う
    __debug("[SchedTaskList:%s]\n", __FUNCTION__);
    connector->dma_wait(DMA_READ_TASKLIST);
}

void
SchedTaskList::exec() {
}

void
SchedTaskList::write()
{
}


/* end */