Mercurial > hg > Members > yutaka > manager
view ppe/Menu.cc @ 7:febf899d0043
mandelbrot
author | yutaka@localhost.localdomain |
---|---|
date | Mon, 12 Apr 2010 00:32:34 +0900 |
parents | 39d405bc46b7 |
children | ec2c1003f9b6 |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include "Menu.h" #include "Sys.h" #include "params.h" #include "fb.h" //headk_num と send_param_head の値を必ず返さないと、動作しない task_head_t* menu(int &list_num) { list_num = SPE_NUM; fb_t fb = get_fbdev_addr(); int max_size = MAX_DMA_SIZE - sizeof(task_head_t); int all_line_num = fb.height; int line_size = fb.width * fb.bpp / DIV_BYTE; // line num per task int lnpt = max_size / line_size; int out_size = lnpt * line_size; int list_length = (all_line_num / list_num) / lnpt; int in_size = sizeof(int)*4; int real_in_size = sizeof(int)*2; task_head_t *list_head = (task_head_t*)allocate(sizeof(task_head_t)*list_num); task_t **tail = (task_t**)allocate(sizeof(task_t*)*list_num); int index = 0; for (int i = 0; i < list_num; i++) { tail[i] = entry_head(&list_head[i]); } for (int i = 0; i < all_line_num / lnpt; i++) { task_t *task = task_allocate(in_size, 0); task->head->ea_out = (unsigned long long) (unsigned long) &fb.pixels[index*out_size]; task->head->size_out = out_size; int *in = (int*)task->input; in[0] = index*out_size; in[1] = (index+1)*out_size; int pin_in = in_size - real_in_size; int pin_out = 0; set_pin(task, pin_in, pin_out); tail[i%list_num] = add_list(tail[i%list_num], task); index++; } // for (int i = 0; i < list_num; i++) { // task_t *head = entry_head(&list_head[i]); // for (int j = 0; j < list_length; j++) { // task_t *task = task_allocate(in_size, 0); // task->head->ea_out = (unsigned long long) (unsigned long) &fb.pixels[index*out_size]; // task->head->size_out = out_size; // int *in = (int*)task->input; // in[0] = index*out_size; // in[1] = (index+1)*out_size; // int pin_in = in_size - real_in_size; // int pin_out = 0; // set_pin(task, pin_in, pin_out); // head = add_list(head, task); // index++; // } // } printf("return run\n"); //munmap(fb.pixels, fb.size); //close(fb.fd); return list_head; }