<br><br><div class="gmail_quote">On Thu, Oct 20, 2011 at 2:25 AM, Kai Meyer <span dir="ltr">&lt;<a href="mailto:kai@gnukai.com">kai@gnukai.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Unfortunately I can&#39;t share the source code, it belongs to the company I<br>
work for.<br>
<br>
All of cdev_init, cdev_del, and unregister_chrdev_region are void<br>
functions, so they have no return value.<br>
<br>
I check the return value of alloc_chrdev_region and cdev_add and check<br>
for errors with BUG_ON (for now).<br>
<font color="#888888"><br>
-Kai Meyer<br>
</font><div><div></div><div class="h5"><br>
On 10/19/2011 02:18 PM, Daniel Baluta wrote:<br>
&gt; On Wed, Oct 19, 2011 at 7:04 PM, Kai Meyer&lt;<a href="mailto:kai@gnukai.com">kai@gnukai.com</a>&gt;  wrote:<br>
&gt;&gt; I can&#39;t seem to get my character device to remove itself from the<br>
&gt;&gt; /proc/devices list. I&#39;m calling all of the following functions like so:<br>
&gt;&gt;<br>
&gt;&gt; alloc_chrdev_region(&amp;dev, 0, 5, &quot;my_char&quot;);<br>
&gt;&gt; cdev_init(&amp;my_cdev,&amp;my_ops);<br>
&gt;&gt; cdev_add(&amp;my_cdev, MKDEV(my_major, my_minor), 1);<br>
&gt;&gt; cdev_del(&amp;my_cdev);<br>
&gt;&gt; unregister_chrdev_region(my_major, 5);<br>
&gt;&gt;<br>
&gt;&gt; It seems like I&#39;m missing something, but I can&#39;t find it. I&#39;m<br>
&gt;&gt; referencing the Linux Device Drivers v3, chapter 3. In the example code,<br>
&gt;&gt; the scull_cleanup_module function calls cdev_dell and<br>
&gt;&gt; unregister_chrdev_region, just like I do.<br>
&gt;&gt;<br>
&gt;&gt; To be clear, after I unload my module (after calling cdev_del and<br>
&gt;&gt; unregister_chrdev_region), my &quot;my_char&quot; string still shows up in<br>
&gt;&gt; /proc/devices.<br>
&gt; Did you check  return codes for all functions?<br>
&gt; Also, can you post a link to the code?<br>
&gt;<br>
&gt; thanks,<br>
&gt; Daniel.<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Kernelnewbies mailing list<br>
&gt; <a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
&gt; <a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
<br>
_______________________________________________<br>
Kernelnewbies mailing list<br>
<a href="mailto:Kernelnewbies@kernelnewbies.org">Kernelnewbies@kernelnewbies.org</a><br>
<a href="http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies" target="_blank">http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies</a><br>
</div></div></blockquote></div><br>During cleanup i think you need to call function unregister_chrdev_region().<br><br>Regards,<br>Rohan Puri<br>