⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tty_io.c

📁 linux字符驱动源码
💻 C
📖 第 1 页 / 共 5 页
字号:
<a name=L167 href="source/kernel/chr_drv/tty_io.c?v=0.97#L167">167</a>                                                 if (c&lt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;secondary-&gt;<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>) &amp;&amp;<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-&gt;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-&gt;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>) &amp;&amp;<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&lt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;secondary-&gt;<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>) &amp;&amp;<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-&gt;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>) &amp;&amp;<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-&gt;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>) &amp;&amp;<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-&gt;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>) &amp;&amp;<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-&gt;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>) &amp;&amp;<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-&gt;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-&gt;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> &amp;&amp;<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-&gt;secondary-&gt;data++;<a name=L236 href="source/kernel/chr_drv/tty_io.c?v=0.97#L236">236</a>                 if ((c==10) &amp;&amp; (<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) &amp;&amp; <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-&gt;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-&gt;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&lt;32 &amp;&amp; <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-&gt;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-&gt;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-&gt;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-&gt;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-&gt;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>(&amp;tty-&gt;secondary-&gt;proc_list);<a name=L251 href="source/kernel/chr_drv/tty_io.c?v=0.97#L251">251</a>         if (tty-&gt;write_q-&gt;proc_list &amp;&amp; <a href="ident?v=0.97;i=LEFT">LEFT</a>(tty-&gt;write_q) &gt; <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>(&amp;tty-&gt;write_q-&gt;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>-&gt;blocked &amp; (1&lt;&lt;(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>-&gt;<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 + -