76.html
来自「linux 0.11中文版 有注释」· HTML 代码 · 共 358 行 · 第 1/2 页
HTML
358 行
<html>
<head>
<title>kernel/sys.c</title>
<meta name='robots' content='noindex,nofollow'>
<meta name='generator' content='GLOBAL-5.4.1'>
</head>
<body text='#191970' bgcolor='#f5f5dc' vlink='gray'>
<a name='TOP'><h2><a href='../mains.html'>root</a>/<a href='../files/104.html'>kernel</a>/sys.c</h2>
<i><font color='green'>/* [<][>]<a href='#L19'>[^]</a><a href='#L304'>[v]</a>[top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
<hr>
<h2>DEFINITIONS</h2>
This source file includes following definitions.
<ol>
<li><a href='#L19' title='Defined at 19.'>sys_ftime</a>
<li><a href='#L26' title='Defined at 26.'>sys_break</a>
<li><a href='#L33' title='Defined at 33.'>sys_ptrace</a>
<li><a href='#L40' title='Defined at 40.'>sys_stty</a>
<li><a href='#L47' title='Defined at 47.'>sys_gtty</a>
<li><a href='#L54' title='Defined at 54.'>sys_rename</a>
<li><a href='#L61' title='Defined at 61.'>sys_prof</a>
<li><a href='#L70' title='Defined at 70.'>sys_setregid</a>
<li><a href='#L94' title='Defined at 94.'>sys_setgid</a>
<li><a href='#L101' title='Defined at 101.'>sys_acct</a>
<li><a href='#L108' title='Defined at 108.'>sys_phys</a>
<li><a href='#L114' title='Defined at 114.'>sys_lock</a>
<li><a href='#L120' title='Defined at 120.'>sys_mpx</a>
<li><a href='#L126' title='Defined at 126.'>sys_ulimit</a>
<li><a href='#L134' title='Defined at 134.'>sys_time</a>
<li><a href='#L158' title='Defined at 158.'>sys_setreuid</a>
<li><a href='#L186' title='Defined at 186.'>sys_setuid</a>
<li><a href='#L194' title='Defined at 194.'>sys_stime</a>
<li><a href='#L204' title='Defined at 204.'>sys_times</a>
<li><a href='#L222' title='Defined at 222.'>sys_brk</a>
<li><a href='#L244' title='Defined at 244.'>sys_setpgid</a>
<li><a href='#L267' title='Defined at 267.'>sys_getpgrp</a>
<li><a href='#L274' title='Defined at 274.'>sys_setsid</a>
<li><a href='#L287' title='Defined at 287.'>sys_uname</a>
<li><a href='#L304' title='Defined at 304.'>sys_umask</a>
</ol>
<hr>
<pre>
<a name='L1'><i><font color='green'>/*</font></i>
<a name='L2'><i><font color='green'>* linux/kernel/sys.c</font></i>
<a name='L3'><i><font color='green'>*</font></i>
<a name='L4'><i><font color='green'>* (C) 1991 Linus Torvalds</font></i>
<a name='L5'><i><font color='green'>*/</font></i>
<a name='L6'>
<a name='L7'><font color='darkred'>#include</font> <<a href='28.html'>errno.h</a>> <i><font color='green'>// 错误号头文件。包含系统中各种出错号。(Linus 从minix 中引进的)。</font></i>
<a name='L8'>
<a name='L9'><font color='darkred'>#include</font> <<a href='36.html'>linux/sched.h</a>> <i><font color='green'>// 调度程序头文件,定义了任务结构task_struct、初始任务0 的数据,</font></i>
<a name='L10'><i><font color='green'>// 还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。</font></i>
<a name='L11'><font color='darkred'>#include</font> <<a href='38.html'>linux/tty.h</a>> <i><font color='green'>// tty 头文件,定义了有关tty_io,串行通信方面的参数、常数。</font></i>
<a name='L12'><font color='darkred'>#include</font> <<a href='34.html'>linux/kernel.h</a>> <i><font color='green'>// 内核头文件。含有一些内核常用函数的原形定义。</font></i>
<a name='L13'><font color='darkred'>#include</font> <<a href='24.html'>asm/segment.h</a>> <i><font color='green'>// 段操作头文件。定义了有关段寄存器操作的嵌入式汇编函数。</font></i>
<a name='L14'><font color='darkred'>#include</font> <<a href='44.html'>sys/times.h</a>> <i><font color='green'>// 定义了进程中运行时间的结构tms 以及times()函数原型。</font></i>
<a name='L15'><font color='darkred'>#include</font> <<a href='46.html'>sys/utsname.h</a>> <i><font color='green'>// 系统名称结构头文件。</font></i>
<a name='L16'>
<a name='L17'><i><font color='green'>// 返回日期和时间。</font></i>
<a name='L18'><b>int</b>
<a name='L19'><a href='../R/644.html' title='Multiple refered from 2 places.'>sys_ftime</a> ()
<a name='L20'><font color='red'>{</font>
<a name='L21'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L22'><font color='red'>}</font>
<a name='L23'>
<a name='L24'><i><font color='green'>//</font></i>
<a name='L25'><b>int</b>
<a name='L26'><a href='../R/631.html' title='Multiple refered from 2 places.'>sys_break</a> ()
<a name='L27'><font color='red'>{</font>
<a name='L28'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L29'><font color='red'>}</font>
<a name='L30'>
<a name='L31'><i><font color='green'>// 用于当前进程对子进程进行调试(degugging)。</font></i>
<a name='L32'><b>int</b>
<a name='L33'><a href='../R/668.html' title='Multiple refered from 2 places.'>sys_ptrace</a> ()
<a name='L34'><font color='red'>{</font>
<a name='L35'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L36'><font color='red'>}</font>
<a name='L37'>
<a name='L38'><i><font color='green'>// 改变并打印终端行设置。</font></i>
<a name='L39'><b>int</b>
<a name='L40'><a href='../R/685.html' title='Multiple refered from 2 places.'>sys_stty</a> ()
<a name='L41'><font color='red'>{</font>
<a name='L42'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L43'><font color='red'>}</font>
<a name='L44'>
<a name='L45'><i><font color='green'>// 取终端行设置信息。</font></i>
<a name='L46'><b>int</b>
<a name='L47'><a href='../R/652.html' title='Multiple refered from 2 places.'>sys_gtty</a> ()
<a name='L48'><font color='red'>{</font>
<a name='L49'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L50'><font color='red'>}</font>
<a name='L51'>
<a name='L52'><i><font color='green'>// 修改文件名。</font></i>
<a name='L53'><b>int</b>
<a name='L54'><a href='../R/670.html' title='Multiple refered from 2 places.'>sys_rename</a> ()
<a name='L55'><font color='red'>{</font>
<a name='L56'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L57'><font color='red'>}</font>
<a name='L58'>
<a name='L59'><i><font color='green'>//</font></i>
<a name='L60'><b>int</b>
<a name='L61'><a href='../R/667.html' title='Multiple refered from 2 places.'>sys_prof</a> ()
<a name='L62'><font color='red'>{</font>
<a name='L63'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L64'><font color='red'>}</font>
<a name='L65'>
<a name='L66'><i><font color='green'>// 设置当前任务的实际以及/或者有效组ID(gid)。如果任务没有超级用户特权,</font></i>
<a name='L67'><i><font color='green'>// 那么只能互换其实际组ID 和有效组ID。如果任务具有超级用户特权,就能任意设置有效的和实际</font></i>
<a name='L68'><i><font color='green'>// 的组ID。保留的gid(saved gid)被设置成与有效gid 同值。</font></i>
<a name='L69'><b>int</b>
<a name='L70'><a href='../R/674.html' title='Multiple refered from 3 places.'>sys_setregid</a> (<b>int</b> rgid, <b>int</b> egid)
<a name='L71'><font color='red'>{</font>
<a name='L72'> <b>if</b> (rgid > 0)
<a name='L73'> <font color='red'>{</font>
<a name='L74'> <b>if</b> ((current->gid == rgid) || <a href='../S/34.html#L37' title='Defined at 37 in include/linux/kernel.h.'>suser</a> ())
<a name='L75'> current->gid = rgid;
<a name='L76'> <b>else</b>
<a name='L77'> <b>return</b> (-<a href='../D/112.html' title='Multiple defined in 2 places.'>EPERM</a>);
<a name='L78'> <font color='red'>}</font>
<a name='L79'> <b>if</b> (egid > 0)
<a name='L80'> <font color='red'>{</font>
<a name='L81'> <b>if</b> ((current->gid == egid) ||
<a name='L82'> (current->egid == egid) || (current->sgid == egid) || <a href='../S/34.html#L37' title='Defined at 37 in include/linux/kernel.h.'>suser</a> ())
<a name='L83'> current->egid = egid;
<a name='L84'> <b>else</b>
<a name='L85'> <b>return</b> (-<a href='../D/112.html' title='Multiple defined in 2 places.'>EPERM</a>);
<a name='L86'> <font color='red'>}</font>
<a name='L87'> <b>return</b> 0;
<a name='L88'><font color='red'>}</font>
<a name='L89'>
<a name='L90'><i><font color='green'>// 设置进程组号(gid)。如果任务没有超级用户特权,它可以使用setgid()将其有效gid</font></i>
<a name='L91'><i><font color='green'>// (effective gid)设置为成其保留gid(saved gid)或其实际gid(real gid)。如果任务有</font></i>
<a name='L92'><i><font color='green'>// 超级用户特权,则实际gid、有效gid 和保留gid 都被设置成参数指定的gid。</font></i>
<a name='L93'><b>int</b>
<a name='L94'><a href='../R/672.html' title='Multiple refered from 2 places.'>sys_setgid</a> (<b>int</b> gid)
<a name='L95'><font color='red'>{</font>
<a name='L96'> <b>return</b> (<a href='../S/76.html#L70' title='Defined at 70 in kernel/sys.c.'>sys_setregid</a> (gid, gid));
<a name='L97'><font color='red'>}</font>
<a name='L98'>
<a name='L99'><i><font color='green'>// 打开或关闭进程计帐功能。</font></i>
<a name='L100'><b>int</b>
<a name='L101'><a href='../R/629.html' title='Multiple refered from 2 places.'>sys_acct</a> ()
<a name='L102'><font color='red'>{</font>
<a name='L103'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L104'><font color='red'>}</font>
<a name='L105'>
<a name='L106'><i><font color='green'>// 映射任意物理内存到进程的虚拟地址空间。</font></i>
<a name='L107'><b>int</b>
<a name='L108'><a href='../R/665.html' title='Multiple refered from 2 places.'>sys_phys</a> ()
<a name='L109'><font color='red'>{</font>
<a name='L110'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L111'><font color='red'>}</font>
<a name='L112'>
<a name='L113'><b>int</b>
<a name='L114'><a href='../R/656.html' title='Multiple refered from 2 places.'>sys_lock</a> ()
<a name='L115'><font color='red'>{</font>
<a name='L116'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L117'><font color='red'>}</font>
<a name='L118'>
<a name='L119'><b>int</b>
<a name='L120'><a href='../R/661.html' title='Multiple refered from 2 places.'>sys_mpx</a> ()
<a name='L121'><font color='red'>{</font>
<a name='L122'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L123'><font color='red'>}</font>
<a name='L124'>
<a name='L125'><b>int</b>
<a name='L126'><a href='../R/689.html' title='Multiple refered from 2 places.'>sys_ulimit</a> ()
<a name='L127'><font color='red'>{</font>
<a name='L128'> <b>return</b> -<a href='../S/28.html#L67' title='Defined at 67 in include/errno.h.'>ENOSYS</a>;
<a name='L129'><font color='red'>}</font>
<a name='L130'>
<a name='L131'><i><font color='green'>// 返回从1970 年1 月1 日00:00:00 GMT 开始计时的时间值(秒)。如果tloc 不为null,则时间值</font></i>
<a name='L132'><i><font color='green'>// 也存储在那里。</font></i>
<a name='L133'><b>int</b>
<a name='L134'><a href='../R/687.html' title='Multiple refered from 2 places.'>sys_time</a> (<b>long</b> *tloc)
<a name='L135'><font color='red'>{</font>
<a name='L136'> <b>int</b> <a href='../D/839.html' title='Multiple defined in 4 places.'>i</a>;
<a name='L137'>
<a name='L138'> <a href='../D/839.html' title='Multiple defined in 4 places.'>i</a> = <a href='../S/36.html#L234' title='Defined at 234 in include/linux/sched.h.'>CURRENT_TIME</a>;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?