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

📄 tty_ioctl.c

📁 linux字符驱动源码
💻 C
📖 第 1 页 / 共 4 页
字号:
<a name=L316 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L316">316</a>                         <a href="ident?v=0.97;i=verify_area">verify_area</a>((void *) arg,4);<a name=L317 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L317">317</a>                         <a href="ident?v=0.97;i=put_fs_long">put_fs_long</a>(tty-&gt;pgrp,(unsigned long *) arg);<a name=L318 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L318">318</a>                         return 0;<a name=L319 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L319">319</a>                 case <a href="ident?v=0.97;i=TIOCSPGRP">TIOCSPGRP</a>:<a name=L320 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L320">320</a>                         if ((<a href="ident?v=0.97;i=current">current</a>-&gt;tty &lt; 0) ||<a name=L321 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L321">321</a>                             (<a href="ident?v=0.97;i=current">current</a>-&gt;tty != dev) ||<a name=L322 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L322">322</a>                             (tty-&gt;session != <a href="ident?v=0.97;i=current">current</a>-&gt;session))<a name=L323 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L323">323</a>                                 return -<a href="ident?v=0.97;i=ENOTTY">ENOTTY</a>;<a name=L324 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L324">324</a>                         pgrp=<a href="ident?v=0.97;i=get_fs_long">get_fs_long</a>((unsigned long *) arg);<a name=L325 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L325">325</a>                         if (pgrp &lt; 0)<a name=L326 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L326">326</a>                                 return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>;<a name=L327 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L327">327</a>                         if (<a href="ident?v=0.97;i=session_of_pgrp">session_of_pgrp</a>(pgrp) != <a href="ident?v=0.97;i=current">current</a>-&gt;session)<a name=L328 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L328">328</a>                                 return -<a href="ident?v=0.97;i=EPERM">EPERM</a>;<a name=L329 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L329">329</a>                         tty-&gt;pgrp = pgrp;                       <a name=L330 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L330">330</a>                         return 0;<a name=L331 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L331">331</a>                 case <a href="ident?v=0.97;i=TIOCOUTQ">TIOCOUTQ</a>:<a name=L332 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L332">332</a>                         <a href="ident?v=0.97;i=verify_area">verify_area</a>((void *) arg,4);<a name=L333 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L333">333</a>                         <a href="ident?v=0.97;i=put_fs_long">put_fs_long</a>(<a href="ident?v=0.97;i=CHARS">CHARS</a>(tty-&gt;write_q),(unsigned long *) arg);<a name=L334 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L334">334</a>                         return 0;<a name=L335 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L335">335</a>                 case <a href="ident?v=0.97;i=TIOCINQ">TIOCINQ</a>:<a name=L336 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L336">336</a>                         <a href="ident?v=0.97;i=verify_area">verify_area</a>((void *) arg,4);<a name=L337 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L337">337</a>                         if (<a href="ident?v=0.97;i=L_CANON">L_CANON</a>(tty) &amp;&amp; !tty-&gt;secondary-&gt;data)<a name=L338 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L338">338</a>                                 <a href="ident?v=0.97;i=put_fs_long">put_fs_long</a>(0, (unsigned long *) arg);<a name=L339 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L339">339</a>                         else<a name=L340 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L340">340</a>                                 <a href="ident?v=0.97;i=put_fs_long">put_fs_long</a>(<a href="ident?v=0.97;i=CHARS">CHARS</a>(tty-&gt;secondary),<a name=L341 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L341">341</a>                                         (unsigned long *) arg);<a name=L342 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L342">342</a>                         return 0;<a name=L343 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L343">343</a>                 case <a href="ident?v=0.97;i=TIOCSTI">TIOCSTI</a>:<a name=L344 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L344">344</a>                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>; <b><i>/* not implemented */</i></b><a name=L345 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L345">345</a>                 case <a href="ident?v=0.97;i=TIOCGWINSZ">TIOCGWINSZ</a>:<a name=L346 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L346">346</a>                         return <a href="ident?v=0.97;i=get_window_size">get_window_size</a>(tty,(struct <a href="ident?v=0.97;i=winsize">winsize</a> *) arg);<a name=L347 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L347">347</a>                 case <a href="ident?v=0.97;i=TIOCSWINSZ">TIOCSWINSZ</a>:<a name=L348 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L348">348</a>                         if (<a href="ident?v=0.97;i=IS_A_PTY_MASTER">IS_A_PTY_MASTER</a>(dev))<a name=L349 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L349">349</a>                                 <a href="ident?v=0.97;i=set_window_size">set_window_size</a>(other_tty,(struct <a href="ident?v=0.97;i=winsize">winsize</a> *) arg);<a name=L350 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L350">350</a>                         return <a href="ident?v=0.97;i=set_window_size">set_window_size</a>(tty,(struct <a href="ident?v=0.97;i=winsize">winsize</a> *) arg);<a name=L351 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L351">351</a>                 case <a href="ident?v=0.97;i=TIOCMGET">TIOCMGET</a>:<a name=L352 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L352">352</a>                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>; <b><i>/* not implemented */</i></b><a name=L353 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L353">353</a>                 case <a href="ident?v=0.97;i=TIOCMBIS">TIOCMBIS</a>:<a name=L354 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L354">354</a>                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>; <b><i>/* not implemented */</i></b><a name=L355 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L355">355</a>                 case <a href="ident?v=0.97;i=TIOCMBIC">TIOCMBIC</a>:<a name=L356 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L356">356</a>                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>; <b><i>/* not implemented */</i></b><a name=L357 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L357">357</a>                 case <a href="ident?v=0.97;i=TIOCMSET">TIOCMSET</a>:<a name=L358 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L358">358</a>                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>; <b><i>/* not implemented */</i></b><a name=L359 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L359">359</a>                 case <a href="ident?v=0.97;i=TIOCGSOFTCAR">TIOCGSOFTCAR</a>:<a name=L360 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L360">360</a>                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>; <b><i>/* not implemented */</i></b><a name=L361 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L361">361</a>                 case <a href="ident?v=0.97;i=TIOCSSOFTCAR">TIOCSSOFTCAR</a>:<a name=L362 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L362">362</a>                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>; <b><i>/* not implemented */</i></b><a name=L363 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L363">363</a>                 case <a href="ident?v=0.97;i=TIOCLINUX">TIOCLINUX</a>:<a name=L364 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L364">364</a>                         switch (<a href="ident?v=0.97;i=get_fs_byte">get_fs_byte</a>((char *)arg))<a name=L365 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L365">365</a>                         {<a name=L366 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L366">366</a>                                 case 0: <a name=L367 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L367">367</a>                                         return <a href="ident?v=0.97;i=do_screendump">do_screendump</a>(arg);<a name=L368 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L368">368</a>                                 case 1: <a name=L369 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L369">369</a>                                         return <a href="ident?v=0.97;i=do_get_ps_info">do_get_ps_info</a>(arg);<a name=L370 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L370">370</a>                                 default: <a name=L371 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L371">371</a>                                         return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>;<a name=L372 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L372">372</a>                         }<a name=L373 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L373">373</a>                 case <a href="ident?v=0.97;i=TIOCCONS">TIOCCONS</a>:<a name=L374 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L374">374</a>                         if (!<a href="ident?v=0.97;i=IS_A_PTY">IS_A_PTY</a>(dev))<a name=L375 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L375">375</a>                                 return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>;<a name=L376 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L376">376</a>                         if (<a href="ident?v=0.97;i=redirect">redirect</a>)<a name=L377 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L377">377</a>                                 return -<a href="ident?v=0.97;i=EBUSY">EBUSY</a>;<a name=L378 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L378">378</a>                         if (!<a href="ident?v=0.97;i=suser">suser</a>())<a name=L379 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L379">379</a>                                 return -<a href="ident?v=0.97;i=EPERM">EPERM</a>;<a name=L380 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L380">380</a>                         if (<a href="ident?v=0.97;i=IS_A_PTY_MASTER">IS_A_PTY_MASTER</a>(dev))<a name=L381 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L381">381</a>                                 <a href="ident?v=0.97;i=redirect">redirect</a> = other_tty;<a name=L382 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L382">382</a>                         else<a name=L383 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L383">383</a>                                 <a href="ident?v=0.97;i=redirect">redirect</a> = tty;<a name=L384 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L384">384</a>                         return 0;<a name=L385 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L385">385</a>                 case <a href="ident?v=0.97;i=TIOCGSERIAL">TIOCGSERIAL</a>:<a name=L386 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L386">386</a>                         if (!<a href="ident?v=0.97;i=IS_A_SERIAL">IS_A_SERIAL</a>(dev))<a name=L387 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L387">387</a>                                 return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>;<a name=L388 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L388">388</a>                         <a href="ident?v=0.97;i=verify_area">verify_area</a>((void *) arg,sizeof(struct <a href="ident?v=0.97;i=serial_struct">serial_struct</a>));<a name=L389 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L389">389</a>                         return <a href="ident?v=0.97;i=get_serial_info">get_serial_info</a>(dev-64,(struct <a href="ident?v=0.97;i=serial_struct">serial_struct</a> *) arg);<a name=L390 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L390">390</a>                 case <a href="ident?v=0.97;i=TIOCSSERIAL">TIOCSSERIAL</a>:<a name=L391 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L391">391</a>                         if (!<a href="ident?v=0.97;i=IS_A_SERIAL">IS_A_SERIAL</a>(dev))<a name=L392 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L392">392</a>                                 return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>;<a name=L393 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L393">393</a>                         return <a href="ident?v=0.97;i=set_serial_info">set_serial_info</a>(dev-64,(struct <a href="ident?v=0.97;i=serial_struct">serial_struct</a> *) arg);<a name=L394 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L394">394</a>                 case <a href="ident?v=0.97;i=FIONBIO">FIONBIO</a>:<a name=L395 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L395">395</a>                         if (arg)<a name=L396 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L396">396</a>                                 <a href="ident?v=0.97;i=file">file</a>-&gt;f_flags |= <a href="ident?v=0.97;i=O_NONBLOCK">O_NONBLOCK</a>;<a name=L397 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L397">397</a>                         else<a name=L398 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L398">398</a>                                 <a href="ident?v=0.97;i=file">file</a>-&gt;f_flags &amp;= ~O_NONBLOCK;<a name=L399 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L399">399</a>                         return 0;<a name=L400 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L400">400</a>                 case <a href="ident?v=0.97;i=TIOCNOTTY">TIOCNOTTY</a>:<a name=L401 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L401">401</a>                         if (<a href="ident?v=0.97;i=MINOR">MINOR</a>(<a href="ident?v=0.97;i=file">file</a>-&gt;f_rdev) != <a href="ident?v=0.97;i=current">current</a>-&gt;tty)<a name=L402 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L402">402</a>                                 return -<a href="ident?v=0.97;i=EINVAL">EINVAL</a>;<a name=L403 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L403">403</a>                         <a href="ident?v=0.97;i=current">current</a>-&gt;tty = -1;<a name=L404 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L404">404</a>                         if (<a href="ident?v=0.97;i=current">current</a>-&gt;leader) {<a name=L405 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L405">405</a>                                 if (tty-&gt;pgrp &gt; 0)<a name=L406 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L406">406</a>                                         <a href="ident?v=0.97;i=kill_pg">kill_pg</a>(tty-&gt;pgrp, <a href="ident?v=0.97;i=SIGHUP">SIGHUP</a>, 0);<a name=L407 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L407">407</a>                                 tty-&gt;pgrp = -1;<a name=L408 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L408">408</a>                                 tty-&gt;session = 0;<a name=L409 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L409">409</a>                         }<a name=L410 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L410">410</a>                         return 0;<a name=L411 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L411">411</a>                 default:<a name=L412 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L412">412</a>                         return <a href="ident?v=0.97;i=vt_ioctl">vt_ioctl</a>(tty, dev, cmd, arg);<a name=L413 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L413">413</a>         }<a name=L414 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L414">414</a> }<a name=L415 href="source/kernel/chr_drv/tty_ioctl.c?v=0.97#L415">415</a> </pre><hr><div align=center>   [<b><i>source navigation</i></b>] [<a href="diff/kernel/chr_drv/tty_ioctl.c?v=0.97">diff markup</a>] [<a href="ident?v=0.97">identifier search</a>] [<a href="search?v=0.97">freetext search</a>] [<a href="find?v=0.97">file search</a>] </div><hr>This page was automatically generated by the <a href="http:blurb.html">LXR engine</a>.<br>Visit the <a href="http://lxr.linux.no/">LXR main site</a> for moreinformation.</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -