view TaskManager/kernel/ppe/DmaBuffer.cc @ 0:04e28d8d3c6f

first commit
author Daiki KINJYO <e085722@ie.u-ryukyu.ac.jp>
date Mon, 08 Nov 2010 01:23:25 +0900
parents
children
line wrap: on
line source

#include <stdio.h>
#include <stdlib.h>
#include "types.h"
#include "DmaBuffer.h"

#define ALIGN_DOWN(v, align) ((v)&(-align))
#define ALIGN_UP(v, align)   ALIGN_DOWN((v)+((align)-1), align)


DmaBuffer::DmaBuffer(int size)
{
#ifndef HAS_POSIX_MEMALIGN
    buffer[0] = malloc(size);
    buffer[1] = malloc(size);
#else
    posix_memalign(&buffer[0],64,size);
    posix_memalign(&buffer[1],64,size);
#endif
    flag = 0;
}

DmaBuffer::~DmaBuffer(void)
{
    free(buffer[0]);
    free(buffer[1]);
}

void
DmaBuffer::swap_buffer(void)
{
    flag ^= 1;
}

void
DmaBuffer::get_buffer(void *_dst)
{
    void **dst = (void**)_dst;
    *dst = buffer[flag];
}