annotate regexParser/cerium/ppe/Exec.cc @ 278:99d635926ef3

ceriumCreateAnyState implemented
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sat, 30 Jan 2016 21:19:05 +0900
parents 8879eb8c64a8
children 6cc1d9779f45
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
1 #include <stdio.h>
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
2 #include <string.h>
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
3 #include "Exec.h"
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
4 #include "Func.h"
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
5 #include "regexParser.h"
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
6 #include "threadedSearch.h"
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
7 #include "FileMapReduce.h"
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
8
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
9 /* これは必須 */
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
10 SchedDefineTask1(Exec,blockedGrep);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
11
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
12 TSValue blockSearch(TransitionGeneratorPtr tg,Buffer buff) {
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
13 TSValue tsv;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
14 tsv.buff = buff;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
15 tsv.tg = tg;
278
99d635926ef3 ceriumCreateAnyState implemented
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 275
diff changeset
16 tsv.current = tg->anyState->tState;
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
17 tsv.result = NULL;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
18 tsv.resultEnd = &tsv.result;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
19 unsigned char *end = buff.buffend;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
20 buff.buffend = buff.buff+1;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
21 tSearch(tsv);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
22 tsv.blockBegin = tsv.current;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
23 buff.buffend = end;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
24 tSearch(tsv);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
25 tsv.blockEnd = tsv.current;
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
26 if (tsv.blockEnd->state->bitState.bitContainer != 1) {
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
27 ResultPtr r = NEW(Result);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
28 r->begin = tsv.buff.matchBegin;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
29 r->end = NULL;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
30 *tsv.resultEnd = r;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
31 r->next = NULL;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
32 tsv.resultEnd = &r->next;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
33 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
34 return tsv;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
35 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
36
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
37 static int
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
38 blockedGrep(SchedTask *s, void *rbuf, void *wbuf)
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
39 {
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
40 long task_spwaned = (long)s->get_param(0);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
41 long division_size = (long)s->get_param(1);
275
8879eb8c64a8 remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
42 long length = (long)s->get_param(2);
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
43 long out_size = (long)s->get_param(3);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
44 MapReduce *w = (MapReduce*)s->get_param(4);
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
45 long allocation = task_spwaned + (long)s->x;
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
46 unsigned char* i_data;
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
47 unsigned long * o_data;
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
48 if (division_size) {
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
49 i_data = (unsigned char*)s->get_input(rbuf,0) + allocation*division_size;
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
50 o_data = (unsigned long *)s->get_output(wbuf,1) + allocation*out_size;
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
51 } else {
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
52 i_data = (unsigned char*)s->get_input(0);
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
53 o_data = (unsigned long *)s->get_output(0);
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
54 }
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
55 TransitionGeneratorPtr tg = (TransitionGeneratorPtr)w->global;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
56 Buffer buff;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
57 buff.buff = buff.buffptr = buff.matchBegin = i_data;
275
8879eb8c64a8 remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
58 buff.buffend = buff.buff + length;
272
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
59 TSValue tsv = blockSearch(tg,buff);
5aa9d01926f1 Cerium version no compile errors
kono
parents: 271
diff changeset
60 o_data[0] = (unsigned long)tsv.result;
275
8879eb8c64a8 remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
61 o_data[1] = (unsigned long)tsv.blockBegin->state;
8879eb8c64a8 remove segmentation fault
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 272
diff changeset
62 o_data[2] = (unsigned long)tsv.blockEnd->state;
266
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
63 return 0;
e51cac73e42a CeriumGrep start
masa
parents:
diff changeset
64 }