view TaskManager/kernel/memory/MemIterator.h @ 1696:e8ded21ac9a2 draft

add gpu/task_init.cc
author Yuhi TOMARI <yuhi@cr.ie.u-ryukyu.ac.jp>
date Mon, 30 Sep 2013 19:01:12 +0900
parents d7486d6a5e37
children
line wrap: on
line source

#ifndef INCLUDED_MEMORY_ITERATOR
#define INCLUDED_MEMORY_ITERATOR

#include "MemList.h"
#include "MemorySegment.h"
#include "AddrList.h"
#include "SchedTask.h"

enum {

  READ_WRITE,
  READ,
  WRITE,

};

class MemIterator {
public:

    // 走査する アドレスリスト
    AddrListPtr addr_list;

    // 扱う MemorySegment のリスト
    MemList *mem_list;

    // ms の stage
    MemorySegmentPtr read_ms;
    MemorySegmentPtr exec_ms;
    MemorySegmentPtr write_ms;
    MemorySegmentPtr free_ms;

    SchedTask *smanager;

    MemIterator(AddrListPtr add_list, MemList *mem_list, int cmd, SchedTask *smanager);
    ~MemIterator();


    MemorySegmentPtr (MemIterator::*get_ms)(void);

    int hasNext(void);

    MemorySegmentPtr get_read_write_ms(void);
    MemorySegmentPtr get_read_ms(void);
    MemorySegmentPtr get_write_ms(void);

    void collect_ms(void);
    void overwrite_list(AddrListPtr list);

};

typedef MemIterator *MemIteratorPtr;

#endif