Mercurial > hg > Gears > GearsTools
annotate generate_context.pl @ 1:9a4279c88aa7 default tip
copy from xv6 repository
author | anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 06 Mar 2020 14:59:59 +0900 |
parents | |
children |
rev | line source |
---|---|
1
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 use Getopt::Std; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 use strict; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 # generrate Gears OS context heaader and initializer from CbC sources |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 # CodeGear |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 # get stub information from # *.c |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 # __code taskManager_stub(struct Context* cbc_context) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 # generate CodeGear indexn in context.h |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 # C_taskManager, |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 # generate CodeGear stub reference in context.h |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 # extern __code taskManager_stub(struct Context*); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 # generate CodeGear stub reference in $name-context.h for each module |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 # cbc_context->code[C_taskManager] = taskManager_stub; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 # DataGear |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 # get DataGear information from context.h |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 # struct Worker { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 # int id; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 # struct Context* contexts; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 # enum Code execute; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 # enum Code taskSend; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 # enum Code taskRecive; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 # enum Code shutdown; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 # struct Queue* tasks; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 # } Worker; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 # generate typedefs and DataGear index in context.h |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 # typedef struct Worker Worker; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 # D_Worker, |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 # generate DataGear allocator in context.h |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 # ALLOC_DATA(context, Worker); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 # |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 my $ddir = "c"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 our($opt_o,$opt_d,$opt_h,$opt_w); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 getopts('o:d:hw'); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 my $name = $opt_o?$opt_o:"gears"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 if ($opt_d) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 $ddir = $opt_d; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 if ( ! -d $ddir) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 mkdir $ddir; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
59 if ($opt_h) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
60 print "$0 [-d distdir] [-h]\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
61 exit; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
62 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
63 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
64 my %codeGear; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
65 my %dataGear; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
66 my %constructor; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
67 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
68 { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
69 use FindBin; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
70 use lib "$FindBin::Bin/lib"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
71 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
72 use File::Spec; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
73 use Cwd 'getcwd'; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
74 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
75 use Gears::Context; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
76 use Getopt::Std; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
77 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
78 my $output = $opt_w ? "context.h" : "stdout"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
79 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
80 use Data::Dumper; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
81 my @cbc_files; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
82 map { push(@cbc_files,File::Spec->rel2abs($_)); } @ARGV; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
83 my $gears = Gears::Context->new(compile_sources => \@cbc_files, find_root => "$FindBin::Bin/../", output => $output); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
84 my $data_gears = $gears->extraction_dg_compile_sources($gears->{compile_sources}); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
85 my $g = $gears->set_data_gear_header_path(keys %{$data_gears->{impl}},keys %{$data_gears->{interfaces}}); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
86 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
87 my $dg2path = $gears->update_dg_each_header_path($data_gears,$g); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
88 my $tree = $gears->createImplTree_from_header($dg2path); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
89 $gears->tree2create_context_h($tree); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
90 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
91 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
92 # gather module Information for code table initialization |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
93 for (@ARGV) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
94 next if (/context.c/); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
95 &getStubInfo($_); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
96 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
97 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
98 my (%mCodeGear) = (%codeGear); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
99 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
100 # anyway we gather all Gears Information |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
101 while (<*.c test/*.c>) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
102 next if (/context.c/); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
103 &getStubInfo($_); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
104 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
105 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
106 &generateContext(); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
107 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
108 sub getStubInfo { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
109 my ($filename) = @_; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
110 open my $fd,"<",$filename or die("can't open $filename $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
111 while (<$fd>) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
112 if (/^__code (\w+)_stub\(struct *Context *\* *cbc_context\)/) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
113 $codeGear{$1} = $filename; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
114 } elsif (/^(\w+)(\*)+ *create(\w+)\(([^]]*)\)/) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
115 my $interface = $1; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
116 my $implementation = $3; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
117 my $constructorArgs = $4; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
118 $constructor{$implementation} = [$interface, $constructorArgs]; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
119 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
120 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
121 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
122 open my $cx,"<","context.h" or die("can't open context.h $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
123 my $inUnionData = 0; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
124 while (<$cx>) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
125 if (! $inUnionData) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
126 if ( /^union Data/) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
127 $inUnionData = 1; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
128 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
129 next; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
130 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
131 last if (/union Data end/); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
132 if (/struct (\w+) \{/) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
133 $dataGear{$1} = 'struct'; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
134 } elsif (/^\s{4}(\w+) (\w+);/) { # primitive type |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
135 my $vtype = $1; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
136 my $vname = $2; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
137 if (exists $dataGear{$vname}) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
138 next; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
139 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
140 $dataGear{$vtype} = 'primitive'; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
141 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
142 $dataGear{"Context"} = "struct"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
143 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
144 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
145 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
146 sub generateContext { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
147 $codeGear{"start_code"} = "$ddir/$name-context.c"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
148 $codeGear{"exit_code"} = "$ddir/$name-context.c"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
149 $mCodeGear{"start_code"} = "$ddir/$name-context.c"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
150 $mCodeGear{"exit_code"} = "$ddir/$name-context.c"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
151 open my $fd,">","$ddir/extern.h" or die("can't open $ddir/extern.h $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
152 for my $code ( sort keys %codeGear ) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
153 print $fd "extern __code ${code}_stub(struct Context*);\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
154 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
155 for my $impl ( sort keys %constructor ) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
156 my ($interface, $constructorArgs) = @{$constructor{$impl}}; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
157 print $fd "extern ${interface}* create${impl}($constructorArgs);\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
158 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
159 print $fd "\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
160 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
161 open my $fd,">","$ddir/enumCode.h" or die("can't open $ddir/enumCode.h $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
162 print $fd "enum Code {\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
163 for my $code ( sort keys %codeGear ) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
164 print $fd " C_${code},\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
165 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
166 print $fd "};\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
167 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
168 my $code_init = ''; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
169 for my $code ( sort keys %mCodeGear ) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
170 $code_init .= " cbc_context->code[C_${code}] = ${code}_stub;\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
171 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
172 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
173 my $data_num = keys(%dataGear); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
174 $data_num++; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
175 my $context_c = << "EOFEOF"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
176 #ifndef CBCXV6 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
177 #include <stdlib.h> |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
178 #endif |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
179 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
180 #include "../context.h" |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
181 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
182 void initContext(struct Context* cbc_context) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
183 cbc_context->heapLimit = sizeof(union Data)*ALLOCATE_SIZE; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
184 cbc_context->code = (__code(**) (struct Context*)) NEWN(ALLOCATE_SIZE, void*); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
185 cbc_context->data = NEWN(ALLOCATE_SIZE, union Data*); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
186 cbc_context->heapStart = NEWN(cbc_context->heapLimit, char); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
187 cbc_context->heap = cbc_context->heapStart; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
188 // cbc_context->codeNum = Exit; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
189 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
190 $code_init |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
191 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
192 #include "dataGearInit.c" |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
193 cbc_context->dataNum = $data_num; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
194 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
195 EOFEOF |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
196 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
197 open my $fd,">","$ddir/$name-context.c" or die("can't open $ddir/$name-context.c $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
198 print $fd $context_c; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
199 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
200 my $meta_call = <<"EOFEOF"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
201 __code meta(struct Context* cbc_context, enum Code next) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
202 // printf("meta %d\\n",next); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
203 goto (cbc_context->code[next])(cbc_context); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
204 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
205 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
206 __code parGotoMeta(struct Context* cbc_context, enum Code next) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
207 cbc_context->task = NULL; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
208 cbc_context->taskList = NULL; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
209 goto (cbc_context->code[Gearef(cbc_context, TaskManager)->taskManager->TaskManager.spawnTasks])(cbc_context); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
210 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
211 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
212 __code start_code(struct Context* cbc_context) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
213 goto meta(cbc_context, cbc_context->next); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
214 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
215 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
216 __code start_code_stub(struct Context* cbc_context) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
217 goto start_code(cbc_context); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
218 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
219 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
220 __code exit_code(struct Context* cbc_context) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
221 // free(cbc_context->code); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
222 // free(cbc_context->data); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
223 // free(cbc_context->heapStart); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
224 goto exit_code(cbc_context); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
225 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
226 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
227 __code exit_code_stub(struct Context* cbc_context) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
228 goto exit_code(cbc_context); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
229 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
230 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
231 // end context_c |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
232 EOFEOF |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
233 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
234 print $fd $meta_call; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
235 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
236 open my $fd,">","$ddir/enumData.h" or die("can't open $ddir/enumData.h $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
237 print $fd "enum DataType {\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
238 print $fd " D_Code,\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
239 for my $data ( sort keys %dataGear ) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
240 print $fd " D_${data},\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
241 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
242 print $fd "};\n\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
243 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
244 open my $fd,">","$ddir/typedefData.h" or die("can't open $ddir/typedefData.h $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
245 for my $data ( sort keys %dataGear ) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
246 if ($dataGear{$data} eq 'struct') { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
247 print $fd "typedef struct ${data} ${data};\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
248 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
249 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
250 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
251 open my $fd,">","$ddir/dataGearInit.c" or die("can't open $ddir/dataGearInit.c $!"); |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
252 for my $data ( sort keys %dataGear ) { |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
253 print $fd " ALLOC_DATA(cbc_context, ${data});\n"; |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
254 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
255 } |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
256 |
9a4279c88aa7
copy from xv6 repository
anatofuz <anatofuz@cr.ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
257 # end |