annotate example/fileread/main.cc @ 2048:6796d85f3d6b draft

remove error
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Thu, 28 Jan 2016 00:05:49 +0900
parents d703157bb280
children
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;
1876
5e17ab506299 change CPU_TYPE SPE_ANY to IO/0 ( cannot running )
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1871
diff changeset
18 static CPU_TYPE spe_cpu = IO_0;
1984
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
19 static int READ_TYPE = MY_MMAP;
1962
fdffcf8feeab fix CudaScheduler
kkb
parents: 1909
diff changeset
20 static int DIVISION_SIZE = 1024*256*256;
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
1909
c228dbede5df rename Task name in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1876
diff changeset
32 SchedDefineTask1(RUN_READ_BLOCKS,read_run);
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
33
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
34 static int
1909
c228dbede5df rename Task name in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1876
diff changeset
35 read_run(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の番号の受け渡し
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
55
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
56 read->set_outData(0,read_text + fr->task_number*fr->division_size, fr->division_size);
1867
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
57
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
58 fr->t_print->wait_for(read);
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
59 read->spawn();
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
60
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
61 fr->left_size -= fr->division_size;
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
62 fr->task_number++;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
63 }
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
64
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
65 if (fr->left_size > 0) {
1871
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1869
diff changeset
66
1909
c228dbede5df rename Task name in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1876
diff changeset
67 HTaskPtr next = manager->create_task(RUN_READ_BLOCKS, (memaddr)&fr->self, sizeof(memaddr),read_text,fr->filesize);
1871
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1869
diff changeset
68
1867
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
69 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
70 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
71 next->spawn();
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
72 }
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
73 return 0;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
74 }
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
75
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
76 static double
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
77 getTime(){
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
78 struct timeval tv;
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
79 gettimeofday(&tv,NULL);
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
80 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
81 }
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
82
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
83 void
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
84 TMend(TaskManager *manager)
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
85 {
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
86 ed_time = getTime();
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
87 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
88 }
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
89
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 static char*
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 init(int argc, char **argv)
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 char *filename = 0;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 for (int i = 1; argv[i]; ++i) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 if (strcmp(argv[i], "-cpu") == 0) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 spe_num = atoi(argv[i+1]);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 } else if (strcmp(argv[i], "-file") == 0) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 filename = argv[i+1];
1984
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
102 } else if (strcmp(argv[i], "-br") == 0) {
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
103 READ_TYPE = BLOCKED_READ;
1985
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
104 } else if (strcmp(argv[i], "-r") == 0) {
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
105 READ_TYPE = MY_READ;
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
106 } else if (strcmp(argv[i], "-m") == 0) {
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
107 READ_TYPE = MY_MMAP;
1740
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1722
diff changeset
108 }
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 }
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 if (filename==0){
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 puts(usr_help_str);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 exit(1);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 }
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 return filename;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
119
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
120 SchedDefineTask1(MMAP,my_mmap);
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
121
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
122 static int
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
123 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
124 {
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
125
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
126 FileReadPtr fr = (FileReadPtr)in;
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
127 /*マッピングだよ!*/
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 int fd = fr->fd;
1985
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
130 read(fd, fr->read_text, fr->filesize);
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
131 if (fr->read_text == (caddr_t)-1) {
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
132 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
133
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
134 perror(NULL);
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
135 exit(0);
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
136 }
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
137
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
138 return 0;
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
139 }
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
140
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
141
1985
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
142 SchedDefineTask1(READ,my_read);
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
143
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
144 static int
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
145 my_read(SchedTask *s, void *in, void *out)
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
146 {
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
147
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
148 FileReadPtr fr = (FileReadPtr)in;
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
149 /*マッピングだよ!*/
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
150
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
151 int map = MAP_PRIVATE;
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
152
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
153 int fd = fr->fd;
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
154 fr->read_text = (char*)mmap(NULL,fr->filesize,PROT_READ,map,fd,(off_t)0);
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
155 if (fr->read_text == (caddr_t)-1) {
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
156 fprintf(stderr,"Can't mmap file\n");
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
157
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
158 perror(NULL);
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
159 exit(0);
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
160 }
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
161
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
162 return 0;
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
163 }
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
164
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 static void
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 run_start(TaskManager *manager,char *filename)
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 {
1840
0305732326ca change *fd to fd & change set_inData to set_param
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1828
diff changeset
168 long fd = (long)manager->allocate(sizeof(long));
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 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
170
1840
0305732326ca change *fd to fd & change set_inData to set_param
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1828
diff changeset
171 if ((fd=open(filename,O_RDONLY,0666))==0) {
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
172 fprintf(stderr,"can't open %s\n",filename);
1740
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1722
diff changeset
173 }
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
174
1840
0305732326ca change *fd to fd & change set_inData to set_param
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1828
diff changeset
175 if (fstat(fd,sb)) {
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 fprintf(stderr,"can't fstat %s\n",filename);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
179 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
180
1861
9e96c8c52574 some fix in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1840
diff changeset
181 fr->self = fr;
1827
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
182 fr->fd = fd;
d1212026e2a0 some fix
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1825
diff changeset
183 fr->cpu = spe_cpu;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
184 fr->task_blocks = 16;
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
185 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
186 fr->left_size = fr->filesize;
1824
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
187 fr->division_size = DIVISION_SIZE;
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
188 fr->task_num = fr->filesize / DIVISION_SIZE;
016746241fc7 fix fileread
masakoha
parents: 1820
diff changeset
189 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
190
1825
82c2b9eec625 remove error and warning fileread(but cannot running)
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1824
diff changeset
191 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
192 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
193 printf("task_num : %ld\n",fr->task_num);
1740
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1722
diff changeset
194
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
195 HTaskPtr run = NULL;
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
196 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
197 fr->t_print = t_print;
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
198
1984
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
199 if (READ_TYPE == MY_MMAP) {
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
200 run = manager->create_task(MMAP , (memaddr)&fr->self, sizeof(memaddr),0,0);
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
201 printf("+ in mmap mode +\n");
1985
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
202 }else if (READ_TYPE == MY_READ) {
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
203 run = manager->create_task(READ , (memaddr)&fr->self, sizeof(memaddr),0,0);
d703157bb280 add Read mode in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1984
diff changeset
204 printf("+ in Read mode +\n");
1984
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
205 }else {
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
206 //my_mmap(filename, fd, fr);
7bea670cdba0 divide read flag change enum type
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1962
diff changeset
207 printf("+ in Blocked Read mode +\n");
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
208 char *read_text = (char*)manager->allocate(fr->filesize);
1909
c228dbede5df rename Task name in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1876
diff changeset
209 run = manager->create_task(RUN_READ_BLOCKS, (memaddr)&fr->self, sizeof(memaddr),read_text,fr->filesize);
1868
14225fec047c implements mmap read & divide read(pread) in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
210 fr->read_text = read_text;
1864
7211816380bd implement my_mmap in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1861
diff changeset
211 }
1867
7706faa6b0c9 resolve waitfor in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1866
diff changeset
212
1865
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
213 t_print->wait_for(run);
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
214 run->spawn();
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
215
a009522ed6c6 add FileRead.h
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1864
diff changeset
216 t_print->spawn();
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 int
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 TMmain(TaskManager *manager, int argc, char *argv[])
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 char *filename = 0;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 filename = init(argc,argv);
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 if (filename < 0) {
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 return -1;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 }
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 task_init();
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
231 st_time = getTime();
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232 run_start(manager, filename);
1722
264a36d30f7f add time measurement function in fileread
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents: 1721
diff changeset
233 manager->set_TMend(TMend);
1721
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 return 0;
797e3ec1ca74 add fileread only example
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 }