summaryrefslogtreecommitdiff
path: root/web/yacco2/diagrams/threading_defs.mp
blob: 6fef81e9fa710150f23f5a9dd08eed2eb18197e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
% file: threading_defs.mp
input boxes
pair sw,se,ne,nw;
pair zx,zy;
beginfig(1);
u=1cc;
% stbl
sw:=(1u,0);
se:=(2u,0);
ne:=(2u,4u);
nw:=(1u,4u);
draw sw--se--ne--nw--cycle;
%outline the tab;e 
for i=1 upto 3:
  zx:=(1u,i*u);
  zy:=(2u,i*u);
  if i = 3:
    draw zx{dir 45} .. .5[zx,zy] {dir -45} .. zy;
  else:
    draw zx--zy;
  fi
endfor

% label subscripts
defaultscale:=.6;
for i=0 upto 3:
  zy:=(2u,i*u);
  string a;
  if i=3:
    a := "no threads ids-1";
    label.rt(a,zy);
  else:
    a:=decimal(i);
    label.rt(a,zy);
  fi
endfor
defaultscale:=1;
label.bot(btex $Parallel\_thread\_table[thd $\#$].thread\_list$ etex,(1u,0u));


%outline table_entry 
label.rt(btex $thread\_list:$ etex,(5u,6u));
	label.rt(btex $\bullet\ $list$<$worker$\_$thread$\_$blk$\uparrow >$ etex,(6u,5u));
	label.rt(btex $\bullet\ $parser\ $\uparrow$ --- grammar containing worker$\_$thread$\_$blk etex,(8u,4u));
	label.rt(btex $\bullet\ $status\ --- idle, working, or exiting etex,(8u,3u));
	label.rt(btex $\bullet\ $run cnt\ --- stats on how many times thread executed etex,(8u,2u));
	label.rt(btex $\bullet\ $thd id\ --- thread id number etex,(8u,1u));
endfig;
end;