tmesg.h - plan9port - [fork] Plan 9 from user space | |
git clone git://src.adamsgaard.dk/plan9port | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
tmesg.h (3774B) | |
--- | |
1 /* VERSION 1 introduces plumbing | |
2 2 increases SNARFSIZE from 4096 to 32000 | |
3 */ | |
4 #define VERSION 2 | |
5 | |
6 #define TBLOCKSIZE 512 /* largest piece of text … | |
7 #define DATASIZE (UTFmax*TBLOCKSIZE+30) /* ... including protoco… | |
8 #define SNARFSIZE 32000 /* maximum length of excha… | |
9 /* | |
10 * Messages originating at the terminal | |
11 */ | |
12 typedef enum Tmesg | |
13 { | |
14 Tversion, /* version */ | |
15 Tstartcmdfile, /* terminal just opened command frame */ | |
16 Tcheck, /* ask host to poke with Hcheck */ | |
17 Trequest, /* request data to fill a hole */ | |
18 Torigin, /* gimme an Horigin near here */ | |
19 Tstartfile, /* terminal just opened a file's frame */ | |
20 Tworkfile, /* set file to which commands apply */ | |
21 Ttype, /* add some characters, but terminal alrea… | |
22 Tcut, | |
23 Tpaste, | |
24 Tsnarf, | |
25 Tstartnewfile, /* terminal just opened a new frame */ | |
26 Twrite, /* write file */ | |
27 Tclose, /* terminal requests file close; check mo… | |
28 Tlook, /* search for literal current text */ | |
29 Tsearch, /* search for last regular expression */ | |
30 Tsend, /* pretend he typed stuff */ | |
31 Tdclick, /* double click */ | |
32 Tstartsnarf, /* initiate snarf buffer exchange */ | |
33 Tsetsnarf, /* remember string in snarf buffer */ | |
34 Tack, /* acknowledge Hack */ | |
35 Texit, /* exit */ | |
36 Tplumb, /* send plumb message */ | |
37 TMAX | |
38 }Tmesg; | |
39 /* | |
40 * Messages originating at the host | |
41 */ | |
42 typedef enum Hmesg | |
43 { | |
44 Hversion, /* version */ | |
45 Hbindname, /* attach name[0] to text in terminal */ | |
46 Hcurrent, /* make named file the typing file */ | |
47 Hnewname, /* create "" name in menu */ | |
48 Hmovname, /* move file name in menu */ | |
49 Hgrow, /* insert space in rasp */ | |
50 Hcheck0, /* see below */ | |
51 Hcheck, /* ask terminal to check whether it needs… | |
52 Hunlock, /* command is finished; user can do things */ | |
53 Hdata, /* store this data in previously allocated… | |
54 Horigin, /* set origin of file/frame in terminal */ | |
55 Hunlockfile, /* unlock file in terminal */ | |
56 Hsetdot, /* set dot in terminal */ | |
57 Hgrowdata, /* Hgrow + Hdata folded together */ | |
58 Hmoveto, /* scrolling, context search, etc. */ | |
59 Hclean, /* named file is now 'clean' */ | |
60 Hdirty, /* named file is now 'dirty' */ | |
61 Hcut, /* remove space from rasp */ | |
62 Hsetpat, /* set remembered regular expression */ | |
63 Hdelname, /* delete file name from menu */ | |
64 Hclose, /* close file and remove from menu */ | |
65 Hsetsnarf, /* remember string in snarf buffer */ | |
66 Hsnarflen, /* report length of implicit snarf */ | |
67 Hack, /* request acknowledgement */ | |
68 Hexit, | |
69 Hplumb, /* return plumb message to terminal - ver… | |
70 HMAX | |
71 }Hmesg; | |
72 typedef struct Header{ | |
73 uchar type; /* one of the above */ | |
74 uchar count0; /* low bits of data size */ | |
75 uchar count1; /* high bits of data size */ | |
76 uchar data[1]; /* variable size */ | |
77 }Header; | |
78 | |
79 /* | |
80 * File transfer protocol schematic, a la Holzmann | |
81 * #define N 6 | |
82 * | |
83 * chan h = [4] of { mtype }; | |
84 * chan t = [4] of { mtype }; | |
85 * | |
86 * mtype = { Hgrow, Hdata, | |
87 * Hcheck, Hcheck0, | |
88 * Trequest, Tcheck, | |
89 * }; | |
90 * | |
91 * active proctype host() | |
92 * { byte n; | |
93 * | |
94 * do | |
95 * :: n < N -> n++; t!Hgrow | |
96 * :: n == N -> n++; t!Hcheck0 | |
97 * | |
98 * :: h?Trequest -> t!Hdata | |
99 * :: h?Tcheck -> t!Hcheck | |
100 * od | |
101 * } | |
102 * | |
103 * active proctype term() | |
104 * { | |
105 * do | |
106 * :: t?Hgrow -> h!Trequest | |
107 * :: t?Hdata -> skip | |
108 * :: t?Hcheck0 -> h!Tcheck | |
109 * :: t?Hcheck -> | |
110 * if | |
111 * :: h!Trequest -> progress: h!Tcheck | |
112 * :: break | |
113 * fi | |
114 * od; | |
115 * printf("term exits\n") | |
116 * } | |
117 * | |
118 * From: [email protected] | |
119 * Date: Tue Jul 17 13:47:23 EDT 2001 | |
120 * To: [email protected] | |
121 * | |
122 * spin -c (or -a) spec | |
123 * pcc -DNP -o pan pan.c | |
124 * pan -l | |
125 * | |
126 * proves that there are no non-progress cycles | |
127 * (infinite executions *not* passing through | |
128 * the statement marked with a label starting | |
129 * with the prefix "progress") | |
130 * | |
131 */ |