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

📄 toshiba.c.htm

📁 光驱cdrom读写源代码,scsi命令解析
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<a class="hl" name="70">     70 </a>	<b>if</b> (<a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=fd">fd</a>, <a href="/source/s?defs=scmd">scmd</a>) &lt; <span class="n">0</span>)<a class="l" name="71">     71 </a>		<b>return</b> (<span class="n">0</span>);<a class="l" name="72">     72 </a>	<b>return</b> (<span class="n">1</span>);<a class="l" name="73">     73 </a>}<a class="l" name="74">     74 </a><a class="l" name="75">     75 </a><b>int</b><a class="l" name="76">     76 </a><a href="/source/s?defs=toshiba_read_audio">toshiba_read_audio</a>(<a href="/source/s?defs=cd_device">cd_device</a> *<a href="/source/s?defs=target">target</a>, <a href="/source/s?defs=uint_t">uint_t</a> <a href="/source/s?defs=start_blk">start_blk</a>, <a href="/source/s?defs=uint_t">uint_t</a> <a href="/source/s?defs=nblk">nblk</a>,<a class="l" name="77">     77 </a>    <a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=buf">buf</a>)<a class="l" name="78">     78 </a>{<a class="l" name="79">     79 </a>	<b>struct</b> <a href="/source/s?defs=uscsi_cmd">uscsi_cmd</a> *<a href="/source/s?defs=scmd">scmd</a>;<a class="hl" name="80">     80 </a>	<b>int</b> <a href="/source/s?defs=ret">ret</a>, <a href="/source/s?defs=retry">retry</a>;<a class="l" name="81">     81 </a><a class="l" name="82">     82 </a>	<a href="/source/s?defs=scmd">scmd</a> = <a href="/source/s?defs=get_uscsi_cmd">get_uscsi_cmd</a>();<a class="l" name="83">     83 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_flags">uscsi_flags</a> = <a href="/source/s?defs=USCSI_READ">USCSI_READ</a>|<a href="/source/s?defs=USCSI_SILENT">USCSI_SILENT</a>;<a class="l" name="84">     84 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_timeout">uscsi_timeout</a> = <span class="n">60</span>;<a class="l" name="85">     85 </a>	((<a href="/source/s?defs=uchar_t">uchar_t</a> *)<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>)[<span class="n">0</span>] = <a href="/source/s?defs=READ_AUDIO_CMD">READ_AUDIO_CMD</a>;<a class="l" name="86">     86 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">5</span>] = <a href="/source/s?defs=start_blk">start_blk</a> &amp; <span class="n">0xff</span>;<a class="l" name="87">     87 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">4</span>] = (<a href="/source/s?defs=start_blk">start_blk</a> &gt;&gt; <span class="n">8</span>) &amp; <span class="n">0xff</span>;<a class="l" name="88">     88 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">3</span>] = (<a href="/source/s?defs=start_blk">start_blk</a> &gt;&gt; <span class="n">16</span>) &amp; <span class="n">0xff</span>;<a class="l" name="89">     89 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">2</span>] = (<a href="/source/s?defs=start_blk">start_blk</a> &gt;&gt; <span class="n">24</span>) &amp; <span class="n">0xff</span>;<a class="hl" name="90">     90 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">9</span>] = <a href="/source/s?defs=nblk">nblk</a> &amp; <span class="n">0xff</span>;<a class="l" name="91">     91 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">8</span>] = (<a href="/source/s?defs=nblk">nblk</a> &gt;&gt; <span class="n">8</span>) &amp; <span class="n">0xff</span>;<a class="l" name="92">     92 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">7</span>] = (<a href="/source/s?defs=nblk">nblk</a> &gt;&gt; <span class="n">16</span>) &amp; <span class="n">0xff</span>;<a class="l" name="93">     93 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">6</span>] = (<a href="/source/s?defs=nblk">nblk</a> &gt;&gt; <span class="n">24</span>) &amp; <span class="n">0xff</span>;<a class="l" name="94">     94 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdblen">uscsi_cdblen</a> = <span class="n">12</span>;<a class="l" name="95">     95 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_bufaddr">uscsi_bufaddr</a> = (<b>char</b> *)<a href="/source/s?defs=buf">buf</a>;<a class="l" name="96">     96 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_buflen">uscsi_buflen</a> = <a href="/source/s?defs=nblk">nblk</a>*<span class="n">2352</span>;<a class="l" name="97">     97 </a><a class="l" name="98">     98 </a>	<b>for</b> (<a href="/source/s?defs=retry">retry</a> = <span class="n">0</span>; <a href="/source/s?defs=retry">retry</a> &lt; <span class="n">3</span>; <a href="/source/s?defs=retry">retry</a>++) {<a class="l" name="99">     99 </a>		<a href="/source/s?defs=ret">ret</a> = <a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=target">target</a>-&gt;<a href="/source/s?defs=d_fd">d_fd</a>, <a href="/source/s?defs=scmd">scmd</a>);<a class="hl" name="100">    100 </a>		<b>if</b> (<a href="/source/s?defs=ret">ret</a> &gt;= <span class="n">0</span>)<a class="l" name="101">    101 </a>			<b>break</b>;<a class="l" name="102">    102 </a>	}<a class="l" name="103">    103 </a><a class="l" name="104">    104 </a>	<b>if</b> (<a href="/source/s?defs=ret">ret</a> &lt; <span class="n">0</span>)<a class="l" name="105">    105 </a>		<b>return</b> (<span class="n">0</span>);<a class="l" name="106">    106 </a>	<b>return</b> (<span class="n">1</span>);<a class="l" name="107">    107 </a>}<a class="l" name="108">    108 </a><a class="l" name="109">    109 </a><b>int</b><a class="hl" name="110">    110 </a><a href="/source/s?defs=toshiba_speed_ctrl">toshiba_speed_ctrl</a>(<a href="/source/s?defs=cd_device">cd_device</a> *<a href="/source/s?defs=dev">dev</a>, <b>int</b> <a href="/source/s?defs=cmd">cmd</a>, <b>int</b> <a href="/source/s?defs=speed">speed</a>)<a class="l" name="111">    111 </a>{<a class="l" name="112">    112 </a>	<a href="/source/s?defs=uchar_t">uchar_t</a> *<a href="/source/s?defs=mpage">mpage</a>;<a class="l" name="113">    113 </a>	<b>struct</b> <a href="/source/s?defs=uscsi_cmd">uscsi_cmd</a> *<a href="/source/s?defs=scmd">scmd</a>;<a class="l" name="114">    114 </a>	<b>int</b> <a href="/source/s?defs=ret">ret</a>;<a class="l" name="115">    115 </a><a class="l" name="116">    116 </a>	<b>if</b> ((<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=GET_WRITE_SPEED">GET_WRITE_SPEED</a>) || (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=SET_WRITE_SPEED">SET_WRITE_SPEED</a>)) {<a class="l" name="117">    117 </a>		<b>if</b> (<a href="/source/s?defs=debug">debug</a>) {<a class="l" name="118">    118 </a>			(<b>void</b>) <a href="/source/s?defs=printf">printf</a>(<span class="s">"toshiba_speed_ctrl: WRONG CMD %d\n"</span>,<a class="l" name="119">    119 </a>			    <a href="/source/s?defs=cmd">cmd</a>);<a class="hl" name="120">    120 </a>		}<a class="l" name="121">    121 </a>		<b>return</b> (<span class="n">0</span>);<a class="l" name="122">    122 </a>	}<a class="l" name="123">    123 </a><a class="l" name="124">    124 </a>	<b>if</b> (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=SET_READ_SPEED">SET_READ_SPEED</a>) {<a class="l" name="125">    125 </a>		<b>if</b> (<a href="/source/s?defs=dev">dev</a>-&gt;<a href="/source/s?defs=d_cap">d_cap</a> &amp; <a href="/source/s?defs=DEV_CAP_SETTING_SPEED_NOT_ALLOWED">DEV_CAP_SETTING_SPEED_NOT_ALLOWED</a>) {<a class="l" name="126">    126 </a>			<b>if</b> (<a href="/source/s?defs=verbose">verbose</a>)<a class="l" name="127">    127 </a>				<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<a class="l" name="128">    128 </a>				    <span class="s">"Cannot set speed on this device.\n"</span>));<a class="l" name="129">    129 </a>			<b>return</b> (<span class="n">0</span>);<a class="hl" name="130">    130 </a>		}<a class="l" name="131">    131 </a>		<b>if</b> (<a href="/source/s?defs=speed">speed</a> == <span class="n">32</span>) {<a class="l" name="132">    132 </a>			<b>if</b> (<a href="/source/s?defs=strncmp">strncmp</a>(<span class="s">"SUN32XCD"</span>,<a class="l" name="133">    133 </a>			    (<b>const</b> <b>char</b> *)&amp;<a href="/source/s?defs=dev">dev</a>-&gt;<a href="/source/s?defs=d_inq">d_inq</a>[<span class="n">24</span>], <span class="n">8</span>) == <span class="n">0</span>)<a class="l" name="134">    134 </a>				<b>return</b> (<span class="n">1</span>);<a class="l" name="135">    135 </a>		}<a class="l" name="136">    136 </a>		<b>if</b> ((<a href="/source/s?defs=speed">speed</a> != <span class="n">1</span>) &amp;&amp; (<a href="/source/s?defs=speed">speed</a> != <span class="n">2</span>) &amp;&amp; (<a href="/source/s?defs=speed">speed</a> != <span class="n">4</span>) &amp;&amp;<a class="l" name="137">    137 </a>		    (<a href="/source/s?defs=speed">speed</a> != <span class="n">12</span>)) {<a class="l" name="138">    138 </a>			<b>if</b> (<a href="/source/s?defs=verbose">verbose</a>)<a class="l" name="139">    139 </a>				<a href="/source/s?defs=err_msg">err_msg</a>(<a href="/source/s?defs=gettext">gettext</a>(<a class="hl" name="140">    140 </a>				<span class="s">"%dx speed is not supported by the device.\n"</span>));<a class="l" name="141">    141 </a>			<b>return</b> (<span class="n">0</span>);<a class="l" name="142">    142 </a>		}<a class="l" name="143">    143 </a>	}<a class="l" name="144">    144 </a><a class="l" name="145">    145 </a>	<a href="/source/s?defs=ret">ret</a> = <span class="n">0</span>;<a class="l" name="146">    146 </a>	<a href="/source/s?defs=mpage">mpage</a> = (<a href="/source/s?defs=uchar_t">uchar_t</a> *)<a href="/source/s?defs=my_zalloc">my_zalloc</a>(<span class="n">16</span>);<a class="l" name="147">    147 </a>	<a href="/source/s?defs=scmd">scmd</a> = <a href="/source/s?defs=get_uscsi_cmd">get_uscsi_cmd</a>();<a class="l" name="148">    148 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_flags">uscsi_flags</a> = <a href="/source/s?defs=USCSI_READ">USCSI_READ</a>|<a href="/source/s?defs=USCSI_SILENT">USCSI_SILENT</a>;<a class="l" name="149">    149 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_timeout">uscsi_timeout</a> = <span class="n">60</span>;<a class="hl" name="150">    150 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdblen">uscsi_cdblen</a> = <span class="n">6</span>;<a class="l" name="151">    151 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_bufaddr">uscsi_bufaddr</a> = (<b>char</b> *)<a href="/source/s?defs=mpage">mpage</a>;<a class="l" name="152">    152 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_buflen">uscsi_buflen</a> = <span class="n">16</span>;<a class="l" name="153">    153 </a>	<span class="c">/* 6 byte mode sense for older drives */</span><a class="l" name="154">    154 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">0</span>] = <a href="/source/s?defs=MODE_SENSE_6_CMD">MODE_SENSE_6_CMD</a>;<a class="l" name="155">    155 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">2</span>] = <span class="n">0x31</span>;<a class="l" name="156">    156 </a>	<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">4</span>] = <span class="n">16</span>;<a class="l" name="157">    157 </a>	<b>if</b> (<a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=dev">dev</a>-&gt;<a href="/source/s?defs=d_fd">d_fd</a>, <a href="/source/s?defs=scmd">scmd</a>) &lt; <span class="n">0</span>)<a class="l" name="158">    158 </a>		<b>goto</b> <a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>;<a class="l" name="159">    159 </a>	<b>if</b> (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=GET_READ_SPEED">GET_READ_SPEED</a>) {<a class="hl" name="160">    160 </a>		<a href="/source/s?defs=ret">ret</a> = <a href="/source/s?defs=speed_tbl">speed_tbl</a>[<a href="/source/s?defs=mpage">mpage</a>[<span class="n">14</span>] &amp; <span class="n">0x3</span>];<a class="l" name="161">    161 </a>		<b>goto</b> <a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>;<a class="l" name="162">    162 </a>	}<a class="l" name="163">    163 </a>	<b>if</b> (<a href="/source/s?defs=cmd">cmd</a> == <a href="/source/s?defs=SET_READ_SPEED">SET_READ_SPEED</a>) {<a class="l" name="164">    164 </a>		(<b>void</b>) <a href="/source/s?defs=memset">memset</a>(<a href="/source/s?defs=mpage">mpage</a>, <span class="n">0</span>, <span class="n">9</span>);<a class="l" name="165">    165 </a>		<a href="/source/s?defs=mpage">mpage</a>[<span class="n">3</span>] = <span class="n">8</span>;<a class="l" name="166">    166 </a>		<a href="/source/s?defs=mpage">mpage</a>[<span class="n">12</span>] = <span class="n">0x31</span>;<a class="l" name="167">    167 </a>		<a href="/source/s?defs=mpage">mpage</a>[<span class="n">13</span>] = <span class="n">2</span>;<a class="l" name="168">    168 </a>		<a href="/source/s?defs=mpage">mpage</a>[<span class="n">14</span>] = <a href="/source/s?defs=rev_speed_tbl">rev_speed_tbl</a>[<a href="/source/s?defs=speed">speed</a>];<a class="l" name="169">    169 </a>		<a href="/source/s?defs=scmd">scmd</a> = <a href="/source/s?defs=get_uscsi_cmd">get_uscsi_cmd</a>();<a class="hl" name="170">    170 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_flags">uscsi_flags</a> = <a href="/source/s?defs=USCSI_WRITE">USCSI_WRITE</a>|<a href="/source/s?defs=USCSI_SILENT">USCSI_SILENT</a>;<a class="l" name="171">    171 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_timeout">uscsi_timeout</a> = <span class="n">60</span>;<a class="l" name="172">    172 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdblen">uscsi_cdblen</a> = <span class="n">6</span>;<a class="l" name="173">    173 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_bufaddr">uscsi_bufaddr</a> = (<b>char</b> *)<a href="/source/s?defs=mpage">mpage</a>;<a class="l" name="174">    174 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_buflen">uscsi_buflen</a> = <span class="n">16</span>;<a class="l" name="175">    175 </a>		<span class="c">/* 6 byte mode sense command for older drives */</span><a class="l" name="176">    176 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">0</span>] = <a href="/source/s?defs=MODE_SELECT_6_CMD">MODE_SELECT_6_CMD</a>;<a class="l" name="177">    177 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">1</span>] = <span class="n">0x10</span>;<a class="l" name="178">    178 </a>		<a href="/source/s?defs=scmd">scmd</a>-&gt;<a href="/source/s?defs=uscsi_cdb">uscsi_cdb</a>[<span class="n">4</span>] = <span class="n">16</span>;<a class="l" name="179">    179 </a>		<b>if</b> (<a href="/source/s?defs=uscsi">uscsi</a>(<a href="/source/s?defs=dev">dev</a>-&gt;<a href="/source/s?defs=d_fd">d_fd</a>, <a href="/source/s?defs=scmd">scmd</a>) &lt; <span class="n">0</span>)<a class="hl" name="180">    180 </a>			<b>goto</b> <a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>;<a class="l" name="181">    181 </a>		<a href="/source/s?defs=ret">ret</a> = <span class="n">1</span>;<a class="l" name="182">    182 </a>	}<a class="l" name="183">    183 </a><a href="/source/s?defs=end_speed_ctrl">end_speed_ctrl</a>:<a class="l" name="184">    184 </a>	<a href="/source/s?defs=free">free</a>(<a href="/source/s?defs=mpage">mpage</a>);<a class="l" name="185">    185 </a>	<b>return</b> (<a href="/source/s?defs=ret">ret</a>);<a class="l" name="186">    186 </a>}<a class="l" name="187">    187 </a></pre></div><div id="Footer"><p class="Center"><a href="http://www.opensolaris.org/os/project/opengrok/"><img src="/source/default/img/servedby.png" alt="Served by OpenGrok" title="Served by OpenGrok"/></a></p><p class="Center"><a href="http://www.opensolaris.org/os/tou/">Terms of Use</a> |<a href="http://www.sun.com/privacy/">Privacy</a> |<a href="http://www.opensolaris.org/os/trademark/">Trademarks</a> |<a href="http://www.opensolaris.org/os/copyrights/">Copyright Policy</a> |<a href="http://www.opensolaris.org/os/site_guidelines/">Site Guidelines</a> |<a href="http://www.opensolaris.org/os/about/help/">Help</a><br />Your use of this web site or any of its content or software indicates your agreement to be bound by these Terms of Use.<br />Copyright &copy; 1995-2008 Sun Microsystems, Inc.<br /></p><script type="text/javascript" src="http://www.opensolaris.org/js/s_code_remote.js"></script></div></body></html>

⌨️ 快捷键说明

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