annotate example/fileread/main.cc @ 1869:5e06a8089625 draft

merge
author Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
date Thu, 26 Dec 2013 15:33:06 +0900
parents 14225fec047c 7706faa6b0c9
children c3f7ba33222d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <stdlib.h>
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 #include <string.h>
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include <sys/stat.h>
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
5 #include <sys/time.h>
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
6 #include <sys/types.h>
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
7 #include <sys/mman.h>
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 #include "TaskManager.h"
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
9 #include "SchedTask.h"
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 #include "Func.h"
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
11 #include "FileRead.h"
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 extern void task_init(void);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
15 static double st_time;
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
16 static double ed_time;
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 static int spe_num = 1;
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
18 int divide_read_flag = 0;
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 static CPU_TYPE spe_cpu = SPE_ANY;
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
20 static int DIVISION_SIZE = 4096*4;
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 extern TaskManager *manager;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 const char *usr_help_str = "Usage: ./fileread [-cpu cpu_num] [-file filename]\n\
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 -cpu Number of SPE (default 1) \n\
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
25 -file Opne file\n";
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
26
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
27 typedef struct {
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
28 caddr_t file_mmap;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
29 off_t size;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
30 } st_mmap_t;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
31
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
32 SchedDefineTask1(RUN_BLOCKS,run16);
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
33
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
34 static int
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
35 run16(SchedTask *manager, void *in, void *out) {
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
36
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
37 FileReadPtr fr = (FileReadPtr)in;
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
38 char* read_text = (char*)out;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
39 HTaskPtr wait;
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
40
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
41 for (int i = 0; (fr->left_size > 0) && (i < fr->task_blocks); i++) {
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
42 HTaskPtr read = manager->create_task(Read_task);
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
43 read->set_cpu(fr->cpu);
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
44
1828
f0dab5fffe7a cannot running probrem resolve in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1827
diff changeset
45 if (i == fr->task_blocks / 2) wait = read;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
46
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
47 read->set_param(0,(long)fr->task_number); //生成するTaskが何番目か
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
48 read->set_param(1,(long)fr->division_size); //1つのタスクが読み込む量
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
49 if(fr->left_size <= fr->division_size){
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
50 read->set_param(2,(long)fr->left_size);
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
51 }else{
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
52 read->set_param(2,(long)fr->division_size);
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
53 }
1840
0305732326ca change *fd to fd & change set_inData to set_param
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1828
diff changeset
54 read->set_param(3,(long)fr->fd); //fdの番号の受け渡し
1869
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1868 1867
diff changeset
55 <<<<<<< local
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
56
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
57 read->set_outData(0,read_text + fr->task_number*fr->division_size, fr->division_size);
1869
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1868 1867
diff changeset
58 =======
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1868 1867
diff changeset
59 >>>>>>> other
1867
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
60
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
61 fr->t_print->wait_for(read);
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
62 read->spawn();
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
63
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
64 fr->left_size -= fr->division_size;
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
65 fr->task_number++;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
66 }
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
67
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
68 if (fr->left_size > 0) {
1869
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1868 1867
diff changeset
69 <<<<<<< local
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
70 HTaskPtr next = manager->create_task(RUN_BLOCKS, (memaddr)&fr->self, sizeof(memaddr),read_text,fr->filesize);
1869
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1868 1867
diff changeset
71 =======
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
72 HTaskPtr next = manager->create_task(RUN_BLOCKS, (memaddr)&fr->self, sizeof(memaddr),0,0);
1869
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1868 1867
diff changeset
73 >>>>>>> other
1867
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
74 fr->t_print->wait_for(next);
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
75 next->wait_for(wait);
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
76 next->spawn();
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
77 }
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
78 return 0;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
79 }
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
80
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
81 static double
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
82 getTime(){
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
83 struct timeval tv;
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
84 gettimeofday(&tv,NULL);
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
85 return tv.tv_sec + (double)tv.tv_usec*1e-6;
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
86 }
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
87
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
88 void
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
89 TMend(TaskManager *manager)
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
90 {
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
91 ed_time = getTime();
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
92 printf("Time: %0.6f\n",ed_time-st_time);
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
93 }
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
94
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 static char*
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 init(int argc, char **argv)
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 char *filename = 0;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 for (int i = 1; argv[i]; ++i) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 if (strcmp(argv[i], "-cpu") == 0) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 spe_num = atoi(argv[i+1]);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 } else if (strcmp(argv[i], "-file") == 0) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 filename = argv[i+1];
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
107 } else if (strcmp(argv[i], "-dr") == 0) {
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
108 divide_read_flag = 1;
1740
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1722
diff changeset
109 }
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 if (filename==0){
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 puts(usr_help_str);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 exit(1);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 return filename;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
120
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
121 SchedDefineTask1(MMAP,my_mmap);
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
122
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
123 static int
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
124 my_mmap(SchedTask *s, void *in, void *out)
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
125 {
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
126
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
127 FileReadPtr fr = (FileReadPtr)in;
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
128 /*マッピングだよ!*/
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
129
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
130 int map = MAP_PRIVATE;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
131 st_mmap_t st_mmap;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
132
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
133 int fd = fr->fd;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
134 st_mmap.size = fr->filesize;
1866
7b3aa1a31c3a fix ( cannot wait for run16 )
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1865
diff changeset
135 fr->read_text = (char*)mmap(NULL,st_mmap.size,PROT_READ,map,fd,(off_t)0);
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
136 if (st_mmap.file_mmap == (caddr_t)-1) {
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
137 fprintf(stderr,"Can't mmap file\n");
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
138
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
139 perror(NULL);
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
140 exit(0);
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
141 }
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
142
1866
7b3aa1a31c3a fix ( cannot wait for run16 )
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1865
diff changeset
143 printf("in mmap mode\n");
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
144 return 0;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
145 }
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
146
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
147
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 static void
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 run_start(TaskManager *manager,char *filename)
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 {
1840
0305732326ca change *fd to fd & change set_inData to set_param
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1828
diff changeset
151 long fd = (long)manager->allocate(sizeof(long));
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
152 struct stat *sb = (struct stat*)manager->allocate(sizeof(struct stat));
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
153
1840
0305732326ca change *fd to fd & change set_inData to set_param
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1828
diff changeset
154 if ((fd=open(filename,O_RDONLY,0666))==0) {
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
155 fprintf(stderr,"can't open %s\n",filename);
1740
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1722
diff changeset
156 }
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
157
1840
0305732326ca change *fd to fd & change set_inData to set_param
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1828
diff changeset
158 if (fstat(fd,sb)) {
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
159 fprintf(stderr,"can't fstat %s\n",filename);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
161
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
162 FileReadPtr fr = (FileReadPtr)manager->allocate(sizeof(FileRead));
1802
e08f6133f5d7 change iterator to spawn in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1740
diff changeset
163
1861
9e96c8c52574 some fix in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1840
diff changeset
164 fr->self = fr;
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
165 fr->fd = fd;
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
166 fr->cpu = spe_cpu;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
167 fr->task_blocks = 16;
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
168 fr->filesize = sb->st_size;
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
169 fr->left_size = fr->filesize;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
170 fr->division_size = DIVISION_SIZE;
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
171 fr->task_num = fr->filesize / DIVISION_SIZE;
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
172 fr->task_num += ((fr->filesize % DIVISION_SIZE) != 0);
1802
e08f6133f5d7 change iterator to spawn in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1740
diff changeset
173
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
174 printf("filesize : %ld\n",fr->filesize);
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
175 printf("one_task_size: %ld\n",fr->division_size);
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
176 printf("task_num : %ld\n",fr->task_num);
1740
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1722
diff changeset
177
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
178 HTaskPtr run = NULL;
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
179 HTaskPtr t_print = manager->create_task(Print_task, (memaddr)&fr->self, sizeof(memaddr),0,0);
1867
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
180 fr->t_print = t_print;
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
181
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
182 if (divide_read_flag != 0) {
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
183 char *read_text = (char*)manager->allocate(fr->filesize);
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
184 run = manager->create_task(RUN_BLOCKS, (memaddr)&fr->self, sizeof(memaddr),read_text,fr->filesize);
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
185 fr->read_text = read_text;
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
186 }else {
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
187 //my_mmap(filename, fd, fr);
1866
7b3aa1a31c3a fix ( cannot wait for run16 )
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1865
diff changeset
188 run = manager->create_task(MMAP , (memaddr)&fr->self, sizeof(memaddr),0,0);
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
189 }
1867
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
190
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
191 t_print->wait_for(run);
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
192 run->spawn();
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
193
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
194 t_print->spawn();
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 int
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 TMmain(TaskManager *manager, int argc, char *argv[])
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 char *filename = 0;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202 filename = init(argc,argv);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 if (filename < 0) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 return -1;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 task_init();
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
209 st_time = getTime();
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 run_start(manager, filename);
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
211 manager->set_TMend(TMend);
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 return 0;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 }