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

📄 sys.c

📁 linux0.11 version(301k)
💻 C
📖 第 1 页 / 共 2 页
字号:
<a name=L109 href="source/kernel/sys.c#L109">109</a>                 <a href="ident?i=put_fs_long">put_fs_long</a>(i,(unsigned long *)tloc);<a name=L110 href="source/kernel/sys.c#L110">110</a>         }<a name=L111 href="source/kernel/sys.c#L111">111</a>         return i;<a name=L112 href="source/kernel/sys.c#L112">112</a> }<a name=L113 href="source/kernel/sys.c#L113">113</a> <a name=L114 href="source/kernel/sys.c#L114">114</a> <b><i>/*</i></b><a name=L115 href="source/kernel/sys.c#L115">115</a> <b><i> * Unprivileged users may change the real user id to the effective uid</i></b><a name=L116 href="source/kernel/sys.c#L116">116</a> <b><i> * or vice versa.</i></b><a name=L117 href="source/kernel/sys.c#L117">117</a> <b><i> */</i></b><a name=L118 href="source/kernel/sys.c#L118">118</a> int <a href="ident?i=sys_setreuid">sys_setreuid</a>(int ruid, int euid)<a name=L119 href="source/kernel/sys.c#L119">119</a> {<a name=L120 href="source/kernel/sys.c#L120">120</a>         int old_ruid = <a href="ident?i=current">current</a>-&gt;uid;<a name=L121 href="source/kernel/sys.c#L121">121</a>         <a name=L122 href="source/kernel/sys.c#L122">122</a>         if (ruid&gt;0) {<a name=L123 href="source/kernel/sys.c#L123">123</a>                 if ((<a href="ident?i=current">current</a>-&gt;euid==ruid) ||<a name=L124 href="source/kernel/sys.c#L124">124</a>                     (old_ruid == ruid) ||<a name=L125 href="source/kernel/sys.c#L125">125</a>                     <a href="ident?i=suser">suser</a>())<a name=L126 href="source/kernel/sys.c#L126">126</a>                         <a href="ident?i=current">current</a>-&gt;uid = ruid;<a name=L127 href="source/kernel/sys.c#L127">127</a>                 else<a name=L128 href="source/kernel/sys.c#L128">128</a>                         return(-<a href="ident?i=EPERM">EPERM</a>);<a name=L129 href="source/kernel/sys.c#L129">129</a>         }<a name=L130 href="source/kernel/sys.c#L130">130</a>         if (euid&gt;0) {<a name=L131 href="source/kernel/sys.c#L131">131</a>                 if ((old_ruid == euid) ||<a name=L132 href="source/kernel/sys.c#L132">132</a>                     (<a href="ident?i=current">current</a>-&gt;euid == euid) ||<a name=L133 href="source/kernel/sys.c#L133">133</a>                     <a href="ident?i=suser">suser</a>())<a name=L134 href="source/kernel/sys.c#L134">134</a>                         <a href="ident?i=current">current</a>-&gt;euid = euid;<a name=L135 href="source/kernel/sys.c#L135">135</a>                 else {<a name=L136 href="source/kernel/sys.c#L136">136</a>                         <a href="ident?i=current">current</a>-&gt;uid = old_ruid;<a name=L137 href="source/kernel/sys.c#L137">137</a>                         return(-<a href="ident?i=EPERM">EPERM</a>);<a name=L138 href="source/kernel/sys.c#L138">138</a>                 }<a name=L139 href="source/kernel/sys.c#L139">139</a>         }<a name=L140 href="source/kernel/sys.c#L140">140</a>         return 0;<a name=L141 href="source/kernel/sys.c#L141">141</a> }<a name=L142 href="source/kernel/sys.c#L142">142</a> <a name=L143 href="source/kernel/sys.c#L143">143</a> int <a href="ident?i=sys_setuid">sys_setuid</a>(int uid)<a name=L144 href="source/kernel/sys.c#L144">144</a> {<a name=L145 href="source/kernel/sys.c#L145">145</a>         return(<a href="ident?i=sys_setreuid">sys_setreuid</a>(uid, uid));<a name=L146 href="source/kernel/sys.c#L146">146</a> }<a name=L147 href="source/kernel/sys.c#L147">147</a> <a name=L148 href="source/kernel/sys.c#L148">148</a> int <a href="ident?i=sys_stime">sys_stime</a>(long * tptr)<a name=L149 href="source/kernel/sys.c#L149">149</a> {<a name=L150 href="source/kernel/sys.c#L150">150</a>         if (!<a href="ident?i=suser">suser</a>())<a name=L151 href="source/kernel/sys.c#L151">151</a>                 return -<a href="ident?i=EPERM">EPERM</a>;<a name=L152 href="source/kernel/sys.c#L152">152</a>         <a href="ident?i=startup_time">startup_time</a> = <a href="ident?i=get_fs_long">get_fs_long</a>((unsigned long *)tptr) - <a href="ident?i=jiffies">jiffies</a>/<a href="ident?i=HZ">HZ</a>;<a name=L153 href="source/kernel/sys.c#L153">153</a>         return 0;<a name=L154 href="source/kernel/sys.c#L154">154</a> }<a name=L155 href="source/kernel/sys.c#L155">155</a> <a name=L156 href="source/kernel/sys.c#L156">156</a> int <a href="ident?i=sys_times">sys_times</a>(struct <a href="ident?i=tms">tms</a> * tbuf)<a name=L157 href="source/kernel/sys.c#L157">157</a> {<a name=L158 href="source/kernel/sys.c#L158">158</a>         if (tbuf) {<a name=L159 href="source/kernel/sys.c#L159">159</a>                 <a href="ident?i=verify_area">verify_area</a>(tbuf,sizeof *tbuf);<a name=L160 href="source/kernel/sys.c#L160">160</a>                 <a href="ident?i=put_fs_long">put_fs_long</a>(<a href="ident?i=current">current</a>-&gt;<a href="ident?i=utime">utime</a>,(unsigned long *)&amp;tbuf-&gt;tms_utime);<a name=L161 href="source/kernel/sys.c#L161">161</a>                 <a href="ident?i=put_fs_long">put_fs_long</a>(<a href="ident?i=current">current</a>-&gt;<a href="ident?i=stime">stime</a>,(unsigned long *)&amp;tbuf-&gt;tms_stime);<a name=L162 href="source/kernel/sys.c#L162">162</a>                 <a href="ident?i=put_fs_long">put_fs_long</a>(<a href="ident?i=current">current</a>-&gt;cutime,(unsigned long *)&amp;tbuf-&gt;tms_cutime);<a name=L163 href="source/kernel/sys.c#L163">163</a>                 <a href="ident?i=put_fs_long">put_fs_long</a>(<a href="ident?i=current">current</a>-&gt;cstime,(unsigned long *)&amp;tbuf-&gt;tms_cstime);<a name=L164 href="source/kernel/sys.c#L164">164</a>         }<a name=L165 href="source/kernel/sys.c#L165">165</a>         return <a href="ident?i=jiffies">jiffies</a>;<a name=L166 href="source/kernel/sys.c#L166">166</a> }<a name=L167 href="source/kernel/sys.c#L167">167</a> <a name=L168 href="source/kernel/sys.c#L168">168</a> int <a href="ident?i=sys_brk">sys_brk</a>(unsigned long end_data_seg)<a name=L169 href="source/kernel/sys.c#L169">169</a> {<a name=L170 href="source/kernel/sys.c#L170">170</a>         if (end_data_seg &gt;= <a href="ident?i=current">current</a>-&gt;end_code &amp;&amp;<a name=L171 href="source/kernel/sys.c#L171">171</a>             end_data_seg &lt; <a href="ident?i=current">current</a>-&gt;start_stack - 16384)<a name=L172 href="source/kernel/sys.c#L172">172</a>                 <a href="ident?i=current">current</a>-&gt;<a href="ident?i=brk">brk</a> = end_data_seg;<a name=L173 href="source/kernel/sys.c#L173">173</a>         return <a href="ident?i=current">current</a>-&gt;<a href="ident?i=brk">brk</a>;<a name=L174 href="source/kernel/sys.c#L174">174</a> }<a name=L175 href="source/kernel/sys.c#L175">175</a> <a name=L176 href="source/kernel/sys.c#L176">176</a> <b><i>/*</i></b><a name=L177 href="source/kernel/sys.c#L177">177</a> <b><i> * This needs some heave checking ...</i></b><a name=L178 href="source/kernel/sys.c#L178">178</a> <b><i> * I just haven't get the stomach for it. I also don't fully</i></b><a name=L179 href="source/kernel/sys.c#L179">179</a> <b><i> * understand sessions/pgrp etc. Let somebody who does explain it.</i></b><a name=L180 href="source/kernel/sys.c#L180">180</a> <b><i> */</i></b><a name=L181 href="source/kernel/sys.c#L181">181</a> int <a href="ident?i=sys_setpgid">sys_setpgid</a>(int pid, int pgid)<a name=L182 href="source/kernel/sys.c#L182">182</a> {<a name=L183 href="source/kernel/sys.c#L183">183</a>         int i;<a name=L184 href="source/kernel/sys.c#L184">184</a> <a name=L185 href="source/kernel/sys.c#L185">185</a>         if (!pid)<a name=L186 href="source/kernel/sys.c#L186">186</a>                 pid = <a href="ident?i=current">current</a>-&gt;pid;<a name=L187 href="source/kernel/sys.c#L187">187</a>         if (!pgid)<a name=L188 href="source/kernel/sys.c#L188">188</a>                 pgid = <a href="ident?i=current">current</a>-&gt;pid;<a name=L189 href="source/kernel/sys.c#L189">189</a>         for (i=0 ; i&lt;<a href="ident?i=NR_TASKS">NR_TASKS</a> ; i++)<a name=L190 href="source/kernel/sys.c#L190">190</a>                 if (<a href="ident?i=task">task</a>[i] &amp;&amp; <a href="ident?i=task">task</a>[i]-&gt;pid==pid) {<a name=L191 href="source/kernel/sys.c#L191">191</a>                         if (<a href="ident?i=task">task</a>[i]-&gt;leader)<a name=L192 href="source/kernel/sys.c#L192">192</a>                                 return -<a href="ident?i=EPERM">EPERM</a>;<a name=L193 href="source/kernel/sys.c#L193">193</a>                         if (<a href="ident?i=task">task</a>[i]-&gt;session != <a href="ident?i=current">current</a>-&gt;session)<a name=L194 href="source/kernel/sys.c#L194">194</a>                                 return -<a href="ident?i=EPERM">EPERM</a>;<a name=L195 href="source/kernel/sys.c#L195">195</a>                         <a href="ident?i=task">task</a>[i]-&gt;pgrp = pgid;<a name=L196 href="source/kernel/sys.c#L196">196</a>                         return 0;<a name=L197 href="source/kernel/sys.c#L197">197</a>                 }<a name=L198 href="source/kernel/sys.c#L198">198</a>         return -<a href="ident?i=ESRCH">ESRCH</a>;<a name=L199 href="source/kernel/sys.c#L199">199</a> }<a name=L200 href="source/kernel/sys.c#L200">200</a> <a name=L201 href="source/kernel/sys.c#L201">201</a> int <a href="ident?i=sys_getpgrp">sys_getpgrp</a>(void)<a name=L202 href="source/kernel/sys.c#L202">202</a> {<a name=L203 href="source/kernel/sys.c#L203">203</a>         return <a href="ident?i=current">current</a>-&gt;pgrp;<a name=L204 href="source/kernel/sys.c#L204">204</a> }<a name=L205 href="source/kernel/sys.c#L205">205</a> <a name=L206 href="source/kernel/sys.c#L206">206</a> int <a href="ident?i=sys_setsid">sys_setsid</a>(void)<a name=L207 href="source/kernel/sys.c#L207">207</a> {<a name=L208 href="source/kernel/sys.c#L208">208</a>         if (<a href="ident?i=current">current</a>-&gt;leader &amp;&amp; !<a href="ident?i=suser">suser</a>())<a name=L209 href="source/kernel/sys.c#L209">209</a>                 return -<a href="ident?i=EPERM">EPERM</a>;<a name=L210 href="source/kernel/sys.c#L210">210</a>         <a href="ident?i=current">current</a>-&gt;leader = 1;<a name=L211 href="source/kernel/sys.c#L211">211</a>         <a href="ident?i=current">current</a>-&gt;session = <a href="ident?i=current">current</a>-&gt;pgrp = <a href="ident?i=current">current</a>-&gt;pid;<a name=L212 href="source/kernel/sys.c#L212">212</a>         <a href="ident?i=current">current</a>-&gt;tty = -1;<a name=L213 href="source/kernel/sys.c#L213">213</a>         return <a href="ident?i=current">current</a>-&gt;pgrp;<a name=L214 href="source/kernel/sys.c#L214">214</a> }<a name=L215 href="source/kernel/sys.c#L215">215</a> <a name=L216 href="source/kernel/sys.c#L216">216</a> int <a href="ident?i=sys_uname">sys_uname</a>(struct <a href="ident?i=utsname">utsname</a> * name)<a name=L217 href="source/kernel/sys.c#L217">217</a> {<a name=L218 href="source/kernel/sys.c#L218">218</a>         static struct <a href="ident?i=utsname">utsname</a> thisname = {<a name=L219 href="source/kernel/sys.c#L219">219</a>                 <i>"linux .0"</i>,<i>"nodename"</i>,<i>"release "</i>,<i>"version "</i>,<i>"machine "</i><a name=L220 href="source/kernel/sys.c#L220">220</a>         };<a name=L221 href="source/kernel/sys.c#L221">221</a>         int i;<a name=L222 href="source/kernel/sys.c#L222">222</a> <a name=L223 href="source/kernel/sys.c#L223">223</a>         if (!name) return -<a href="ident?i=ERROR">ERROR</a>;<a name=L224 href="source/kernel/sys.c#L224">224</a>         <a href="ident?i=verify_area">verify_area</a>(name,sizeof *name);<a name=L225 href="source/kernel/sys.c#L225">225</a>         for(i=0;i&lt;sizeof *name;i++)<a name=L226 href="source/kernel/sys.c#L226">226</a>                 <a href="ident?i=put_fs_byte">put_fs_byte</a>(((char *) &amp;thisname)[i],i+(char *) name);<a name=L227 href="source/kernel/sys.c#L227">227</a>         return 0;<a name=L228 href="source/kernel/sys.c#L228">228</a> }<a name=L229 href="source/kernel/sys.c#L229">229</a> <a name=L230 href="source/kernel/sys.c#L230">230</a> int <a href="ident?i=sys_umask">sys_umask</a>(int mask)<a name=L231 href="source/kernel/sys.c#L231">231</a> {<a name=L232 href="source/kernel/sys.c#L232">232</a>         int old = <a href="ident?i=current">current</a>-&gt;<a href="ident?i=umask">umask</a>;<a name=L233 href="source/kernel/sys.c#L233">233</a> <a name=L234 href="source/kernel/sys.c#L234">234</a>         <a href="ident?i=current">current</a>-&gt;<a href="ident?i=umask">umask</a> = mask &amp; 0777;<a name=L235 href="source/kernel/sys.c#L235">235</a>         return (old);<a name=L236 href="source/kernel/sys.c#L236">236</a> }<a name=L237 href="source/kernel/sys.c#L237">237</a> </pre><hr><div align=center>   [<b><i>源代码浏览</i></b>] [<a href="diff/kernel/sys.c">区别标定</a>] [<a href="ident">标识符搜索</a>] [<a href="search">文本搜索</a>] [<a href="find">文件搜索</a>] </div><hr>本网页由 <a href="http:blurb.html">LXR引擎</a> 自动生成.<br></html>

⌨️ 快捷键说明

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