view TaskManager/kernel/schedule/SchedTaskList.cc @ 1546:61164c687b29 draft

fix GpuScheduler flip
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Tue, 05 Feb 2013 13:15:46 +0900
parents d585a7614cd5
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 */