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

📄 ramdisk.c

📁 linux0.11 version(301k)
💻 C
📖 第 1 页 / 共 2 页
字号:
 <a name=L54 href="source/kernel/blk_drv/ramdisk.c#L54">54</a>         int     i; <a name=L55 href="source/kernel/blk_drv/ramdisk.c#L55">55</a>         char    *cp; <a name=L56 href="source/kernel/blk_drv/ramdisk.c#L56">56</a>  <a name=L57 href="source/kernel/blk_drv/ramdisk.c#L57">57</a>         <a href="ident?i=blk_dev">blk_dev</a>[<a href="ident?i=MAJOR_NR">MAJOR_NR</a>].request_fn = <a href="ident?i=DEVICE_REQUEST">DEVICE_REQUEST</a>; <a name=L58 href="source/kernel/blk_drv/ramdisk.c#L58">58</a>         <a href="ident?i=rd_start">rd_start</a> = (char *) mem_start; <a name=L59 href="source/kernel/blk_drv/ramdisk.c#L59">59</a>         <a href="ident?i=rd_length">rd_length</a> = length; <a name=L60 href="source/kernel/blk_drv/ramdisk.c#L60">60</a>         cp = <a href="ident?i=rd_start">rd_start</a>; <a name=L61 href="source/kernel/blk_drv/ramdisk.c#L61">61</a>         for (i=0; i &lt; length; i++) <a name=L62 href="source/kernel/blk_drv/ramdisk.c#L62">62</a>                 *cp++ = <i>'\0'</i>; <a name=L63 href="source/kernel/blk_drv/ramdisk.c#L63">63</a>         return(length); <a name=L64 href="source/kernel/blk_drv/ramdisk.c#L64">64</a> } <a name=L65 href="source/kernel/blk_drv/ramdisk.c#L65">65</a>  <a name=L66 href="source/kernel/blk_drv/ramdisk.c#L66">66</a> <b><i>/*</i></b> <a name=L67 href="source/kernel/blk_drv/ramdisk.c#L67">67</a> <b><i> * If the root device is the ram disk, try to load it.</i></b> <a name=L68 href="source/kernel/blk_drv/ramdisk.c#L68">68</a> <b><i> * In order to do this, the root device is originally set to the</i></b> <a name=L69 href="source/kernel/blk_drv/ramdisk.c#L69">69</a> <b><i> * floppy, and we later change it to be ram disk.</i></b> <a name=L70 href="source/kernel/blk_drv/ramdisk.c#L70">70</a> <b><i> */</i></b> <a name=L71 href="source/kernel/blk_drv/ramdisk.c#L71">71</a> void <a href="ident?i=rd_load">rd_load</a>(void) <a name=L72 href="source/kernel/blk_drv/ramdisk.c#L72">72</a> { <a name=L73 href="source/kernel/blk_drv/ramdisk.c#L73">73</a>         struct <a href="ident?i=buffer_head">buffer_head</a> *bh; <a name=L74 href="source/kernel/blk_drv/ramdisk.c#L74">74</a>         struct <a href="ident?i=super_block">super_block</a>      s; <a name=L75 href="source/kernel/blk_drv/ramdisk.c#L75">75</a>         int             block = 256;    <b><i>/* Start at block 256 */</i></b> <a name=L76 href="source/kernel/blk_drv/ramdisk.c#L76">76</a>         int             i = 1; <a name=L77 href="source/kernel/blk_drv/ramdisk.c#L77">77</a>         int             nblocks; <a name=L78 href="source/kernel/blk_drv/ramdisk.c#L78">78</a>         char            *cp;            <b><i>/* Move pointer */</i></b> <a name=L79 href="source/kernel/blk_drv/ramdisk.c#L79">79</a>          <a name=L80 href="source/kernel/blk_drv/ramdisk.c#L80">80</a>         if (!<a href="ident?i=rd_length">rd_length</a>) <a name=L81 href="source/kernel/blk_drv/ramdisk.c#L81">81</a>                 return; <a name=L82 href="source/kernel/blk_drv/ramdisk.c#L82">82</a>         <a href="ident?i=printk">printk</a>(<i>"Ram disk: %d bytes, starting at 0x%x\n"</i>, <a href="ident?i=rd_length">rd_length</a>, <a name=L83 href="source/kernel/blk_drv/ramdisk.c#L83">83</a>                 (int) <a href="ident?i=rd_start">rd_start</a>); <a name=L84 href="source/kernel/blk_drv/ramdisk.c#L84">84</a>         if (<a href="ident?i=MAJOR">MAJOR</a>(<a href="ident?i=ROOT_DEV">ROOT_DEV</a>) != 2) <a name=L85 href="source/kernel/blk_drv/ramdisk.c#L85">85</a>                 return; <a name=L86 href="source/kernel/blk_drv/ramdisk.c#L86">86</a>         bh = <a href="ident?i=breada">breada</a>(<a href="ident?i=ROOT_DEV">ROOT_DEV</a>,block+1,block,block+2,-1); <a name=L87 href="source/kernel/blk_drv/ramdisk.c#L87">87</a>         if (!bh) { <a name=L88 href="source/kernel/blk_drv/ramdisk.c#L88">88</a>                 <a href="ident?i=printk">printk</a>(<i>"Disk error while looking for ramdisk!\n"</i>); <a name=L89 href="source/kernel/blk_drv/ramdisk.c#L89">89</a>                 return; <a name=L90 href="source/kernel/blk_drv/ramdisk.c#L90">90</a>         } <a name=L91 href="source/kernel/blk_drv/ramdisk.c#L91">91</a>         *((struct <a href="ident?i=d_super_block">d_super_block</a> *) &amp;s) = *((struct <a href="ident?i=d_super_block">d_super_block</a> *) bh-&gt;b_data); <a name=L92 href="source/kernel/blk_drv/ramdisk.c#L92">92</a>         <a href="ident?i=brelse">brelse</a>(bh); <a name=L93 href="source/kernel/blk_drv/ramdisk.c#L93">93</a>         if (s.s_magic != <a href="ident?i=SUPER_MAGIC">SUPER_MAGIC</a>) <a name=L94 href="source/kernel/blk_drv/ramdisk.c#L94">94</a>                 <b><i>/* No ram disk image present, assume normal floppy boot */</i></b> <a name=L95 href="source/kernel/blk_drv/ramdisk.c#L95">95</a>                 return; <a name=L96 href="source/kernel/blk_drv/ramdisk.c#L96">96</a>         nblocks = s.s_nzones &lt;&lt; s.s_log_zone_size; <a name=L97 href="source/kernel/blk_drv/ramdisk.c#L97">97</a>         if (nblocks &gt; (<a href="ident?i=rd_length">rd_length</a> &gt;&gt; <a href="ident?i=BLOCK_SIZE_BITS">BLOCK_SIZE_BITS</a>)) { <a name=L98 href="source/kernel/blk_drv/ramdisk.c#L98">98</a>                 <a href="ident?i=printk">printk</a>(<i>"Ram disk image too big!  (%d blocks, %d avail)\n"</i>,  <a name=L99 href="source/kernel/blk_drv/ramdisk.c#L99">99</a>                         nblocks, <a href="ident?i=rd_length">rd_length</a> &gt;&gt; <a href="ident?i=BLOCK_SIZE_BITS">BLOCK_SIZE_BITS</a>);<a name=L100 href="source/kernel/blk_drv/ramdisk.c#L100">100</a>                 return;<a name=L101 href="source/kernel/blk_drv/ramdisk.c#L101">101</a>         }<a name=L102 href="source/kernel/blk_drv/ramdisk.c#L102">102</a>         <a href="ident?i=printk">printk</a>(<i>"Loading %d bytes into ram disk... 0000k"</i>, <a name=L103 href="source/kernel/blk_drv/ramdisk.c#L103">103</a>                 nblocks &lt;&lt; <a href="ident?i=BLOCK_SIZE_BITS">BLOCK_SIZE_BITS</a>);<a name=L104 href="source/kernel/blk_drv/ramdisk.c#L104">104</a>         cp = <a href="ident?i=rd_start">rd_start</a>;<a name=L105 href="source/kernel/blk_drv/ramdisk.c#L105">105</a>         while (nblocks) {<a name=L106 href="source/kernel/blk_drv/ramdisk.c#L106">106</a>                 if (nblocks &gt; 2) <a name=L107 href="source/kernel/blk_drv/ramdisk.c#L107">107</a>                         bh = <a href="ident?i=breada">breada</a>(<a href="ident?i=ROOT_DEV">ROOT_DEV</a>, block, block+1, block+2, -1);<a name=L108 href="source/kernel/blk_drv/ramdisk.c#L108">108</a>                 else<a name=L109 href="source/kernel/blk_drv/ramdisk.c#L109">109</a>                         bh = <a href="ident?i=bread">bread</a>(<a href="ident?i=ROOT_DEV">ROOT_DEV</a>, block);<a name=L110 href="source/kernel/blk_drv/ramdisk.c#L110">110</a>                 if (!bh) {<a name=L111 href="source/kernel/blk_drv/ramdisk.c#L111">111</a>                         <a href="ident?i=printk">printk</a>(<i>"I/O error on block %d, aborting load\n"</i>, <a name=L112 href="source/kernel/blk_drv/ramdisk.c#L112">112</a>                                 block);<a name=L113 href="source/kernel/blk_drv/ramdisk.c#L113">113</a>                         return;<a name=L114 href="source/kernel/blk_drv/ramdisk.c#L114">114</a>                 }<a name=L115 href="source/kernel/blk_drv/ramdisk.c#L115">115</a>                 (void) <a href="ident?i=memcpy">memcpy</a>(cp, bh-&gt;b_data, <a href="ident?i=BLOCK_SIZE">BLOCK_SIZE</a>);<a name=L116 href="source/kernel/blk_drv/ramdisk.c#L116">116</a>                 <a href="ident?i=brelse">brelse</a>(bh);<a name=L117 href="source/kernel/blk_drv/ramdisk.c#L117">117</a>                 <a href="ident?i=printk">printk</a>(<i>"\010\010\010\010\010%4dk"</i>,i);<a name=L118 href="source/kernel/blk_drv/ramdisk.c#L118">118</a>                 cp += <a href="ident?i=BLOCK_SIZE">BLOCK_SIZE</a>;<a name=L119 href="source/kernel/blk_drv/ramdisk.c#L119">119</a>                 block++;<a name=L120 href="source/kernel/blk_drv/ramdisk.c#L120">120</a>                 nblocks--;<a name=L121 href="source/kernel/blk_drv/ramdisk.c#L121">121</a>                 i++;<a name=L122 href="source/kernel/blk_drv/ramdisk.c#L122">122</a>         }<a name=L123 href="source/kernel/blk_drv/ramdisk.c#L123">123</a>         <a href="ident?i=printk">printk</a>(<i>"\010\010\010\010\010done \n"</i>);<a name=L124 href="source/kernel/blk_drv/ramdisk.c#L124">124</a>         <a href="ident?i=ROOT_DEV">ROOT_DEV</a>=0x0101;<a name=L125 href="source/kernel/blk_drv/ramdisk.c#L125">125</a> }<a name=L126 href="source/kernel/blk_drv/ramdisk.c#L126">126</a> </pre><hr><div align=center>   [<b><i>源代码浏览</i></b>] [<a href="diff/kernel/blk_drv/ramdisk.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 + -