home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!ccut!news.u-tokyo.ac.jp!komaba!graco!nitta
- From: nitta@c.u-tokyo.ac.jp (Yoshihisa Nitta)
- Newsgroups: fj.comp.parallel
- Subject: Re: why does transputer(c)'s i/o function busywaiting?
- Message-ID: <NITTA.93Jan25233312@ns.c.u-tokyo.ac.jp>
- Date: 25 Jan 93 14:33:12 GMT
- References: <TAKE.93Jan25210050@tomo.wadalab.t.u-tokyo.ac.jp>
- Sender: news@graco.c.u-tokyo.ac.jp
- Distribution: fj
- Organization: Coll. Arts & Sci., University of Tokyo, Japan.
- Lines: 94
- In-reply-to: take@wadalab.t.u-tokyo.ac.jp's message of 25 Jan 93 12:00:50 GMT
-
- $B?7ED(B@$BElBg$G$9!#(B
-
- In article <TAKE.93Jan25210050@tomo.wadalab.t.u-tokyo.ac.jp>
- take@wadalab.t.u-tokyo.ac.jp (Mikio Takeuchi) writes:
- > $B3+H/4D6-$K$O(B INMOS $B<R$N(B ANSI C $B%D!<%k%;%C%H$rMQ$$$F$$$^$9!#(B
- > $B<ALd$O(B ANSI C $B$NI8=`F~=PNO%i%$%V%i%j$K$D$$$F$G$9!#(B
- $B;d$b@N!"$3$N(BANSI C tool set (IMS D4214)$B$r;H$C$F$$$?$3$H$,$"$j$^$9!#(B
- $B$=$N8e3+H/4D6-$H$7$F(B transputer $B$O(B$B8+<N$F$F!"(BAP1000$B$K0\$C$F(B
- $B$7$^$C$?$N$G:G6a$O;H$C$F$$$J$$$N$G$9$,!#(B
-
- > transputer $B$G$O%A%c%M%k$rMQ$$(B$B$?F~=PNO$K$h$j%W%m%;%9$,%V%m%C%/$9$k:]$K$O!"(B
- > $B%3%s%F%/%9%H%9%$%C%A$,5/$3$j!"L5BL$J(B CPU $B;~4V$r>CHq(B$B$7$J$$$h$&@_7W$5$l(B
- > $B$F$$$^$9!#$7$+$7$J$,$i!"%[%9%H$H$NF~=PNO$r9T$J$&%i%$%V%i%j$O%S%8!<%&%'(B
- > $B%$(B$B%H$7$F$7$^$&$h$&$J$N$G$9!#(B
- $B$3$l$K4X$7$F;d$O0J2<$NJ}K!$r<h$j$^$7$?!#(B
- host$BMQ$N(BLibrary$B$K(B pollkey() $B$H$$$&(B$B4X?t$,$"$j$^$9$N$G(B
- $B$3$l$r?t2sD4$Y$FF~NO$,$J$1$l$P(Btimeup$B$5$;$F;C$/(Bsleep$B$5$;$^$9!#(B
- $B@N$N(B code $B$+$i$=$N$^(B$B$^H4$$$?ItJ,$r2<$KIU$1$F$*$-$^$9!#(B
-
- $B5-;vCf$GNc$H$7$F<($5$l$?%W%m%0%i%`$G(B
- > gets(buf);
- $B$NBe$o$j$K(B$B0J2<$N(B fgets_poll(buf, sizeof(buf), stdin) $B$r;H$($P(B
- ($B>/$J$/$H$b4JC1$JJQ99$G(B)$B0U?^$NDL$j$KF0$/$N$G$O$J$$(B$B$G$7$g$&$+!#(B
- # $B$`$m$sB>$N<BAu!?<B8=J}K!$b$"$k$+$b$7$l$^$;$s$,!#(B
-
- $B$=$&$=$&!"0x$_$K(B
- : if (c == '\n' || c == 0xd) { /* RETURN on volvox is 0xd */
- $B$NItJ,$O!"(B"RETURN" key$B2!2<$G%7%e%_%l!<%?$H<B5!(B(iserver)$B$G(B$BJV$C(B
- $B$F$/$kCM$,0[$J$C$F$$$?$O$:$G$9!#>l9g$K1~$8$FJQ99$7$F$/$@$5$$!#(B
- ($BO7GL?4$J$,$i!#(B)
-
- $B;29M$K$J$l$P9,$$(B$B$G$9!#(B
-
- $B$=$l$G$O!#(B
-
- #include <iocntrl.h>
- #define KEY_IDLE 10
- char *fgets_poll(char *buf, int len, FILE *fp)
- {
- int c;
- int n, i;
- int timeup = 0;
-
- fp=fp;
- n = 0;
- for (;;) {
- RETRY:
- c = pollkey();
- if (c == -1) {
- ++timeup;
- if (timeup > KEY_IDLE) ProcWait(2000);
- goto RETRY;
- }
- timeup = 0;
- if (c == '\n' || c == 0xd) { /* RETURN on volvox is 0xd */
- buf[n++] = '\n';
- putchar('\n');
- fflush(stdout);
- goto END;
- } else if (c == '\b') {
- if (n > 0) {
- n--;
- putchar('\b');
- putchar(' ');
- putchar('\b');
- fflush(stdout);
- }
- } else if (c == 24) { /* Ctl-x */
- if (n > 0) {
- /* putchar('\r'); */
- for (i=0; i<n; ++i) putchar('\b');
- for (i=0; i<n; ++i) putchar(' ');
- /* putchar('\r'); */
- for (i=0; i<n; ++i) putchar('\b');
- fflush(stdout);
- n = 0;
- }
- } else if (c == 0x4) { /* Ctl-d */
- if (n == 0) goto END;
- else buf[n++]=c;
- } else {
- buf[n++] = c;
- putchar(c);
- fflush(stdout);
- }
- if (n == len-2) goto END;
- }
- END:
- buf[n] = '\0';
- if (n==0) return((char *)NULL);
- return(buf);
- }
- --
- $B?7(B$BEDA15W(B@$B65M\3XIt(B.$BEl5~Bg3X(B
-