📄 tty_io.c
字号:
<a name=L167 href="source/kernel/chr_drv/tty_io.c?v=0.97#L167">167</a> if (c<32) {<a name=L168 href="source/kernel/chr_drv/tty_io.c?v=0.97#L168">168</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L169 href="source/kernel/chr_drv/tty_io.c?v=0.97#L169">169</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(<i>' '</i>,tty->write_q);<a name=L170 href="source/kernel/chr_drv/tty_io.c?v=0.97#L170">170</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L171 href="source/kernel/chr_drv/tty_io.c?v=0.97#L171">171</a> }<a name=L172 href="source/kernel/chr_drv/tty_io.c?v=0.97#L172">172</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L173 href="source/kernel/chr_drv/tty_io.c?v=0.97#L173">173</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(<i>' '</i>,tty->write_q);<a name=L174 href="source/kernel/chr_drv/tty_io.c?v=0.97#L174">174</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L175 href="source/kernel/chr_drv/tty_io.c?v=0.97#L175">175</a> }<a name=L176 href="source/kernel/chr_drv/tty_io.c?v=0.97#L176">176</a> <a href="ident?v=0.97;i=DEC">DEC</a>(tty->secondary-><a href="ident?v=0.97;i=head">head</a>);<a name=L177 href="source/kernel/chr_drv/tty_io.c?v=0.97#L177">177</a> }<a name=L178 href="source/kernel/chr_drv/tty_io.c?v=0.97#L178">178</a> continue;<a name=L179 href="source/kernel/chr_drv/tty_io.c?v=0.97#L179">179</a> }<a name=L180 href="source/kernel/chr_drv/tty_io.c?v=0.97#L180">180</a> if ((<a href="ident?v=0.97;i=ERASE_CHAR">ERASE_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a>) &&<a name=L181 href="source/kernel/chr_drv/tty_io.c?v=0.97#L181">181</a> (c==<a href="ident?v=0.97;i=ERASE_CHAR">ERASE_CHAR</a>(tty))) {<a name=L182 href="source/kernel/chr_drv/tty_io.c?v=0.97#L182">182</a> if (<a href="ident?v=0.97;i=EMPTY">EMPTY</a>(tty->secondary) ||<a name=L183 href="source/kernel/chr_drv/tty_io.c?v=0.97#L183">183</a> (c=<a href="ident?v=0.97;i=LAST">LAST</a>(tty->secondary))==10 ||<a name=L184 href="source/kernel/chr_drv/tty_io.c?v=0.97#L184">184</a> ((<a href="ident?v=0.97;i=EOF_CHAR">EOF_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a>) &&<a name=L185 href="source/kernel/chr_drv/tty_io.c?v=0.97#L185">185</a> (c==<a href="ident?v=0.97;i=EOF_CHAR">EOF_CHAR</a>(tty))))<a name=L186 href="source/kernel/chr_drv/tty_io.c?v=0.97#L186">186</a> continue;<a name=L187 href="source/kernel/chr_drv/tty_io.c?v=0.97#L187">187</a> if (<a href="ident?v=0.97;i=L_ECHO">L_ECHO</a>(tty)) {<a name=L188 href="source/kernel/chr_drv/tty_io.c?v=0.97#L188">188</a> if (c<32) {<a name=L189 href="source/kernel/chr_drv/tty_io.c?v=0.97#L189">189</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L190 href="source/kernel/chr_drv/tty_io.c?v=0.97#L190">190</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(<i>' '</i>,tty->write_q);<a name=L191 href="source/kernel/chr_drv/tty_io.c?v=0.97#L191">191</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L192 href="source/kernel/chr_drv/tty_io.c?v=0.97#L192">192</a> }<a name=L193 href="source/kernel/chr_drv/tty_io.c?v=0.97#L193">193</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L194 href="source/kernel/chr_drv/tty_io.c?v=0.97#L194">194</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(32,tty->write_q);<a name=L195 href="source/kernel/chr_drv/tty_io.c?v=0.97#L195">195</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(8,tty->write_q);<a name=L196 href="source/kernel/chr_drv/tty_io.c?v=0.97#L196">196</a> }<a name=L197 href="source/kernel/chr_drv/tty_io.c?v=0.97#L197">197</a> <a href="ident?v=0.97;i=DEC">DEC</a>(tty->secondary-><a href="ident?v=0.97;i=head">head</a>);<a name=L198 href="source/kernel/chr_drv/tty_io.c?v=0.97#L198">198</a> continue;<a name=L199 href="source/kernel/chr_drv/tty_io.c?v=0.97#L199">199</a> }<a name=L200 href="source/kernel/chr_drv/tty_io.c?v=0.97#L200">200</a> }<a name=L201 href="source/kernel/chr_drv/tty_io.c?v=0.97#L201">201</a> if (<a href="ident?v=0.97;i=I_IXON">I_IXON</a>(tty)) {<a name=L202 href="source/kernel/chr_drv/tty_io.c?v=0.97#L202">202</a> if ((<a href="ident?v=0.97;i=STOP_CHAR">STOP_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a>) &&<a name=L203 href="source/kernel/chr_drv/tty_io.c?v=0.97#L203">203</a> (c==<a href="ident?v=0.97;i=STOP_CHAR">STOP_CHAR</a>(tty))) {<a name=L204 href="source/kernel/chr_drv/tty_io.c?v=0.97#L204">204</a> tty->stopped=1;<a name=L205 href="source/kernel/chr_drv/tty_io.c?v=0.97#L205">205</a> continue;<a name=L206 href="source/kernel/chr_drv/tty_io.c?v=0.97#L206">206</a> }<a name=L207 href="source/kernel/chr_drv/tty_io.c?v=0.97#L207">207</a> if ((<a href="ident?v=0.97;i=START_CHAR">START_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a>) &&<a name=L208 href="source/kernel/chr_drv/tty_io.c?v=0.97#L208">208</a> (c==<a href="ident?v=0.97;i=START_CHAR">START_CHAR</a>(tty))) {<a name=L209 href="source/kernel/chr_drv/tty_io.c?v=0.97#L209">209</a> tty->stopped=0;<a name=L210 href="source/kernel/chr_drv/tty_io.c?v=0.97#L210">210</a> continue;<a name=L211 href="source/kernel/chr_drv/tty_io.c?v=0.97#L211">211</a> }<a name=L212 href="source/kernel/chr_drv/tty_io.c?v=0.97#L212">212</a> }<a name=L213 href="source/kernel/chr_drv/tty_io.c?v=0.97#L213">213</a> if (<a href="ident?v=0.97;i=L_ISIG">L_ISIG</a>(tty)) {<a name=L214 href="source/kernel/chr_drv/tty_io.c?v=0.97#L214">214</a> if ((<a href="ident?v=0.97;i=INTR_CHAR">INTR_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a>) &&<a name=L215 href="source/kernel/chr_drv/tty_io.c?v=0.97#L215">215</a> (c==<a href="ident?v=0.97;i=INTR_CHAR">INTR_CHAR</a>(tty))) {<a name=L216 href="source/kernel/chr_drv/tty_io.c?v=0.97#L216">216</a> <a href="ident?v=0.97;i=kill_pg">kill_pg</a>(tty->pgrp, <a href="ident?v=0.97;i=SIGINT">SIGINT</a>, 1);<a name=L217 href="source/kernel/chr_drv/tty_io.c?v=0.97#L217">217</a> <a href="ident?v=0.97;i=flush_input">flush_input</a>(tty);<a name=L218 href="source/kernel/chr_drv/tty_io.c?v=0.97#L218">218</a> continue;<a name=L219 href="source/kernel/chr_drv/tty_io.c?v=0.97#L219">219</a> }<a name=L220 href="source/kernel/chr_drv/tty_io.c?v=0.97#L220">220</a> if ((<a href="ident?v=0.97;i=QUIT_CHAR">QUIT_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a>) &&<a name=L221 href="source/kernel/chr_drv/tty_io.c?v=0.97#L221">221</a> (c==<a href="ident?v=0.97;i=QUIT_CHAR">QUIT_CHAR</a>(tty))) {<a name=L222 href="source/kernel/chr_drv/tty_io.c?v=0.97#L222">222</a> <a href="ident?v=0.97;i=kill_pg">kill_pg</a>(tty->pgrp, <a href="ident?v=0.97;i=SIGQUIT">SIGQUIT</a>, 1);<a name=L223 href="source/kernel/chr_drv/tty_io.c?v=0.97#L223">223</a> <a href="ident?v=0.97;i=flush_input">flush_input</a>(tty);<a name=L224 href="source/kernel/chr_drv/tty_io.c?v=0.97#L224">224</a> continue;<a name=L225 href="source/kernel/chr_drv/tty_io.c?v=0.97#L225">225</a> }<a name=L226 href="source/kernel/chr_drv/tty_io.c?v=0.97#L226">226</a> if ((<a href="ident?v=0.97;i=SUSPEND_CHAR">SUSPEND_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a>) &&<a name=L227 href="source/kernel/chr_drv/tty_io.c?v=0.97#L227">227</a> (c==<a href="ident?v=0.97;i=SUSPEND_CHAR">SUSPEND_CHAR</a>(tty))) {<a name=L228 href="source/kernel/chr_drv/tty_io.c?v=0.97#L228">228</a> if (!<a href="ident?v=0.97;i=is_orphaned_pgrp">is_orphaned_pgrp</a>(tty->pgrp))<a name=L229 href="source/kernel/chr_drv/tty_io.c?v=0.97#L229">229</a> <a href="ident?v=0.97;i=kill_pg">kill_pg</a>(tty->pgrp, <a href="ident?v=0.97;i=SIGTSTP">SIGTSTP</a>, 1);<a name=L230 href="source/kernel/chr_drv/tty_io.c?v=0.97#L230">230</a> continue;<a name=L231 href="source/kernel/chr_drv/tty_io.c?v=0.97#L231">231</a> }<a name=L232 href="source/kernel/chr_drv/tty_io.c?v=0.97#L232">232</a> }<a name=L233 href="source/kernel/chr_drv/tty_io.c?v=0.97#L233">233</a> if (c==10 || (<a href="ident?v=0.97;i=EOF_CHAR">EOF_CHAR</a>(tty) != <a href="ident?v=0.97;i=__DISABLED_CHAR">__DISABLED_CHAR</a> &&<a name=L234 href="source/kernel/chr_drv/tty_io.c?v=0.97#L234">234</a> c==<a href="ident?v=0.97;i=EOF_CHAR">EOF_CHAR</a>(tty)))<a name=L235 href="source/kernel/chr_drv/tty_io.c?v=0.97#L235">235</a> tty->secondary->data++;<a name=L236 href="source/kernel/chr_drv/tty_io.c?v=0.97#L236">236</a> if ((c==10) && (<a href="ident?v=0.97;i=L_ECHO">L_ECHO</a>(tty) || (<a href="ident?v=0.97;i=L_CANON">L_CANON</a>(tty) && <a href="ident?v=0.97;i=L_ECHONL">L_ECHONL</a>(tty)))) {<a name=L237 href="source/kernel/chr_drv/tty_io.c?v=0.97#L237">237</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(10,tty->write_q);<a name=L238 href="source/kernel/chr_drv/tty_io.c?v=0.97#L238">238</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(13,tty->write_q);<a name=L239 href="source/kernel/chr_drv/tty_io.c?v=0.97#L239">239</a> } else if (<a href="ident?v=0.97;i=L_ECHO">L_ECHO</a>(tty)) {<a name=L240 href="source/kernel/chr_drv/tty_io.c?v=0.97#L240">240</a> if (c<32 && <a href="ident?v=0.97;i=L_ECHOCTL">L_ECHOCTL</a>(tty)) {<a name=L241 href="source/kernel/chr_drv/tty_io.c?v=0.97#L241">241</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(<i>'^'</i>,tty->write_q);<a name=L242 href="source/kernel/chr_drv/tty_io.c?v=0.97#L242">242</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(c+64,tty->write_q);<a name=L243 href="source/kernel/chr_drv/tty_io.c?v=0.97#L243">243</a> } else<a name=L244 href="source/kernel/chr_drv/tty_io.c?v=0.97#L244">244</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(c,tty->write_q);<a name=L245 href="source/kernel/chr_drv/tty_io.c?v=0.97#L245">245</a> }<a name=L246 href="source/kernel/chr_drv/tty_io.c?v=0.97#L246">246</a> <a href="ident?v=0.97;i=put_tty_queue">put_tty_queue</a>(c,tty->secondary);<a name=L247 href="source/kernel/chr_drv/tty_io.c?v=0.97#L247">247</a> }<a name=L248 href="source/kernel/chr_drv/tty_io.c?v=0.97#L248">248</a> <a href="ident?v=0.97;i=TTY_WRITE_FLUSH">TTY_WRITE_FLUSH</a>(tty);<a name=L249 href="source/kernel/chr_drv/tty_io.c?v=0.97#L249">249</a> if (!<a href="ident?v=0.97;i=EMPTY">EMPTY</a>(tty->secondary))<a name=L250 href="source/kernel/chr_drv/tty_io.c?v=0.97#L250">250</a> <a href="ident?v=0.97;i=wake_up">wake_up</a>(&tty->secondary->proc_list);<a name=L251 href="source/kernel/chr_drv/tty_io.c?v=0.97#L251">251</a> if (tty->write_q->proc_list && <a href="ident?v=0.97;i=LEFT">LEFT</a>(tty->write_q) > <a href="ident?v=0.97;i=TTY_BUF_SIZE">TTY_BUF_SIZE</a>/2)<a name=L252 href="source/kernel/chr_drv/tty_io.c?v=0.97#L252">252</a> <a href="ident?v=0.97;i=wake_up">wake_up</a>(&tty->write_q->proc_list);<a name=L253 href="source/kernel/chr_drv/tty_io.c?v=0.97#L253">253</a> }<a name=L254 href="source/kernel/chr_drv/tty_io.c?v=0.97#L254">254</a> <a name=L255 href="source/kernel/chr_drv/tty_io.c?v=0.97#L255">255</a> int <a href="ident?v=0.97;i=is_ignored">is_ignored</a>(int sig)<a name=L256 href="source/kernel/chr_drv/tty_io.c?v=0.97#L256">256</a> {<a name=L257 href="source/kernel/chr_drv/tty_io.c?v=0.97#L257">257</a> return ((<a href="ident?v=0.97;i=current">current</a>->blocked & (1<<(sig-1))) ||<a name=L258 href="source/kernel/chr_drv/tty_io.c?v=0.97#L258">258</a> (<a href="ident?v=0.97;i=current">current</a>-><a href="ident?v=0.97;i=sigaction">sigaction</a>[sig-1].sa_handler == <a href="ident?v=0.97;i=SIG_IGN">SIG_IGN</a>));<a name=L259 href="source/kernel/chr_drv/tty_io.c?v=0.97#L259">259</a> }<a name=L260 href="source/kernel/chr_drv/tty_io.c?v=0.97#L260">260</a> <a name=L261 href="source/kernel/chr_drv/tty_io.c?v=0.97#L261">261</a> <b><i>/*</i></b><a name=L262 href="source/kernel/chr_drv/tty_io.c?v=0.97#L262">262</a> <b><i> * Called when we need to send a SIGTTIN or SIGTTOU to our process</i></b><a name=L263 href="source/kernel/chr_drv/tty_io.c?v=0.97#L263">263</a> <b><i> * group</i></b><a name=L264 href="source/kernel/chr_drv/tty_io.c?v=0.97#L264">264</a> <b><i> * </i></b>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -