<?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; char driver</title>
	<atom:link href="https://www.emblogic.com/blog/tag/char-driver/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>What is Character Driver?</title>
		<link>https://www.emblogic.com/blog/02/what-is-character-driver/</link>
		<comments>https://www.emblogic.com/blog/02/what-is-character-driver/#comments</comments>
		<pubDate>Sun, 21 Feb 2016 12:10:16 +0000</pubDate>
		<dc:creator><![CDATA[Ankur Garg]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[char driver]]></category>
		<category><![CDATA[Character Device Driver]]></category>
		<category><![CDATA[driver]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=13296</guid>
		<description><![CDATA[A character device driver is one that transfers data directly to and from a user process. This is the most common type of device driver and there are plenty of simple examples in the source tree. Character device drivers may &#8230; <a href="https://www.emblogic.com/blog/02/what-is-character-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">A character device driver is one that transfers data directly to and from a user process. </span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">This is the most common type of device driver and there are plenty of simple examples in the source tree.</span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">Character device drivers may transfer data between a user-level process and the device using any scheme other than the system buffer cache. </span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">Character drivers control devices such as :-</span></span></span></p>
<p>&nbsp;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">* network cards</span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">* terminal devices</span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">* printers</span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">* specialized devices such as robots</span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">* medical devices</span></span></span></p>
<p><span style="font-family: times new roman,times,serif"><span style="color: #333333"><span style="font-size: 14px">* retail sales devices.</span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/02/what-is-character-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Add the 20 devices and initialise the user defined structure dev in b/w cdev_init and cdev_add</title>
		<link>https://www.emblogic.com/blog/04/add-the-20-devices-and-initialise-the-user-defined-structure-dev-in-bw-cdev_init-and-cdev_add/</link>
		<comments>https://www.emblogic.com/blog/04/add-the-20-devices-and-initialise-the-user-defined-structure-dev-in-bw-cdev_init-and-cdev_add/#comments</comments>
		<pubDate>Mon, 27 Apr 2015 10:29:06 +0000</pubDate>
		<dc:creator><![CDATA[Shashank Arora]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[Device Drivers]]></category>
		<category><![CDATA[char driver]]></category>
		<category><![CDATA[Character Device Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12641</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: 1.6 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 6; selected revisions: 6 description: ---------------------------- revision 1.6 date: 2015/04/28 15:54:10; author: root; state: Exp; lines: +16 -0 define the &#8230; <a href="https://www.emblogic.com/blog/04/add-the-20-devices-and-initialise-the-user-defined-structure-dev-in-bw-cdev_init-and-cdev_add/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<pre class="western">
</pre>
<pre class="western">RCS file: header.h,v</pre>
<pre class="western">Working file: header.h</pre>
<pre class="western">head: 1.6</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 6;	selected revisions: 6</pre>
<pre class="western">description:</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.6</pre>
<pre class="western">date: 2015/04/28 15:54:10;  author: root; 
state: Exp;  lines: +16 -0</pre>
<pre class="western">define the macro of user defined parameter such
as QUANTUM_SIZE, DATA_SIZE, QSET_SIZE, DEVICE_SIZE.set the default
values.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.5</pre>
<pre class="western">date: 2015/04/26 15:51:54;  author: root; 
state: Exp;  lines: +1 -0</pre>
<pre class="western">removed the struct of cdev.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.4</pre>
<pre class="western">date: 2015/04/26 14:41:40;  author: root; 
state: Exp;  lines: +1 -1</pre>
<pre class="western">introduced the stucture for mapping</pre>
<pre class="western">stuct Qset, struct dev where our devices node
information is stored.</pre>
<pre class="western">in struct dev struct cdev is declared
internally.</pre>
<pre class="western">also declared the extern struct dev *sdev
pointer for mapping</pre>
<pre class="western">,</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.3</pre>
<pre class="western">date: 2015/04/26 13:28:55;  author: root; 
state: Exp;  lines: +1 -0</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2</pre>
<pre class="western">date: 2015/04/26 13:18:47;  author: root; 
state: Exp;  lines: +3 -0</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/04/26 13:12:11;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
<pre class="western">
</pre>
<pre class="western">RCS file: declaration.h,v</pre>
<pre class="western">Working file: declaration.h</pre>
<pre class="western">head: 1.7</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 7;	selected revisions: 7</pre>
<pre class="western">description:</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.7</pre>
<pre class="western">date: 2015/04/28 15:56:37;  author: root; 
state: Exp;  lines: +2 -6</pre>
<pre class="western">declared the extern variable of Macros.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.6</pre>
<pre class="western">date: 2015/04/28 12:55:36;  author: root; 
state: Exp;  lines: +1 -0</pre>
<pre class="western">declared the extern ndev in this.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.5</pre>
<pre class="western">date: 2015/04/26 17:35:00;  author: root; 
state: Exp;  lines: +1 -0</pre>
<pre class="western">introduced extern file operations variable.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.4</pre>
<pre class="western">date: 2015/04/26 15:52:20;  author: root; 
state: Exp;  lines: +2 -2</pre>
<pre class="western">include the linux/cdev.h in header.h</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.3</pre>
<pre class="western">date: 2015/04/26 14:45:32;  author: root; 
state: Exp;  lines: +19 -0</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2</pre>
<pre class="western">date: 2015/04/26 13:18:47;  author: root; 
state: Exp;  lines: +1 -0</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/04/26 13:12:11;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
<pre class="western">
</pre>
<pre class="western">RCS file: new_initialization.c,v</pre>
<pre class="western">Working file: new_initialization.c</pre>
<pre class="western">head: 1.13</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 13;	selected revisions: 13</pre>
<pre class="western">description:</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.13</pre>
<pre class="western">date: 2015/04/28 16:20:11;  author: root; 
state: Exp;  lines: +3 -1</pre>
<pre class="western">same as previous version, just checking.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.12</pre>
<pre class="western">date: 2015/04/28 15:33:55;  author: root; 
state: Exp;  lines: +37 -8</pre>
<pre class="western">declared the init_dev_parameter() in which
initialise the MACRO quantum_size,qset_size,data_size,device_size.</pre>
<pre class="western">after that, call first in initial_func() so that
it will be initalized again.</pre>
<pre class="western">Now, access these parameters through struct dev
variable which should be initialised b/w cdev_init() and cdev_add().</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.11</pre>
<pre class="western">date: 2015/04/28 13:04:27;  author: root; 
state: Exp;  lines: +2 -1</pre>
<pre class="western">add the macro MINOR(ndev) to retrive the minor
no.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.10</pre>
<pre class="western">date: 2015/04/28 13:00:29;  author: root; 
state: Exp;  lines: +1 -1</pre>
<pre class="western">change the arugment of MKDEV(). 2nd argument
will be loop index because we gave the minor no.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.9</pre>
<pre class="western">date: 2015/04/28 12:51:10;  author: root; 
state: Exp;  lines: +26 -18</pre>
<pre class="western">register the devices 20 in loop.</pre>
<pre class="western">declared MKDEV in loop to conmbine the major and
minor value into single one.</pre>
<pre class="western">change the cdev and add the 20 devices.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.8</pre>
<pre class="western">date: 2015/04/26 17:23:35;  author: root; 
state: Exp;  lines: +16 -2</pre>
<pre class="western">initialize cdev_init and pass the 1st arguement
which is address of cdev which is pointed by object of struct dev.</pre>
<pre class="western">2nd arguement is address of file_operations.</pre>
<pre class="western">after cdev_init also initialized owner field and
file_operations *ops field which is actually defined in cdev.h.</pre>
<pre class="western">after initialization of cdev_init, we need to
make the connection by using cdev_add().</pre>
<pre class="western">In cdev_add(),mentioned the address pointed by
dev to cdev, 2nd arguement is dev and 3rd one is no. of devices we
added which is nod.</pre>
<pre class="western">successfully cdev_add() is done, the driver
initilization is complete.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.7</pre>
<pre class="western">date: 2015/04/26 16:11:06;  author: root; 
state: Exp;  lines: +4 -3</pre>
<pre class="western">add the if statement in kmalloc error checking.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.6</pre>
<pre class="western">date: 2015/04/26 15:51:07;  author: root; 
state: Exp;  lines: +2 -1</pre>
<pre class="western">correct the mistake done is kmalloc of FLAG.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.5</pre>
<pre class="western">date: 2015/04/26 14:40:00;  author: root; 
state: Exp;  lines: +8 -0</pre>
<pre class="western">declared kmalloc and provide space into the
kernel.</pre>
<pre class="western">after that memset flushed the memory.</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.4</pre>
<pre class="western">date: 2015/04/26 13:30:58;  author: root; 
state: Exp;  lines: +1 -0</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.3</pre>
<pre class="western">date: 2015/04/26 13:28:53;  author: root; 
state: Exp;  lines: +3 -1</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.2</pre>
<pre class="western">date: 2015/04/26 13:18:42;  author: root; 
state: Exp;  lines: +1 -0</pre>
<pre class="western">*** empty log message ***</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.1</pre>
<pre class="western">date: 2015/04/26 13:12:11;  author: root; 
state: Exp;</pre>
<pre class="western">Initial revision</pre>
<pre class="western">=============================================================================</pre>
<pre class="western">
</pre>
<pre class="western">RCS file: new_clean.c,v</pre>
<pre class="western">Working file: new_clean.c</pre>
<pre class="western">head: 1.7</pre>
<pre class="western">branch:</pre>
<pre class="western">locks: strict</pre>
<pre class="western">access list:</pre>
<pre class="western">symbolic names:</pre>
<pre class="western">keyword substitution: kv</pre>
<pre class="western">total revisions: 7;	selected revisions: 7</pre>
<pre class="western">description:</pre>
<pre class="western">----------------------------</pre>
<pre class="western">revision 1.7</pre>
<pre class="western">date: 2015/04/28 12:54:55;  author: root; 
state: Exp;  lines: +5 -1</pre>
<pre class="western">cdev_del is in loop to delete the connection.</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/add-the-20-devices-and-initialise-the-user-defined-structure-dev-in-bw-cdev_init-and-cdev_add/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initializing a driver using alloc_chrdev_region()</title>
		<link>https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/</link>
		<comments>https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/#comments</comments>
		<pubDate>Sat, 25 Apr 2015 10:18:50 +0000</pubDate>
		<dc:creator><![CDATA[Parampreet Singh]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[Device Drivers]]></category>
		<category><![CDATA[char driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=12625</guid>
		<description><![CDATA[RCS file: header.h,v Working file: header.h head: 1.10 branch: locks: strict access list: symbolic names: keyword substitution: kv total revisions: 10; selected revisions: 10 description: this is header file here various header files are included such as module param.h init.h &#8230; <a href="https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: header.h,v<br />
Working file: header.h<br />
head: 1.10<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 10; selected revisions: 10<br />
description:<br />
this is header file</p>
<p>here various header files are included such as module param.h init.h cdev.h slab.h and many others<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
revision 1.10<br />
date: 2015/04/24 12:36:40; author: psingh; state: Exp; lines: +1</p>
<p>Here module author,module licence and module description is defined</p>
<p>&nbsp;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>RCS file: declaration.h,v<br />
Working file: declaration.h<br />
head: 1.6<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 6; selected revisions: 6<br />
description:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2015/04/25 00:38:02; author: psingh; state: Exp; lines: +6 -6<br />
This is declaration.h&#8230;<br />
here declaration of struct qset is defined<br />
here declaration of struct Dev is also defined<br />
and a structure variable of type Dev is also defined which contains the element *qset and predefined structure cdev as mentioned in cdev.h&#8230;</p>
<p>============================================================================</p>
<p>RCS file: fopr.h,v<br />
Working file: fopr.h<br />
head: 1.1<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 1; selected revisions: 1<br />
description:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/04/25 00:38:05; author: psingh; state: Exp;<br />
Initial revision<br />
Here file operation structure is taken and declared as extern&#8230;<br />
=============================================================================</p>
<p>RCS file: init.c,v<br />
Working file: init.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2; selected revisions: 2</p>
<p>date: 2015/04/24 10:54:2; author: psingh; state: Exp; lines: +1 -1<br />
Here initalization of module is done using alloc_chrdev_region<br />
after that memory will be allocated by kernel using kmalloc()<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
revision 1.6<br />
date: 2015/04/24 10:53:1; author: psingh; state: Exp; lines: +4 -5<br />
cdev structure is initialized and its memory is made NULL by using memset<br />
after that cdev owner and file operation is declared and the addition of device table is done using cdev_add()</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
=============================================================================</p>
<p>RCS file: clean.c,v<br />
Working file: clean.c<br />
head: 1.2<br />
branch:p<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2; selected revisions: 2<br />
description:<br />
this is cleanup function</p>
<p>revision 1.2<br />
date: 2015/04/24 10:36:12; author: psingh; state: Exp; lines: +3 -1<br />
first cdev_del will remove the device table from the driver module<br />
after that kfree will free the memory allocated to the structure pointer as defined to the strcut Dev..<br />
then unregisteration of the module will be carried by using unregister_chrdev_region</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2015/04/24 10:12:13; author: psingh; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/initializing-a-driver-using-alloc_chrdev_region/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Project 05: Character Device Driver</title>
		<link>https://www.emblogic.com/blog/11/project-05-character-device-driver/</link>
		<comments>https://www.emblogic.com/blog/11/project-05-character-device-driver/#comments</comments>
		<pubDate>Fri, 02 Nov 2012 16:52:39 +0000</pubDate>
		<dc:creator><![CDATA[spatlou]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[char driver]]></category>
		<category><![CDATA[Character Device Driver]]></category>
		<category><![CDATA[Device Drivers]]></category>
		<category><![CDATA[EmbeddedTraining]]></category>
		<category><![CDATA[EmbLogic]]></category>
		<category><![CDATA[Linux Device Drivers Training]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=5628</guid>
		<description><![CDATA[Makefile for a basic kernel module

obj-m += hello-1.o

all:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean <a href="https://www.emblogic.com/blog/11/project-05-character-device-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Modules are pieces of code that can be loaded and unloaded into the kernel upon demand. They extend the functionality of the kernel without the need to reboot the<a href="http://emblogic.org/blog/11/project-05-character-device-driver/cdd2/" rel="attachment wp-att-5630"><img class="alignright size-medium wp-image-5630" title="cdd2" src="http://emblogic.org/blog/wp-content/uploads/2012/11/cdd2-e1351875063299-300x108.jpg" alt="" width="300" height="108" /></a> system. For example, one type of module is the device driver, which allows the kernel to access hardware connected to the system. Without modules, we would have to build monolithic kernels and add new functionality directly into the kernel image. Besides having larger kernels, this has the disadvantage of requiring us to rebuild and reboot the kernel every time we want new functionality.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/11/project-05-character-device-driver/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>ioctl..</title>
		<link>https://www.emblogic.com/blog/11/ioctl/</link>
		<comments>https://www.emblogic.com/blog/11/ioctl/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 04:56:24 +0000</pubDate>
		<dc:creator><![CDATA[shyam.singh]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[char driver]]></category>

		<guid isPermaLink="false">http://emblogic.org/blog/?p=1268</guid>
		<description><![CDATA[In the ioctl function at driver level&#8230;&#8230;.., the switch(cmd) statement have &#8216;cmd&#8217; as the argument but we can see cmd is of &#8216;unsigned int&#8217; type&#8230; i want to ask how the switch function perform case matching&#8230;. switch(cmd) { case IOSQSET: &#8230; <a href="https://www.emblogic.com/blog/11/ioctl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In the ioctl function at driver level&#8230;&#8230;..,<br />
the switch(cmd) statement have &#8216;cmd&#8217; as the argument but we can see cmd is of &#8216;unsigned int&#8217; type&#8230;<br />
i want to ask how the switch function perform case matching&#8230;.<br />
switch(cmd)<br />
{<br />
case IOSQSET:<br />
case IOSQUANTUM:<br />
because after &#8216;case&#8217; we have written a string..and &#8216;cmd&#8217; is int type&#8230;..how?</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/11/ioctl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
