Path: news.funet.fi!fuug!mcsun!hp4nl!hgatenl!tedux!wiesje!baron
From: baron@wiesje.hobby.nl (Wim `Blue Baron' van Dorst)
Newsgroups: comp.os.minix
Subject: [source] Re: (kernel/tty.c) O_NONBLOCK - patch
Message-ID: <911027502@wiesje.hobby.nl>
Date: 27 Oct 91 21:18:59 GMT
References: <2219@tuegate.tue.nl>
Organization: Minix Hobbynet Host
Lines: 125

Hello *,

In a previous article on this I wrote:
> Perhaps someone (Kai-Uwe, Christian, I, ...) can make a new and complete
> patch, comprising the original Kai-Uwe patch, Christian's (cbreak and
> casting) and mine (posix requirement), and post it again. I will if nothing
> is done in some weeks.

Find below the combined implementation of Kai-Uwe, Christian (or Thomas?),
and myself, to get a Posix compliant implementation of non-blocking reads
on terminal devices. The provided patches are twofold:
  1. against official PH 1.5.10 PC Minix tty.c
  2. against _the_ Virtual Console package tty.c

NOTE:
The here provided patch has only a limited scope. From the interest shown
to me I gathered that it was suggested that it was more than it really is.

The patch gives you:
Posix compliant non-blocking mode for read()s on terminal devices in either 
canonical mode (Raw, Cbreak or Cooked). See IEEE 1003.1 Posix, pages
111-113 for more details.

The patch gives you *NOT*:
non-blocking write()s, nor open()s on terminals (Posix suggestion).
  The 1.5.10 open() accepts the O_NONBLOCK flag, but, as far as I see 
  it, it just gets ignored. The fcntl() should be used to get non-blocking
non-blocking read()s, write()s, nor open()s on other devices.
  The main reason that this is not implemented yet is that changes
  should be made to the src/fs/* too, which is more complicated.
  Also the not implemented things are less direly needed (who needs a
  non-blocked write on a disk?)

For people interested in interactive games (such as the ones I am
about to post) a Posix compliant non-blocking read is imperative. As far
as I understood there is such available in 1.6.16, but that I am not
sure of (I haven't got 1.6.16. yet). I will presently be trying to
implement more of the non-blocking stuff.

Met vriendelijke groeten, Wim `Blue Baron' van Dorst.
---------------------------------------------------------------------
Blue Baron = Wim van Dorst, Voice (+31) 074-443937, (+31) 02152-42319
(-:       baron@wiesje.hobby.nl           tgcpwd@urc.tue.nl       :-)
---------------------------------------------------------------------

table
 !"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
begin 644 diffs.shar.Z
M'YV-(T* >"$FC9L7<] H& &"#IHT<T! !!$&1,(R;-A0E#/FH9TR+$"T*1/&z
MC<$S.A:"B.$"A)0R;=Y\!%'FHYP\#D]2%".S3$,T/@,.+'@P(0@V!LNHE-%Ry
M2IB9#GW**3.G#ALZ.NF4P4-'HAN*(,RD85/&A<H9+8O@*3.FCM:?/L62!7$Gx
MC<.A!A&B:?@&Q)BI8=Y&#3N6:LH1"<BD,6/&18P:018F7MS8SAB55!Y&#,/1w
MH\^_)+62T0%B2ATW(67< /%D3-<8.7+$ "$CA@X:,W3,L &B21$J(,3D"<[Yv
MC9N%R+?">2.G*Y0@5)#L /$\>@^"!G60J(X$N8+%#:EV;6$&A&+&CB$KB'J<u
M+9J^"3F3KIL1A)LW77O*:7%'CEV?6T&$E1MG$#;7>8T]%AE&<RCE'GQHR$<3t
M5W*$X9I.)R"87A GA 3"AS+,@(,,'W;$F85:R3&' @V2 <()<[S@!18OO' "s
M"#Z81]F&(/# PPE3(!&$%%\4\801)RB A0I,-D1''BZ,42)'/<!&PPTD@C!#r
M#3,\EH!I7[76E6JTP:!##+G5P!MLLBG9PILKN5"#"T&\0,>344XY1I4Y7 G#q
MAUOF8 ,,7Y[&FFNTK2:#F3'8<!L-*\46@Y),5FKII2I0VB0--K!0PVR6N@DGp
MIYZ2^.:;2GXX@D%CL%$'&3Z)L$89<KB!D0MHB) J"*NZT>JK/O$PQQEW0HF&o
M#[OV^BNL/<Z1QAENA,$&KLABL0*OK+K*+ ]FC.$&'=,>FVRVP/;8AD%IX/'"n
M&-*RX88<U([KJ[;!GFN2NF.\T4:\6*A*+K,B%(NKKDMB:G"F!:L  @TPX, "m
M#8N"$&J_'ZJ0P,6)O?$%8&1@?/&'(",<<@\DEVSRR2BGK/+*++>\L@HO[ J%l
M%$E8 5T1(-CQ1AHNDJ$QQRC0 4=(;7P!!QURI*"D0%.=(2"M%B%=!Z+%?C&'k
MU(BJ(/0.NXXTQQQAG.&3"D4?+<<.&+^@\'(&I<B72%2!+;9%97S[]F!TA#''j
M&A+'3/$>NZH-0A @P"''&V/$35=)=$1$1U\<AW5X&V"E:*^T+<&\- B;?PA>i
MT'"TX$/5!I%E1E<YPI ""'LD(#AX<^A;AG$ LM&@1!%%2.!)(3D]4QUP]+UYh
M E5/!0<;>:! 11!3+/&%%$5 P4061!N-M.A%QUX'1R")9/U^/LS\Q!!?."%%g
M2$4D\40*7%.<P%1T;.]&^R"#T,>NHK:P, PY/"R#J:?:E<0\YK.-D:1C'JN?f
MQ 2H I<Y\($0C.#)-$>QF=7L9CG;6<]^=D#05<]L2L,"T\K@M*M![6IRF%I7e
MJH9"%4IL:ZY;V\Z^!;7'.6DX+<R:WS[D-;F-K6Q(0]O%!,<V&LKA;3T,FT\:d
M9#<;XDUO?*/@AP!',<$1SG"(4]P=&.<XR!U0<OJJ'*TN-RWAB1!D;0L.3JC"c
ML?8)I',2*0_H1$<Z-Y@.=2!0'>MB&$>+R(YV-+&=3R:B.Z<1J'=I^%WP*"@0b
MXCW)@,=+WO*:][SH3>^#U_-!]MZPO<1A$GSB(Y_YT*>^D," ":9D OMV];XRa
MQ*]6] /9_2BFJ8-=JI8+DT$-'M8EB55*@ T)W>@>6;HRG X$/?">V40WA"=4z
MP0E4B"4P!4>%F[Q-;%TQD8I: H+,3(1=]2F#78!R1&Q&I&Z</ ,:0L(<$)C3y
M/OAY"($RYS>!?*AX98BD\ICG/.A)CWK*S.0F.]D]%+1M=4*C(S'=@,4QA$0.x
M9/B"-N< NA2LDF*S_!#^L'"J7-[@85<"P:E: ,R$#C,/7RCF,9,)1/ U\YG1w
MW&C]J&E-&V+3+Q':YH>\&1%P:D2<42FG*\]YGSJHDYU";1P\<S)/,]I3C5J9v
M0^22"5&)YI2B0KOH&\_X(<$EH3SW<8,8V("X->@D)LR:2(/H$!*?0FTB*K@/u
M'12V1;OHQ SMC,E4<'HBU]!J15RM&#SO$)*:U*V/=AFL._%S%,4YI"0@F$H<t
MZB">,I"!FU_]R43,P(:PX6ZID:6**UD 1XG!Q3Y;R6:[H/;.P:3O"5XY+>SRs
MII61V$TL*NJ*030;$3.<YD+&,4M@G8I&.0HGJE--YA2J, 4H%,$)1 !!VA16r
MU8FB8'5F"$-A7,1(!7[(!"8 @4&_M;J6BHX*5,C"%XS A" <80H@".\3RO<$q
M)PB!">-;@G0%YP3CM&"L9;6L2-[ K.YZ%[S!5"A*T>J3\*) "D&X @CX ((Ap
M" %Z05B"1?<H."F$X0X@:.<0Q  8OC&8N,039AWOB,P\HDUP30C#K&XHN3+$o
MI9V#L157_++:(W8W <=EXQ>3603W!B$)3G"C+#<'1\$9#WFAK<I5WN96']<3n
M9/C4YR3[:4F FE>35N,D]T(R7CH@5,4+;6A(@BS5 U[T0QGE'"V#-*0B'4D!m
M9'%##\!P!RFU0$H\T!%Z% 2&[Y0GJETA09Y!$()D@BQ$(_K0=-BC@ ?11 Z'l
MDP-I-*2@Q45$T8=E\U&,<X:0)(23;'!1A&8B!AM_Y=$B(I$"Q#+K-/"*)FYPk
MT1O*HY_^V)5 .&7+&A1@Z/!<3:3ET9!EU@.4]G0$0A*BCT;D&F*;\,<_;PG0j
MU>Y:&$%7YC(,<M"S+9)3TJ2V0A<"=H9V9)D.U0_2D.(KNE.THA:]*$8SJM&-i
M<J1L0/^(SD0R$I)P*; QN, R>N*3#4($J!S<H 8W*%28$$6FVN@F!SI@.)LFh
MQ5$X%=P%#@FC7ZCT&!K@H 8?8IAJ9"#Q0XU)48S*#9HBU::$V?*7"0.!#1QVg
M@QGXDDGYTSG/(352>2TK5K.JU:UR971Z-8M8>!(7Q93E=&$]*UKAJM:UJ%XNf
M;GD+7/SRU[RZ;J]TK:M=[PH[ML:^K;+C2U]JYSK !,9TF]\<895:V*<>9@.?e
M3RQD!.1@&!"(,06*K&(23+SB%]\#*5*'9C:C LYTQC/S")X,'@QHTC;7M*<=d
M,8<K?"3H7PB'6"9Q;F3[GA#Y6$2WV?#T2ZS;"OORQ+V9<8J!4]@5#Y>XKRWNc
M6UT,[>#!2+F*6,X@F",N'#]GTA4;$X]Z;-WKRA.[D0 RW)\M)._<F4B?  _%b
M64;>/BGISTMJ'GMA)N@G11?*\IT/!*]]LW3A)[]8PGFC':4!#?K'*0"BBF(#a
MA#$%Q#$>DP"&QT",EX *^#([]'@7)'D95'D#V$%"\TDA-$(EY#:CQT)8TQ5:z
M4WJL-T.N1WM/$C4II$-=$S=*)#$MM7I$)((UU!>P1S=-1'M T1!0='NLDWN#y
M4SB\IT5<]#:18P:3(T9R0$;TM'QVPV9MQ&2!Q7QHAE(J!7VK(WT* SM_9"N!x
M=#N$5!*&5&K<ITC@]TA/)DG\5$G_M'Y@ICUC=G[A(P7CXWZD] 2IE$KRUTJOw
M-#_ %&>U='=XMRD[]S W "E_AV51F%)V]'PM]F4O!4W2!( #H3#5-!PVY4KRv
M-@?<Q%,\%D[CQ%I#A6OIM$XAEE01(5?R= 9)&%CA9X;DUV5J.%!M6&9GIF"(u
MJ&:1%5'6E57RQX>TU''ZPRD?97*K4720V'P+Q6(L]3W,Y$R.*%,@0U.4V!<Wt
M-5&9J!F;^%.=2(J@:%2BV$[O9(HGD8I/Q81#=HM6Q1E8!0=:)6=/Y55@91P s
M-@9F!6PGIE:C=8UO%1%QA1]TI5T#4B!X=41Z]1DYA2)_55H*<Q^$11,?\17@r
MD5@*N5A=01:^]UA?(5F494*7]2&9E1.]U5D%,A'4-A5K15K#I3 YEEKXJ(VNq
MI3ZQ-1BS%1@P(7N$D5LO:8V^Y2M8$5P(>66>8UQKU&;#1S*EP5S.!5W2-434p
MA8M7=5UAH5UDP5T^J4 ()HMNB%[JQ5[N!5_R15_VA5]#H%]\U%]N\%]D)8\"o
M=F(&1I7A98P+1F -)EX0)F$49F$8IF%5R$<>!F(B1F(D86)P"7Z'.(4M!@,On
MIC Q-F/%4F,W=D0IN6-5AF+D.)3P9V1(IF3W=T9-1EWY!&4D:16SMY+$=4]Dm
MV)FLR&5IZ(:PZ$GB=5 )=E*UR'MK%I0<LXO.J   9V=&@&=ULV=])E* YFT'l
M-P:%!AZ(!@*@]A6-]FXB$F^3UFR5-FZTDFF;QFY2LD6?MFBB1E:'1&ZHIFI/k
BX1.M=EBPA@.04FNU=FMUHVN\9A.^]H_!)H^5A@>)!0,* &BBj
 i
end

---------------------------------------------------------------------
Blue Baron = Wim van Dorst, Voice (+31) 074-443937, (+31) 02152-42319
(-:       baron@wiesje.hobby.nl           tgcpwd@urc.tue.nl       :-)
---------------------------------------------------------------------
