view TaskManager/Fifo/MainScheduler.cc @ 354:cfd20d609ace draft

add example/get_segment and change spe/DrawSpan.cpp
author koba
date Wed, 15 Jul 2009 17:39:51 +0900
parents 028ffc9c0375
children a5ae1fbbafd6
line wrap: on
line source

#include <stdlib.h>
#include <string.h>
#include "MainScheduler.h"
#include "FifoDmaManager.h"
#include "error.h"

void
MainScheduler::init_impl(void)
{
    connector = new FifoDmaManager();
}

void
MainScheduler::set_mailManager(MailManager *m)
{
    ((FifoDmaManager*)connector)->mailManager = m;
}

/**
 * PPE TaskManager から TaskList やその他コマンドが格納された
 * メールキューが送られてくる
 */
void
MainScheduler::send_mailList(MailQueuePtr mail_list)
{
    ((FifoDmaManager*)connector)->mail_recvQueue = mail_list;
    ((FifoDmaManager*)connector)->mail_sendQueue = NULL;
}

/**
 * PPE TaskManager が、 Task の終了やその他コマンドが格納された
 * メールキューを受け取る
 */
MailQueuePtr
MainScheduler::recv_mailList(void)
{
    return ((FifoDmaManager*)connector)->mail_sendQueue;
}


void*
MainScheduler::allocate(int size)
{
    void *ptr = malloc(size);
    bzero(ptr, size);

    return ptr;
}


/**
 * メインメモリ領域を allocate する。
 * Fifo バージョンだから、まあ普通に malloc でおk
 */
void
MainScheduler::mainMem_alloc(int id, int size)
{
    mainMemList[id] = allocate(size);
}

#if 0
/**
 * MainScheduler.h に書いてます
 */ 
void
MainScheduler::mainMem_wait(void)
{
    // 何もしねえ
}
#endif