<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EmbLogic &#187; zaffer</title>
	<atom:link href="https://www.emblogic.com/blog/author/zaffer/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.emblogic.com/blog</link>
	<description>Embedded System and ARM Training</description>
	<lastBuildDate>Tue, 03 Mar 2020 13:00:06 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>block driver crashes on add_disk</title>
		<link>https://www.emblogic.com/blog/08/block-driver-crashes-on-add_disk/</link>
		<comments>https://www.emblogic.com/blog/08/block-driver-crashes-on-add_disk/#comments</comments>
		<pubDate>Thu, 09 Aug 2012 04:24:36 +0000</pubDate>
		<dc:creator><![CDATA[zaffer]]></dc:creator>
				<category><![CDATA[Block Driver]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=4583</guid>
		<description><![CDATA[here is the code #include&#8221;header.h&#8221; dev_t dev; &#160; &#160; void bulk_request(struct request_queue *q) { struct request *req; req = blk_fetch_request(q); while (req != NULL) { if (req == NULL &#124;&#124; (req-&#62;cmd_type != REQ_TYPE_FS)) { printk (KERN_NOTICE &#8220;Skip non-CMD request\n&#8221;); __blk_end_request_all(req, &#8230; <a href="https://www.emblogic.com/blog/08/block-driver-crashes-on-add_disk/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>here is the code</p>
<p>#include&#8221;header.h&#8221;</p>
<p>dev_t dev;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>void bulk_request(struct request_queue *q)</p>
<p>{<br />
struct request *req;</p>
<p>req = blk_fetch_request(q);</p>
<p>while (req != NULL)<br />
{</p>
<p>if (req == NULL || (req-&gt;cmd_type != REQ_TYPE_FS))<br />
{<br />
printk (KERN_NOTICE &#8220;Skip non-CMD request\n&#8221;);<br />
__blk_end_request_all(req, -EIO);<br />
continue;</p>
<p>}</p>
<p>}<br />
}</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>int __init start(void)<br />
{<br />
//int reg;</p>
<p>// struct request *disk;</p>
<p>static struct request_queue *Queue;</p>
<p>printk(KERN_INFO &#8220;Begin : %s\n&#8221;,__func__);</p>
<p>printk(KERN_INFO&#8221; HELLO KERNEL&#8221;);<br />
sbullmajor=register_blkdev(sbullmajor,device_name);</p>
<p>if(sbullmajor)<br />
{</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; Registration Sucessful\n &#8220;);</p>
<p>printk(KERN_INFO&#8221;Major no is %d\n&#8221;,sbullmajor);</p>
<p>#endif</p>
<p>}<br />
else</p>
<p>{</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8220;Registartion failed\n &#8220;);</p>
<p>#endif<br />
}<br />
sbulldev=kmalloc(sizeof(struct Sbulldev),GFP_KERNEL);</p>
<p>memset(sbulldev,&#8221;,sizeof(struct Sbulldev));</p>
<p>sbulldev-&gt;size=hardsect_size;</p>
<p>sbulldev-&gt;data=vmalloc(sbulldev-&gt;size);</p>
<p>if(sbulldev-&gt;data ==NULL )</p>
<p>{<br />
#ifdef DEBUG<br />
printk(KERN_INFO &#8221; Memory allocation failed\n &#8220;);</p>
<p>#endif</p>
<p>}<br />
else</p>
<p>{<br />
#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; Memory allocation of block device sucessful\n &#8220;);</p>
<p>#endif<br />
}</p>
<p>spin_lock_init(&amp;sbulldev-&gt;lock);</p>
<p>#ifdef DEBUG<br />
printk(KERN_INFO &#8221; after spin_lock\n &#8220;);</p>
<p>#endif<br />
sbulldev-&gt;gd=alloc_disk(16);</p>
<p>if(sbulldev-&gt;gd==NULL){ //no of minors is 1 no partioning;</p>
<p>#ifdef DEBUG<br />
printk(KERN_INFO &#8221; alloc_disk failed\n &#8220;);</p>
<p>#endif</p>
<p>goto OUT;</p>
<p>}</p>
<p>else</p>
<p>{<br />
#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; alloc_disk sucessful\n &#8220;);</p>
<p>#endif<br />
}<br />
Queue=blk_init_queue(bulk_request,NULL);</p>
<p>blk_queue_logical_block_size(Queue,hardsect_size);</p>
<p>sbulldev-&gt;gd-&gt;major=sbullmajor;</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; sbullmajor\n &#8220;);</p>
<p>#endif</p>
<p>sbulldev-&gt;gd-&gt;minors=sbullminor;<br />
#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; sbullminor\n &#8220;);</p>
<p>#endif</p>
<p>sbulldev-&gt;gd-&gt;first_minor=1;</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; first_minor\n &#8220;);</p>
<p>#endif</p>
<p>sbulldev-&gt;gd-&gt;fops=f_ops;</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; file_operations\n &#8220;);</p>
<p>#endif</p>
<p>sbulldev-&gt;gd-&gt;queue=Queue;</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; Queue\n &#8220;);</p>
<p>#endif</p>
<p>sbulldev-&gt;gd-&gt;private_data=sbulldev;</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; private_data\n &#8220;);</p>
<p>#endif</p>
<p>strcpy(sbulldev-&gt;gd-&gt;disk_name ,&#8221;sbulla&#8221; );</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; sbulla\n &#8220;);</p>
<p>#endif</p>
<p>set_capacity(sbulldev-&gt;gd,hardsect_size);</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; set_capacity\n &#8220;);</p>
<p>#endif<br />
add_disk(sbulldev-&gt;gd);</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; add disk\n &#8220;);</p>
<p>#endif</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8221; End of %s\n &#8220;,__func__);</p>
<p>#endif</p>
<p>OUT:</p>
<p>return -1;</p>
<p>&nbsp;</p>
<p>return 0;</p>
<p>}<br />
void __exit release(void)<br />
{</p>
<p>//int i;</p>
<p>#ifdef DEBUG</p>
<p>printk(KERN_INFO &#8220;exit : %s\n&#8221;,__func__);</p>
<p>#endif<br />
del_gendisk(sbulldev-&gt;gd);</p>
<p>printk(KERN_INFO &#8221; add disk\n &#8220;);</p>
<p>blk_cleanup_queue(sbulldev-&gt;queue);</p>
<p>printk(KERN_INFO &#8221; add disk\n &#8220;);</p>
<p>//put_disk(sbulldev-&gt;gd);</p>
<p>&nbsp;<br />
unregister_blkdev(sbullmajor,device_name);<br />
printk(KERN_INFO &#8220;BYE KERNEL&#8221;);<br />
}<br />
module_init(start);</p>
<p>module_exit(release);</p>
<p>}</p>
<p>the driver crashes  moment insmod ./modules/lkm.ko is done&#8230;..ha i have zero bytes of home drive  does this effect</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/block-driver-crashes-on-add_disk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>block driver crashes</title>
		<link>https://www.emblogic.com/blog/08/block-driver-crashes/</link>
		<comments>https://www.emblogic.com/blog/08/block-driver-crashes/#comments</comments>
		<pubDate>Sun, 05 Aug 2012 13:44:14 +0000</pubDate>
		<dc:creator><![CDATA[zaffer]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[the driver works well but the moment i add_disk it crashes i will appreciate if it anio one helps]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=4415</guid>
		<description><![CDATA[#include i the driver crashes the moment it reaches add_disk&#8230;&#8230;.following are the /var/log/messages&#8230;&#8230;.rest works properly&#8230;.. hope if ani one helps.ya mi home directory has 0 bytes memory Aug 5 10:03:45 zaffer kernel: [ 5936.683085] Begin : start Aug 5 10:03:45 &#8230; <a href="https://www.emblogic.com/blog/08/block-driver-crashes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>#include<br />
i</p>
<p>the driver crashes the moment it reaches add_disk&#8230;&#8230;.following are the /var/log/messages&#8230;&#8230;.rest works properly&#8230;..<br />
hope if ani one helps.ya mi home directory has 0 bytes memory</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683085]<br />
 Begin : start</p>
<p>Aug  5 10:03:45 zaffer kernel:<br />
[ 5936.683087]  HELLO KERNEL</p>
<p>Aug  5 10:03:45 zaffer kernel:[ 5936.683090]  Registration Sucessful</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683091]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683093] Major no is 252</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683134]  Memory allocation of block device sucessful</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683135]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683136]  after spin_lock</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683137]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683145]  alloc_disk sucessful</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683146]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683161]  sbullmajor</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683162]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683163]  sbullminor</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683164]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683165]  first_minor</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683166]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683167]  file_operations</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683168]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683169]  Queue</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683169]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683170]  private_data</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683171]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683172]  sbulla</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683173]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683174]  set_capacity</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683175]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683176] &#8212;&#8212;&#8212;&#8212;[ cut here ]&#8212;&#8212;&#8212;&#8212;<br />
Aug  5 10:03:45 zaffer kernel: [ 5936.683183] WARNING: at block/genhd.c:527 add_disk+0x4d/0xef()</p>
<p>the message at block/genhd.c is as follows<br />
void register_disk(struct gendisk *disk)<br />
{</p>
<p>       struct device *ddev = disk_to_dev(disk);</p>
<p>      struct block_device *bdev;</p>
<p>  struct disk_part_iter piter;</p>
<p>struct hd_struct *part;</p>
<p> int err;</p>
<p>   ddev-&gt;parent = disk-&gt;driverfs_dev;</p>
<p>      dev_set_name(ddev, disk-&gt;disk_name);</p>
<p>      delay uevents, until we scanned partition table </p>
<p>       dev_set_uevent_suppress(ddev, 1);</p>
<p>if (device_add(ddev)) </p>
<p> return;</p>
<p>527      if (!sysfs_deprecated) {</p>
<p>        err = sysfs_create_link(block_depr, &amp;ddev-&gt;kobj,</p>
<p>                                kobject_name(&amp;ddev-&gt;kobj));</p>
<p>           if (err) {</p>
<p>device_del(ddev);</p>
<p>return;<br />
                }</p>
<p>     }</p>
<p>}<br />
nt main()<br />
{<br />
printf(&#8220;hello\n&#8221;);<br />
return 0;<br />
/*<br />
 Aug  5 10:03:45 zaffer kernel:<br />
 [ 5936.683085] Begin : start</p>
<p>Aug  5 10:03:45 zaffer kernel:<br />
[ 5936.683087]  HELLO KERNEL</p>
<p>Aug  5 10:03:45 zaffer kernel:<br />
 [ 5936.683090]  Registration Sucessful</p>
<p>Aug  5 10:03:45 zaffer kernel:<br />
 [ 5936.683091]<br />
Aug  5 10:03:45 zaffer kernel:<br />
[ 5936.683093] Major no is 252</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683134]  Memory allocation of block device sucessful</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683135]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683136]  after spin_lock</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683137]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683145]  alloc_disk sucessful</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683146]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683161]  sbullmajor</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683162]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683163]  sbullminor</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683164]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683165]  first_minor</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683166]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683167]  file_operations</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683168]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683169]  Queue</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683169]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683170]  private_data</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683171]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683172]  sbulla</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683173]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683174]  set_capacity</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683175]</p>
<p>Aug  5 10:03:45 zaffer kernel: [ 5936.683176] &#8212;&#8212;&#8212;&#8212;[ cut here ]&#8212;&#8212;&#8212;&#8212;<br />
Aug  5 10:03:45 zaffer kernel: [ 5936.683183] WARNING: at block/genhd.c:527 add_disk+0x4d/0xef()</p>
<p>the message at block/genhd.c is as follows<br />
void register_disk(struct gendisk *disk)<br />
{</p>
<p>       struct device *ddev = disk_to_dev(disk);</p>
<p>      struct block_device *bdev;</p>
<p>  struct disk_part_iter piter;</p>
<p>struct hd_struct *part;</p>
<p> int err;</p>
<p>   ddev-&gt;parent = disk-&gt;driverfs_dev;</p>
<p>      dev_set_name(ddev, disk-&gt;disk_name);</p>
<p>      delay uevents, until we scanned partition table </p>
<p>       dev_set_uevent_suppress(ddev, 1);</p>
<p>if (device_add(ddev)) </p>
<p> return;</p>
<p>527      if (!sysfs_deprecated) {</p>
<p>        err = sysfs_create_link(block_depr, &amp;ddev-&gt;kobj,</p>
<p>                                kobject_name(&amp;ddev-&gt;kobj));</p>
<p>           if (err) {</p>
<p>device_del(ddev);</p>
<p>return;<br />
                }</p>
<p>     }</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/block-driver-crashes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>parallel port  stpper motor via ioctl by zaffer</title>
		<link>https://www.emblogic.com/blog/07/parallel-port-stpper-motor-via-ioctl-by-zaffer/</link>
		<comments>https://www.emblogic.com/blog/07/parallel-port-stpper-motor-via-ioctl-by-zaffer/#comments</comments>
		<pubDate>Tue, 24 Jul 2012 08:11:12 +0000</pubDate>
		<dc:creator><![CDATA[zaffer]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=4177</guid>
		<description><![CDATA[long scull_ioctl (struct file * filp, unsigned int cmd, unsigned long arg) { struct sculldev *lsculldev; int err=0; lsculldev=filp-&#62;private_data; #ifdef DEBUG printk(KERN_INFO&#8221;In %s function\n&#8221;,__func__); #endif #ifdef DEBUG printk(KERN_INFO&#8221;nalue of cmd is %d\n&#8221;,cmd); #endif if (_IOC_TYPE(cmd) != MAGIC_NUMBER) { #ifdef DEBUG &#8230; <a href="https://www.emblogic.com/blog/07/parallel-port-stpper-motor-via-ioctl-by-zaffer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>long scull_ioctl (struct file * filp, unsigned int cmd, unsigned long arg)<br />
{<br />
struct sculldev *lsculldev;<br />
                int err=0;<br />
                lsculldev=filp-&gt;private_data;</p>
<p>#ifdef DEBUG<br />
printk(KERN_INFO&#8221;In %s function\n&#8221;,__func__);<br />
#endif</p>
<p>#ifdef DEBUG<br />
printk(KERN_INFO&#8221;nalue of cmd is %d\n&#8221;,cmd);<br />
#endif</p>
<p>                if (_IOC_TYPE(cmd) != MAGIC_NUMBER)<br />
        {<br />
                #ifdef DEBUG<br />
                printk(KERN_INFO&#8221; MAGIC value of err  is %d\n&#8221;,err);<br />
                #endif<br />
 return -ENOTTY;<br />
        }<br />
                if (_IOC_NR(cmd) &gt; STEPPER_MOTOR_MAX_NR)<br />
        {<br />
                #ifdef DEBUG<br />
                printk(KERN_INFO&#8221;STEPPER value of err  is %d\n&#8221;,err);<br />
                #endif<br />
                return -ENOTTY;<br />
        }</p>
<p>                if (_IOC_DIR(cmd) &amp; _IOC_READ){<br />
                err = !access_ok(VERIFY_WRITE, (void __user *)arg, _IOC_SIZE(cmd));<br />
                #ifdef DEBUG<br />
                printk(KERN_INFO&#8221; IOC_READ value of err  is %d\n&#8221;,err);<br />
                #endif<br />
        }</p>
<p>else if (_IOC_DIR(cmd) &amp; _IOC_WRITE){<br />
                err = !access_ok(VERIFY_READ, (void __user *)arg, _IOC_SIZE(cmd));<br />
                #ifdef DEBUG<br />
                printk(KERN_INFO&#8221;IOC_WRITE value of err  is %d\n&#8221;,err);<br />
                #endif<br />
                }<br />
                if (err) return -EFAULT;</p>
<p>                switch(cmd)<br />
{<br />
case(MOTOR_START):<br />
{<br />
#ifdef DEBUG<br />
printk(KERN_INFO&#8221;motor start\n&#8221;);<br />
#endif<br />
        outb(0&#215;01,DATA);<br />
        outb(0&#215;04,DATA);<br />
}<br />
case(MOTOR_STOP):<br />
{<br />
        outb(0&#215;00,DATA);<br />
}<br />
case(ANTICLOCKWISE):<br />
{<br />
#ifdef DEBUG<br />
printk(KERN_INFO&#8221;anticlockwise\n&#8221;);<br />
#endif<br />
        outb(0xF1,DATA);<br />
        ssleep(300);<br />
        outb(0xF2,DATA);<br />
        ssleep(300);<br />
        outb(0xF4,DATA);<br />
        ssleep(300);<br />
        outb(0xF8,DATA);<br />
        ssleep(300);<br />
}<br />
case(CLOCKWISE):<br />
{<br />
#ifdef DEBUG<br />
printk(KERN_INFO&#8221;clockwise\n&#8221;);<br />
#endif<br />
        outb(0xF8,DATA);<br />
        ssleep(300);<br />
        outb(0xF4,DATA);<br />
        ssleep(300);<br />
        outb(0xF2,DATA);<br />
        ssleep(300);<br />
        outb(0xF1,DATA);<br />
        ssleep(300);<br />
}<br />
case(INCREASE_SPEED):<br />
{</p>
<p>#ifdef DEBUG<br />
printk(KERN_INFO&#8221;increase speed\n&#8221;);<br />
#endif<br />
        outb(0xF8,DATA);<br />
        ssleep(30000);<br />
        outb(0xF4,DATA);<br />
        ssleep(30000);<br />
        outb(0xF2,DATA);<br />
        ssleep(30000);<br />
        outb(0xF1,DATA);<br />
}<br />
case(INCREASE_SPEED):<br />
{</p>
<p>#ifdef DEBUG<br />
printk(KERN_INFO&#8221;increase speed\n&#8221;);<br />
#endif<br />
        outb(0xF8,DATA);<br />
        ssleep(30000);<br />
        outb(0xF4,DATA);<br />
        ssleep(30000);<br />
        outb(0xF2,DATA);<br />
        ssleep(30000);<br />
        outb(0xF1,DATA);<br />
        ssleep(30000);<br />
}</p>
<p>case(DECREASE_SPEED):<br />
{<br />
#ifdef DEBUG<br />
printk(KERN_INFO&#8221;decrease speed\n&#8221;);<br />
#endif</p>
<p>        outb(0xF8,DATA);<br />
        ssleep(3);<br />
        outb(0xF4,DATA);<br />
outb(0xF2,DATA);<br />
        ssleep(3);<br />
        outb(0xF1,DATA);<br />
        ssleep(3);<br />
}<br />
default:<br />
{</p>
<p>#ifdef DEBUG<br />
printk(KERN_INFO&#8221;value of cmd is %d\n&#8221;,cmd);<br />
#endif</p>
<p>}<br />
}</p>
<p>return 0;<br />
}<br />
&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
when i press any no it reflects the same no in the ioctl but when it goes in switch case the value of cmd is something 0 &#8230;&#8230;&#8230;plz explain&#8230;..i tested on 2 systems but same result</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/parallel-port-stpper-motor-via-ioctl-by-zaffer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>sytem crashes while implementing compleion</title>
		<link>https://www.emblogic.com/blog/06/sytem-crashes-while-implementing-compleion/</link>
		<comments>https://www.emblogic.com/blog/06/sytem-crashes-while-implementing-compleion/#comments</comments>
		<pubDate>Mon, 25 Jun 2012 07:02:46 +0000</pubDate>
		<dc:creator><![CDATA[zaffer]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=3516</guid>
		<description><![CDATA[hi, i am trying o implement completion. i have to simple applications one for read and other for write. my code is as follows struct sculldev{ &#8230;&#8230;&#8230;.. &#8230;&#8230;&#8230;.. struct completiom my_completion; &#8230;&#8230;. &#8230;&#8230;&#8230;&#8230; }; scullread(&#8230;&#8230;..) {declare vriables&#8230;&#8230;struct sculldev *lsculldev; wait_for_completion(lsculldev-&#62;my_completion); &#8230; <a href="https://www.emblogic.com/blog/06/sytem-crashes-while-implementing-compleion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>hi,<br />
i am trying o implement completion. i have to simple applications one for read and other for write.<br />
my code is as follows<br />
struct sculldev{<br />
&#8230;&#8230;&#8230;..<br />
&#8230;&#8230;&#8230;..<br />
struct  completiom my_completion;<br />
&#8230;&#8230;.<br />
&#8230;&#8230;&#8230;&#8230;<br />
}; </p>
<p>scullread(&#8230;&#8230;..)<br />
{declare vriables&#8230;&#8230;struct sculldev *lsculldev;<br />
wait_for_completion(lsculldev-&gt;my_completion);<br />
&#8230;&#8230;&#8230;&#8230;.<br />
}<br />
scull_write(&#8230;&#8230;&#8230;..)<br />
{<br />
declare vriables&#8230;&#8230;struct sculldev *lsculldev;<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
&#8230;&#8230;&#8230;&#8230;code&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;<br />
&#8230;&#8230;&#8230;&#8230;code&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
complete(&amp;lsculldev-&gt;my_completion);<br />
return 0;<br />
}<br />
HOWEVER WHEN I RUN THE APPLICATION THE SYSTEM CRASHES.<br />
the messages in var/log/messages is<br />
BUG: sleeping function called from invalid context at arch/x86/mm fault.c<br />
in_atomic(): 0, irqs_disabled:1, pid 2207</p>
<p>i would appreciate if any one could help</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/sytem-crashes-while-implementing-compleion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ISO C90 forbids mixed declarations and code</title>
		<link>https://www.emblogic.com/blog/03/iso-c90-forbids-mixed-declarations-and-code/</link>
		<comments>https://www.emblogic.com/blog/03/iso-c90-forbids-mixed-declarations-and-code/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 04:43:00 +0000</pubDate>
		<dc:creator><![CDATA[zaffer]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[would you plz tee me wat is to be don e in this case]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=2207</guid>
		<description><![CDATA[make -C /lib/modules/2.6.36.4/build M=/home/zaffer/linux modules make[1]: Entering directory `/usr/src/linux-2.6.36.4&#8242; CC [M] /home/zaffer/linux/lko.o /home/zaffer/linux/lko.c: In function ‘start’: /home/zaffer/linux/lko.c:36:10: warning: ISO C90 forbids mixed declarations and code// WAT IS THE ABOVE LINE?&#8230;&#8230;&#8230;.//&#8230;&#8230;&#8230;&#8230;####### Building modules, stage 2. MODPOST 1 modules WARNING: &#8220;scull_open&#8221; [/home/zaffer/linux/lko.ko] &#8230; <a href="https://www.emblogic.com/blog/03/iso-c90-forbids-mixed-declarations-and-code/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>make -C /lib/modules/2.6.36.4/build M=/home/zaffer/linux modules<br />
make[1]: Entering directory `/usr/src/linux-2.6.36.4&#8242;<br />
CC [M] /home/zaffer/linux/lko.o<br />
/home/zaffer/linux/lko.c: In function ‘start’:<br />
/home/zaffer/linux/lko.c:36:10: warning: ISO C90 forbids mixed declarations and code// WAT IS THE ABOVE LINE?&#8230;&#8230;&#8230;.//&#8230;&#8230;&#8230;&#8230;#######<br />
Building modules, stage 2.<br />
MODPOST 1 modules<br />
WARNING: &#8220;scull_open&#8221; [/home/zaffer/linux/lko.ko] undefined!<br />
CC /home/zaffer/linux/lko.mod.o<br />
LD [M] /home/zaffer/linux/lko.ko<br />
make[1]: Leaving directory `/usr/src/linux-2.6.36.4&#8242;</p>
<p>HEADER FILE<br />
#include<br />
#include<br />
#include<br />
#include<br />
#include<br />
#include<br />
#include</p>
<p>#define SCULL_MAJOR 0</p>
<p>#define SCULL_MINOR 0</p>
<p>#define device_name &#8220;ZAFFER&#8221;</p>
<p>#define device_no 1</p>
<p>#define NO_OF_DEVICES 1</p>
<p>#ifndef DEBUG<br />
#define DEBUG<br />
#endif</p>
<p>//&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;defining file_operations&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>int scull_open(struct inode*,struct file*);<br />
//int scullrelease(struct inode*, struct file* );</p>
<p>//&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.end of functions&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..</p>
<p>//&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.major mainor&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</p>
<p>static int scull_major = SCULL_MAJOR;<br />
static int scull_minor = SCULL_MINOR;<br />
//&#8230;&#8230;&#8230;&#8230;.. &#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.<br />
//&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.structs and declerations&#8230;&#8230;&#8230;&#8230;..<br />
const struct file_operations fops={<br />
.open = scull_open,<br />
// release: scullrelease<br />
};<br />
struct Scull_dev{</p>
<p>struct cdev cdev;</p>
<p>};<br />
struct Scull_dev *sculldev;</p>
<p>//&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;end of declerations&#8230;&#8230;&#8230;&#8230;.<br />
MODULE_AUTHOR(&#8220;Zaffer&#8221;);<br />
MODULE_LICENSE(&#8220;GPL&#8221;);<br />
//&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;..<br />
55,1</p>
<p>LKO.C<br />
int reg;<br />
printk(KERN_INFO &#8220;Begin : %s\n&#8221;,__func__);<br />
printk(KERN_INFO&#8221; HELLO KERNEL&#8221;);<br />
printk(KERN_INFO &#8220;GREAT&#8221;);<br />
if(scull_major)<br />
{<br />
dev=MKDEV(scull_major,scull_minor);<br />
reg=register_chrdev_region(dev,scull_major,device_name);<br />
}<br />
else<br />
{</p>
<p>reg=alloc_chrdev_region(&amp;dev,scull_major,device_no,device_name);<br />
scull_major=MAJOR(dev);<br />
}<br />
if(regcdev.owner=THIS_MODULE;<br />
sculldev-&gt;cdev.ops=&amp;fops;<br />
cdev_init(&amp;(sculldev-&gt;cdev),&amp;fops );<br />
int scull_open(struct inode *inode, struct file *filp)<br />
{<br />
// #ifdef DEBUG<br />
// printk(KERN_INFO &#8220;open function performed sucessfully\n&#8221;);<br />
- // #endif<br />
return 0;<br />
}<br />
cdev_add(&amp;(sculldev-&gt;cdev),dev,1);<br />
return 0;<br />
}<br />
void __exit release(void)<br />
{<br />
#ifdef DEBUG<br />
printk(KERN_INFO &#8220;exit : %s\n&#8221;,__func__);<br />
#endif</p>
<p>printk(KERN_INFO &#8220;BYE KERNEL&#8221;);<br />
unregister_chrdev_region(dev,device_no);<br />
kfree(sculldev);<br />
cdev_del(&amp;(sculldev-&gt;cdev));</p>
<p>}</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/iso-c90-forbids-mixed-declarations-and-code/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>cvs server</title>
		<link>https://www.emblogic.com/blog/01/cvs-server/</link>
		<comments>https://www.emblogic.com/blog/01/cvs-server/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 05:04:28 +0000</pubDate>
		<dc:creator><![CDATA[zaffer]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=1644</guid>
		<description><![CDATA[cvs server sucessfully created . however client operations are yet to be performed zaffer]]></description>
				<content:encoded><![CDATA[<p>cvs server sucessfully created . however client operations are yet to be performed<br />
zaffer</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/01/cvs-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linklidt and scull</title>
		<link>https://www.emblogic.com/blog/10/linklidt-and-scull/</link>
		<comments>https://www.emblogic.com/blog/10/linklidt-and-scull/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 09:54:05 +0000</pubDate>
		<dc:creator><![CDATA[zaffer]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[c basic]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=1167</guid>
		<description><![CDATA[problem is while traversing it gives the segmentation fault. #include&#60;stdio.h&#62; #include&#60;unistd.h&#62; #include&#60;stdlib.h&#62; struct linklist{ char **data; struct linklist *next; }*start,*temp,*last; int main() { int i,j,m,l; int quantams; char y; start=(struct linklist*)malloc(sizeof(struct linklist)); temp=(struct linklist*)malloc(sizeof(struct linklist)); //last-&#62;data=malloc(sizeof(char*)*); //printf(&#8220;enter the dat in &#8230; <a href="https://www.emblogic.com/blog/10/linklidt-and-scull/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>problem is while traversing it gives the segmentation fault.</p>
<p>#include&lt;stdio.h&gt;<br />
#include&lt;unistd.h&gt;<br />
#include&lt;stdlib.h&gt;</p>
<p>struct linklist{<br />
char **data;<br />
struct linklist *next;<br />
}*start,*temp,*last;<br />
int main()<br />
{<br />
int i,j,m,l;<br />
int quantams;<br />
char y;<br />
start=(struct linklist*)malloc(sizeof(struct linklist));<br />
temp=(struct linklist*)malloc(sizeof(struct linklist));<br />
//last-&gt;data=malloc(sizeof(char*)*);<br />
//printf(&#8220;enter the dat in the first node\n&#8221;);<br />
start-&gt;next=NULL;<br />
//scanf(&#8221; %d&#8221;,&amp;start-&gt;data);<br />
temp=start;<br />
j=0;<br />
printf(&#8220;do u wana linklist press y\n&#8221;);<br />
scanf(&#8221; %c&#8221;,&amp;y);<br />
while(y==&#8217;y&#8217;||y==&#8217;Y&#8217;)</p>
<p>{<br />
printf(&#8220;this is %d node\n&#8221;,j+1);<br />
last=(struct linklist*)malloc(sizeof(struct linklist));<br />
last-&gt;data=(char **)malloc(sizeof(char *));<br />
for(m=0;m&lt;=1;m++)<br />
{<br />
last-&gt;data[m]=(char*)malloc(sizeof(char));</p>
<p>for(l=0;l&lt;=1;l++)<br />
{<br />
printf(&#8220;row no %d: column no %d&#8221;,m,l);<br />
printf(&#8221; enter the information\n&#8221;);<br />
scanf(&#8220;%d&#8221;,&amp;quantams);<br />
//last-&gt;data[m][l]=quantams;<br />
*(*(last-&gt;data+m)+l)=quantams;<br />
}<br />
}<br />
last-&gt;next=NULL;<br />
printf(&#8220;last-&gt;next=NULL\n&#8221;);<br />
temp-&gt;next=last;<br />
printf(&#8220;temp-&gt;next=last\n&#8221;);<br />
temp=last;<br />
printf(&#8220;temp=last\n&#8221;);<br />
j++;<br />
printf(&#8220;do you wana continue press y or Y\n&#8221;);<br />
scanf(&#8221; %c&#8221;,&amp;y);<br />
}<br />
j=0;<br />
temp=start;<br />
while(temp-&gt;next!=NULL)<br />
{<br />
printf(&#8220;this is %d node\n&#8221;,j);<br />
for(m=0;m&lt;=1;m++)<br />
{</p>
<p>for(l=0;l&lt;=1;l++)<br />
{<br />
printf(&#8220;row no %d :: column no %d&#8221;,m,l);<br />
printf(&#8221; %d\n&#8221;,*(*(temp-&gt;data+m)+l));<br />
}<br />
}<br />
temp=temp-&gt;next;<br />
j++;<br />
}<br />
return 0;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/10/linklidt-and-scull/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
