Mercurial > hg > Members > kono > Cerium
annotate TaskManager/kernel/ppe/DmaBuffer.cc @ 818:19c6cdeb23d6
too few template-parameter-lists
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 23 May 2010 10:55:25 +0900 |
parents | aaaa0baeab89 |
children |
rev | line source |
---|---|
54 | 1 #include <stdio.h> |
2 #include <stdlib.h> | |
70 | 3 #include "types.h" |
54 | 4 #include "DmaBuffer.h" |
5 | |
88 | 6 #define ALIGN_DOWN(v, align) ((v)&(-align)) |
7 #define ALIGN_UP(v, align) ALIGN_DOWN((v)+((align)-1), align) | |
8 | |
9 | |
54 | 10 DmaBuffer::DmaBuffer(int size) |
11 { | |
727 | 12 #ifndef HAS_POSIX_MEMALIGN |
86 | 13 buffer[0] = malloc(size); |
14 buffer[1] = malloc(size); | |
625
60aa3f241b10
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
15 #else |
60aa3f241b10
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
16 posix_memalign(&buffer[0],64,size); |
60aa3f241b10
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
17 posix_memalign(&buffer[1],64,size); |
60aa3f241b10
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
18 #endif |
54 | 19 flag = 0; |
20 } | |
21 | |
22 DmaBuffer::~DmaBuffer(void) | |
23 { | |
625
60aa3f241b10
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
24 free(buffer[0]); |
60aa3f241b10
64bit mode worked on Mac OS X.
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
603
diff
changeset
|
25 free(buffer[1]); |
54 | 26 } |
27 | |
28 void | |
29 DmaBuffer::swap_buffer(void) | |
30 { | |
31 flag ^= 1; | |
32 } | |
33 | |
34 void | |
35 DmaBuffer::get_buffer(void *_dst) | |
36 { | |
37 void **dst = (void**)_dst; | |
38 *dst = buffer[flag]; | |
39 } |