<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: работа драйвера </title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9136.html</link>
    <description>Всем доброго времени суток! &lt;br&gt;Заставили тут меня разбираться с драйверами под линукс( Но опыт написания этих драйверов напрочь отсутствует( &lt;br&gt;Перейду сразу к вопросам.&lt;br&gt;Есть функция &lt;br&gt;static ssize_t hmc5843_store_rate(struct device *dev,&lt;br&gt;+  struct device_attribute *attr,&lt;br&gt;+  const char *buf, size_t count)&lt;br&gt;+&#123;&lt;br&gt;+struct i2c_client *client = to_i2c_client(dev);&lt;br&gt;+struct hmc5843 *hmc5843 = i2c_get_clientdata(client);&lt;br&gt;+unsigned long val;&lt;br&gt;+int status = count;&lt;br&gt;+&lt;br&gt;+if ((strict_strtol(buf, 10, &amp;val) &amp;lt; 0) &amp;#124;&amp;#124; (val &amp;gt; 6))&lt;br&gt;+return -EINVAL;&lt;br&gt;+mutex_lock(&amp;hmc5843-&amp;gt;lock);&lt;br&gt;+if (hmc5843-&amp;gt;rate != val) &#123;&lt;br&gt;+hmc5843-&amp;gt;rate = val;&lt;br&gt;+hmc5843-&amp;gt;ipdev-&amp;gt;poll_interval = hmc5843_sample_interval&#091;val&#093;;&lt;br&gt;+status = hmc5843_write_register(hmc5843, HMC5843_CFG_A_REG);&lt;br&gt;+&#125;&lt;br&gt;+mutex_unlock(&amp;hmc5843-&amp;gt;lock);&lt;br&gt;+return status;&lt;br&gt;+&#125;&lt;br&gt;&lt;br&gt;Исходник находится по ссылке https://patchwork.kernel.org/patch/66557/&lt;br&gt;Так вот. &lt;br&gt;Вот объявлена переменная &lt;br&gt;unsigned long val; &lt;br&gt;и сразу же через пару строк идет проверка&lt;br&gt;if (hmc</description>

<item>
    <title>работа драйвера  (pavlinux)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9136.html#4</link>
    <pubDate>Thu, 02 Jun 2011 11:18:20 GMT</pubDate>
    <description>&amp;gt; Спасибо всем заранее.&lt;br&gt;&lt;br&gt;1. unsigned long val; должно быть long val;&lt;br&gt;&lt;br&gt;2. Перед использованием можно инициализировать - long val = 7; &lt;br&gt;&lt;br&gt;3. strict_strtol(buf, 10, &amp;val) возвращает 0 в случае успеха, остальные значения - ошибка.&lt;br&gt;&lt;br&gt;4. int status должно быть ssize_t, т.к. вся функция возвращает ssize_t (на 32бита пофиг, на 64 это long int)  &lt;br&gt;&lt;br&gt;---&lt;br&gt;    long val;&lt;br&gt;    ssize_t status = count;&lt;br&gt;&lt;br&gt;    val = 7;&lt;br&gt;    if ((strict_strtol(buf, 10, &amp;val) != 0) &amp;#124;&amp;#124; (val &amp;gt; 6))&lt;br&gt;        return -EINVAL;&lt;br&gt;&lt;br&gt;&lt;br&gt;P.S. &lt;br&gt;Оно уже давно в ядре :)&lt;br&gt;http://lxr.linux.no/#linux+v2.6.39/drivers/staging/iio/magnetometer/hmc5843.c&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>работа драйвера  (delete)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9136.html#3</link>
    <pubDate>Mon, 30 May 2011 02:52:38 GMT</pubDate>
    <description>&amp;gt;&amp;gt; +    if ((strict_strtol(buf, 10, &amp;val) &amp;lt; 0) &amp;#124;&amp;#124; (val &lt;br&gt;&amp;gt;&amp;gt; &amp;gt; 6)) &lt;br&gt;&amp;gt;  но вообще опасно. даже если стандарт скажет, что функция таки вызовется &lt;br&gt;&amp;gt; до ,  всегда &lt;br&gt;&amp;gt; есть возможность нарваться на хитрооптимизирующий компилятор.&lt;br&gt;&amp;gt;  я бы разнес на 2 строки ..&lt;br&gt;&lt;br&gt;Такое сплошь и рядом встречается и пока мир не обрушился. Так что все в порядке.&lt;br&gt;</description>
</item>

<item>
    <title>работа драйвера  (Alex_S)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9136.html#2</link>
    <pubDate>Mon, 30 May 2011 01:26:54 GMT</pubDate>
    <description>&amp;gt; +    if ((strict_strtol(buf, 10, &amp;val) &amp;lt; 0) &amp;#124;&amp;#124; (val &lt;br&gt;&amp;gt; &amp;gt; 6)) &lt;br&gt;&lt;br&gt; но вообще опасно. даже если стандарт скажет, что функция таки вызовется до ,  всегда&lt;br&gt;есть возможность нарваться на хитрооптимизирующий компилятор.&lt;br&gt;&lt;br&gt; я бы разнес на 2 строки .. &lt;br&gt;</description>
</item>

<item>
    <title>работа драйвера  (cryo)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/9136.html#1</link>
    <pubDate>Wed, 18 May 2011 20:55:27 GMT</pubDate>
    <description>+    if ((strict_strtol(buf, 10, &amp;val) &amp;lt; 0) &amp;#124;&amp;#124; (val &amp;gt; 6))&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
