<?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; poonam.rai664</title>
	<atom:link href="https://www.emblogic.com/blog/author/poonam-kumari58/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>client server programme using socket</title>
		<link>https://www.emblogic.com/blog/06/client-server-programme-using-socket/</link>
		<comments>https://www.emblogic.com/blog/06/client-server-programme-using-socket/#comments</comments>
		<pubDate>Mon, 16 Jun 2014 12:06:26 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10504</guid>
		<description><![CDATA[#include #include //#include #include #include int main() { int sockfd,true,aret,bret; char ch[5]; struct sockaddr_in server_add,client_add; socklen_t len; server_add.sin_family = AF_INET; server_add.sin_port=htons(7770); server_add.sin_addr.s_addr = inet_addr(&#8220;127.0.0.1&#8243;); if(setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&#38;true,sizeof(int))==-1) { sockfd = socket(AF_INET,SOCK_STREAM,0); if(sockfd==-1) { printf(&#8220;fail in openning socket&#8221;); } } printf(&#8220;sockfd =%d\n&#8221;,sockfd); bret &#8230; <a href="https://www.emblogic.com/blog/06/client-server-programme-using-socket/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>#include<br />
#include<br />
//#include<br />
#include<br />
#include<br />
int main()<br />
{<br />
	int sockfd,true,aret,bret;<br />
	char ch[5];<br />
	struct sockaddr_in server_add,client_add;<br />
	socklen_t len;</p>
<p>	server_add.sin_family = AF_INET;<br />
	server_add.sin_port=htons(7770);<br />
	server_add.sin_addr.s_addr = inet_addr(&#8220;127.0.0.1&#8243;);<br />
	if(setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&amp;true,sizeof(int))==-1)<br />
	{<br />
		sockfd = socket(AF_INET,SOCK_STREAM,0);<br />
		if(sockfd==-1)<br />
		{<br />
			printf(&#8220;fail in openning socket&#8221;);<br />
		}<br />
	}</p>
<p>	printf(&#8220;sockfd =%d\n&#8221;,sockfd);</p>
<p>	bret = bind(sockfd,(struct sockaddr *)&amp;server_add,sizeof(struct sockaddr));<br />
	printf(&#8220;bind return %d\n&#8221;,bret);<br />
	if(bret==-1)<br />
	{<br />
		printf(&#8220;error in binding&#8221;);<br />
	}</p>
<p>	listen(sockfd,3);</p>
<p>	len = sizeof(client_add);<br />
	//printf(&#8220;len %d\n&#8221;,*len);<br />
	aret = accept(sockfd,(struct sockaddr *)&amp;client_add,&amp;len);<br />
	printf(&#8220;accept return %d\n&#8221;,aret);<br />
	read(aret,ch,5);<br />
	printf(&#8220;SERVER:%s\n&#8221;,ch);<br />
	return 0;<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/client-server-programme-using-socket/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>registering character driver</title>
		<link>https://www.emblogic.com/blog/06/registering-character-driver/</link>
		<comments>https://www.emblogic.com/blog/06/registering-character-driver/#comments</comments>
		<pubDate>Sat, 07 Jun 2014 10:22:37 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9923</guid>
		<description><![CDATA[head 1.15; access; symbols; locks root:1.15; strict; comment @ * @; 1.15 date 2014.05.11.08.48.49; author root; state Exp; branches; next 1.14; 1.14 date 2014.05.10.07.23.56; author root; state Exp; branches; next 1.13; 1.13 date 2014.05.10.07.17.59; author root; state Exp; branches; next &#8230; <a href="https://www.emblogic.com/blog/06/registering-character-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>head	1.15;<br />
access;<br />
symbols;<br />
locks<br />
	root:1.15; strict;<br />
comment	@ * @;</p>
<p>1.15<br />
date	2014.05.11.08.48.49;	author root;	state Exp;<br />
branches;<br />
next	1.14;</p>
<p>1.14<br />
date	2014.05.10.07.23.56;	author root;	state Exp;<br />
branches;<br />
next	1.13;</p>
<p>1.13<br />
date	2014.05.10.07.17.59;	author root;	state Exp;<br />
branches;<br />
next	1.12;</p>
<p>1.12<br />
date	2014.05.09.10.22.15;	author root;	state Exp;<br />
branches;<br />
next	1.11;</p>
<p>1.11<br />
date	2014.05.09.10.20.37;	author root;	state Exp;<br />
branches;<br />
next	1.10;</p>
<p>1.10<br />
date	2014.05.09.07.45.13;	author root;	state Exp;<br />
branches;<br />
next	1.9;</p>
<p>1.9<br />
date	2014.05.09.07.43.59;	author root;	state Exp;<br />
branches;<br />
next	1.8;</p>
<p>1.8<br />
date	2014.05.09.07.39.00;	author root;	state Exp;<br />
branches;<br />
next	1.7;</p>
<p>1.7<br />
date	2014.05.09.07.36.42;	author root;	state Exp;<br />
branches;<br />
next	1.6;</p>
<p>1.6<br />
date	2014.05.09.07.35.17;	author root;	state Exp;<br />
branches;<br />
next	1.5;</p>
<p>1.5<br />
date	2014.05.09.07.21.24;	author root;	state Exp;<br />
branches;<br />
next	1.4;</p>
<p>1.4<br />
date	2014.05.08.11.42.32;	author root;	state Exp;<br />
branches;<br />
next	1.3;</p>
<p>1.3<br />
date	2014.05.08.07.09.50;	author root;	state Exp;<br />
branches;<br />
next	1.2;</p>
<p>1.2<br />
date	2014.05.06.11.48.01;	author root;	state Exp;<br />
branches;<br />
next	1.1;</p>
<p>1.1<br />
date	2014.05.06.11.22.20;	author root;	state Exp;<br />
branches;<br />
next	;</p>
<p>desc<br />
@initialization done.<br />
@</p>
<p>1.15<br />
log<br />
@aloocated memory using kmalloc.<br />
@<br />
text<br />
@#include&#8221;header.h&#8221;<br />
#include&#8221;declration.c&#8221;<br />
//#include&#8221;file_op.c&#8221;<br />
unsigned int major_no,minor_no,nod;<br />
dev_t dev;<br />
struct sculldev *scull_dev;<br />
module_param(nod,uint,S_IRUGO);<br />
static int __init init_func(void)<br />
{	int ret;<br />
	major_no= MAJORNO;<br />
	minor_no= MINORNO;<br />
	//nod= NOD;<br />
	//struct file_operations fops;<br />
	printk(KERN_INFO &#8220;we are in kernel&#8221;);<br />
	ret = alloc_chrdev_region(&amp;dev,minor_no,nod,&#8221;poonam&#8221;);<br />
	if(ret&lt;0)<br />
	{<br />
		printk(KERN_ERR&quot;failed\n&quot;);<br />
	}<br />
	major_no=MAJOR(dev);<br />
	minor_no=MINOR(dev);<br />
	printk(KERN_INFO&quot;sucessful registration major no =%d\n&quot;,major_no);<br />
	printk(KERN_INFO&quot;sucessful registration minor no =%d\n&quot;,minor_no);<br />
	printk(KERN_INFO&quot;nod is =%d\n&quot;,nod);<br />
	scull_dev = kmalloc((sizeof( struct sculldev)*nod), GFP_KERNEL);<br />
	if(!scull_dev)<br />
	{<br />
		printk(KERN_ERR&quot;kmalloc failure\n&quot;);<br />
		return -1;<br />
	}</p>
<p>	printk(KERN_INFO&quot;kmalloc successfull\n&quot;);</p>
<p>        return 0;<br />
}</p>
<p>module_init(init_func);<br />
@</p>
<p>1.14<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d6 1<br />
d15 1<br />
a15 1<br />
	ret = alloc_chrdev_region(&amp;dev,minor_no,nod,&quot;arjun&quot;);<br />
d25 9<br />
@</p>
<p>1.13<br />
log<br />
@add module_param macro<br />
before initilaization function defination<br />
@<br />
text<br />
@d6 1<br />
a6 1<br />
module_param(nod,unsigned int,S_IRUGO);<br />
@</p>
<p>1.12<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d6 1<br />
d11 1<br />
a11 1<br />
	nod= NOD;<br />
d23 1<br />
@</p>
<p>1.11<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d11 1<br />
a11 1<br />
	struct file_operations fops;<br />
d18 2<br />
a19 2<br />
	major_no=MAJORNO(dev);<br />
	minor_no=MINORNO(dev);<br />
@</p>
<p>1.10<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d6 3<br />
a8 3<br />
static int init_func(void)<br />
	int ret;<br />
{	major_no= MAJORNO;<br />
@</p>
<p>1.9<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d18 1<br />
a18 1<br />
	majro_no=MAJORNO(dev);<br />
@</p>
<p>1.8<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d7 1<br />
a10 1<br />
	int ret;<br />
@</p>
<p>1.7<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d7 2<br />
a8 2<br />
{	major_no= MAJOR_NO;<br />
	minor_no= MINOR_NO;<br />
d18 2<br />
a19 2<br />
	majro_no=MAJOR_NO(dev);<br />
	minor_no=MINOR_NO(dev);<br />
@</p>
<p>1.6<br />
log<br />
@*** empty log message ***<br />
@<br />
text<br />
@d9 1<br />
a9 1<br />
	NOD=nod;<br />
@</p>
<p>1.5<br />
log<br />
@using alloc function<br />
@<br />
text<br />
@d5 1<br />
@</p>
<p>1.4<br />
log<br />
@used file operation variable.<br />
@<br />
text<br />
@d2 1<br />
d4 1<br />
d6 3<br />
a8 1<br />
{<br />
d12 1<br />
a12 1<br />
	ret = register_chrdev(0,&quot;mychardevice&quot;,&amp;fops);<br />
d17 5<br />
a21 1<br />
	printk(KERN_INFO&quot;sucessful registration %d\n&quot;,ret);<br />
@</p>
<p>1.3<br />
log<br />
@included file operations in init function.<br />
@<br />
text<br />
@d2 1<br />
a2 1<br />
#include&quot;file_op.c&quot;<br />
d6 1<br />
@</p>
<p>1.2<br />
log<br />
@register my char device.<br />
@<br />
text<br />
@d7 6<br />
a12 1<br />
	ret = register(0,&quot;mychardevice&quot;,&amp;fops);<br />
@</p>
<p>1.1<br />
log<br />
@Initial revision<br />
@<br />
text<br />
@d2 1<br />
d4 2<br />
a5 1<br />
{<br />
d7 1<br />
@</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/registering-character-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>character driver registration</title>
		<link>https://www.emblogic.com/blog/06/character-driver-registration/</link>
		<comments>https://www.emblogic.com/blog/06/character-driver-registration/#comments</comments>
		<pubDate>Sat, 07 Jun 2014 10:22:20 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10171</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/character-driver-registration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>algorithm to write initialization function for character deriver</title>
		<link>https://www.emblogic.com/blog/06/algorithm-to-write-initialization-function-for-character-deriver/</link>
		<comments>https://www.emblogic.com/blog/06/algorithm-to-write-initialization-function-for-character-deriver/#comments</comments>
		<pubDate>Sat, 07 Jun 2014 10:22:05 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10208</guid>
		<description><![CDATA[follow these simple steps to initialize your character driver&#8230;. 1. use module __init(initialization_function_name) this is a micro which takes function name as argument. 2. static int initialization_function_name(void) this is the defination of micro&#8230; in this defination follow following steps.. a. &#8230; <a href="https://www.emblogic.com/blog/06/algorithm-to-write-initialization-function-for-character-deriver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>follow these simple steps to initialize your character driver&#8230;.<br />
1. use module __init(initialization_function_name)<br />
        this is a micro which takes function name as argument.<br />
2. static int initialization_function_name(void)<br />
  this is the defination of micro&#8230;<br />
in this defination follow following steps..<br />
  a. register your char device using register_chardev_region().<br />
  b. allocate memory for the sculldev.<br />
  c. initialize your device using cdev_init() and add your device using cdev_add() functions.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/algorithm-to-write-initialization-function-for-character-deriver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>information about kernel symbol table</title>
		<link>https://www.emblogic.com/blog/06/information-about-kernel-symbol-table/</link>
		<comments>https://www.emblogic.com/blog/06/information-about-kernel-symbol-table/#comments</comments>
		<pubDate>Sat, 07 Jun 2014 10:21:50 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10250</guid>
		<description><![CDATA[We&#8217;ve seen how insmod resolves undefined symbols against the table of public kernel symbols. The table contains the addresses of global kernel items—functions and variables—that are needed to implement modularized drivers. When a module is loaded, any symbol exported by &#8230; <a href="https://www.emblogic.com/blog/06/information-about-kernel-symbol-table/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>We&#8217;ve seen how insmod resolves undefined symbols against the table of public kernel symbols. The table contains the addresses of global kernel items—functions and variables—that are needed to implement modularized drivers. When a module is loaded, any symbol exported by the module becomes part of the kernel symbol table. In the usual case, a module implements its own functionality without the need to export any symbols at all. You need to export symbols, however, whenever other modules may benefit from using them.</p>
<p>New modules can use symbols exported by your module, and you can stack new modules on top of other modules. Module stacking is implemented in the mainstream kernel sources as well: the msdos filesystem relies on symbols exported by the fat module, and each input USB device module stacks on the usbcore and input modules.</p>
<p>Module stacking is useful in complex projects. If a new abstraction is implemented in the form of a device driver, it might offer a plug for hardware-specific implementations. For example, the video-for-linux set of drivers is split into a generic module that exports symbols used by lower-level device drivers for specific hardware. According to your setup, you load the generic video module and the specific module for your installed hardware. Support for parallel ports and the wide variety of attachable devices is handled in the same way, as is the USB kernel subsystem. Stacking in the parallel port subsystem is shown in Figure 2-2; the arrows show the communications between the modules and with the kernel programming interface.</p>
<p>When using stacked modules, it is helpful to be aware of the modprobe utility. As we described earlier, modprobe functions in much the same way as insmod, but it also loads any other modules that are required by the module you want to load. Thus, one modprobe command can sometimes replace several invocations of insmod (although you&#8217;ll still need insmod when loading your own modules from the current directory, because modprobe looks only in the standard installed module directories).</p>
<p>Using stacking to split modules into multiple layers can help reduce development time by simplifying each layer. This is similar to the separation between mechanism and policy that we discussed in Chapter 1.</p>
<p>The Linux kernel header files provide a convenient way to manage the visibility of your symbols, thus reducing namespace pollution (filling the namespace with names that may conflict with those defined elsewhere in the kernel) and promoting proper information hiding. If your module needs to export symbols for other modules to use, the following macros should be used.</p>
<p>EXPORT_SYMBOL(name);<br />
EXPORT_SYMBOL_GPL(name);</p>
<p>Either of the above macros makes the given symbol available outside the module. The _GPL version makes the symbol available to GPL-licensed modules only. Symbols must be exported in the global part of the module&#8217;s file, outside of any function, because the macros expand to the declaration of a special-purpose variable that is expected to be accessible globally. This variable is stored in a special part of the module executible (an &#8220;ELF section&#8221;) that is used by the kernel at load time to find the variables exported by the module. </p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/information-about-kernel-symbol-table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>register your charcter deriver</title>
		<link>https://www.emblogic.com/blog/06/register-your-charcter-deriver/</link>
		<comments>https://www.emblogic.com/blog/06/register-your-charcter-deriver/#comments</comments>
		<pubDate>Sat, 07 Jun 2014 10:21:34 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9934</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/register-your-charcter-deriver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>register of character deriver</title>
		<link>https://www.emblogic.com/blog/06/register-of-character-deriver/</link>
		<comments>https://www.emblogic.com/blog/06/register-of-character-deriver/#comments</comments>
		<pubDate>Sat, 07 Jun 2014 10:21:17 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9925</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/register-of-character-deriver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>fibonnacci series using pointers</title>
		<link>https://www.emblogic.com/blog/06/fibonnacci-series-using-pointers/</link>
		<comments>https://www.emblogic.com/blog/06/fibonnacci-series-using-pointers/#comments</comments>
		<pubDate>Sat, 07 Jun 2014 10:20:40 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10387</guid>
		<description><![CDATA[#include 2 #include 3 #include 4 int main() 5 6 { 7 int a,b,c,n,t,i; 8 int *ptr; 9 10 i =2; 11 /* a=0; 12 b=1;*/ 13 printf(&#8220;enter the max range for fibonacci&#8221;); 14 scanf(&#8220;%d&#8221;,&#38;n); ptr = (int *)malloc(sizeof(n)); 17 &#8230; <a href="https://www.emblogic.com/blog/06/fibonnacci-series-using-pointers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>#include<br />
  2 #include<br />
  3 #include<br />
  4 int main()<br />
  5<br />
  6 {<br />
  7         int a,b,c,n,t,i;<br />
  8         int *ptr;<br />
  9<br />
 10         i =2;<br />
 11 /*      a=0;<br />
 12         b=1;*/<br />
 13         printf(&#8220;enter the max range for fibonacci&#8221;);<br />
 14         scanf(&#8220;%d&#8221;,&amp;n);<br />
             ptr = (int *)malloc(sizeof(n));<br />
 17         *(ptr+0)=0;<br />
 18         *(ptr+1)=1;<br />
 19         while(n&gt;i)<br />
            {</p>
<p> 15         </p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/fibonnacci-series-using-pointers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>writing in character driver with multiple quantum</title>
		<link>https://www.emblogic.com/blog/05/writing-in-character-driver-with-multiple-quantum/</link>
		<comments>https://www.emblogic.com/blog/05/writing-in-character-driver-with-multiple-quantum/#comments</comments>
		<pubDate>Sat, 24 May 2014 05:14:53 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10187</guid>
		<description><![CDATA[#include&#8221;header.h&#8221; #include&#8221;declration.c&#8221; struct ScullQset *create_scullqset(int nosqset) { struct ScullQset *lscullqset,*temp,*new; int i,flag=1; lscullqset=NULL; //int i; printk(KERN_INFO&#8221;begin=%s\n&#8221;,__func__); for(i=0;inext=NULL; lscullqset-&#62;data=NULL; } else { new = (struct ScullQset *)kmalloc(sizeof(struct ScullQset),GFP_KERNEL); new-&#62;next=NULL; new-&#62;data=NULL; temp-&#62;next=new; temp=temp-&#62;next; } #include&#8221;header.h&#8221; #include&#8221;declration.c&#8221; struct ScullQset *create_scullqset(int nosqset) { struct &#8230; <a href="https://www.emblogic.com/blog/05/writing-in-character-driver-with-multiple-quantum/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>#include&#8221;header.h&#8221;<br />
#include&#8221;declration.c&#8221;<br />
struct ScullQset *create_scullqset(int nosqset)<br />
{<br />
        struct ScullQset *lscullqset,*temp,*new;<br />
        int i,flag=1;<br />
        lscullqset=NULL;<br />
        //int i;</p>
<p>        printk(KERN_INFO&#8221;begin=%s\n&#8221;,__func__);<br />
        for(i=0;inext=NULL;<br />
                        lscullqset-&gt;data=NULL;<br />
                }<br />
                else<br />
                {<br />
                        new = (struct ScullQset *)kmalloc(sizeof(struct ScullQset),GFP_KERNEL);<br />
                        new-&gt;next=NULL;<br />
                        new-&gt;data=NULL;<br />
                        temp-&gt;next=new;<br />
                        temp=temp-&gt;next;<br />
                }</p>
<p>#include&#8221;header.h&#8221;<br />
#include&#8221;declration.c&#8221;<br />
struct ScullQset *create_scullqset(int nosqset)<br />
{<br />
        struct ScullQset *lscullqset,*temp,*new;<br />
        int i,flag=1;<br />
        lscullqset=NULL;<br />
        //int i;</p>
<p>        printk(KERN_INFO&#8221;begin=%s\n&#8221;,__func__);<br />
        for(i=0;inext=NULL;<br />
                        lscullqset-&gt;data=NULL;<br />
                }<br />
                else<br />
                {<br />
                        new = (struct ScullQset *)kmalloc(sizeof(struct ScullQset),GFP_KERNEL);<br />
                        new-&gt;next=NULL;<br />
                        new-&gt;data=NULL;<br />
                        temp-&gt;next=new;<br />
                        temp=temp-&gt;next;<br />
                }</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/05/writing-in-character-driver-with-multiple-quantum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>about RCS</title>
		<link>https://www.emblogic.com/blog/03/about-rcs/</link>
		<comments>https://www.emblogic.com/blog/03/about-rcs/#comments</comments>
		<pubDate>Tue, 25 Mar 2014 10:00:53 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9405</guid>
		<description><![CDATA[RCS (revision control system) is a project management tool. RCS uses a number of commands to manage source file. It works by tracking source file as its changed by maintaining a single file with list of changes in sufficient detail &#8230; <a href="https://www.emblogic.com/blog/03/about-rcs/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS (revision control system) is a project management tool. RCS uses a number of commands to manage source file. It works by tracking source file as its changed by maintaining a single file with list of changes in sufficient detail to recreate the previous version. It also allows you to store comment with every change , which can be very useful to look back in the history of changes that has made to the files. To RCS a file following commands are used.</p>
<p>1.   rcs -i filename</p>
<p>this creates a rcs file with name filenamec,v.</p>
<p>2. ci filename</p>
<p>3 . co -l filename</p>
<p>this locks the previous version of file and allow you to do further changes into it.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/about-rcs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ipc server using pipe</title>
		<link>https://www.emblogic.com/blog/03/ipc-server-using-pipe/</link>
		<comments>https://www.emblogic.com/blog/03/ipc-server-using-pipe/#comments</comments>
		<pubDate>Tue, 25 Mar 2014 09:01:58 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9362</guid>
		<description><![CDATA[head 1.2; access; symbols; locks poonam:1.2; strict; comment @ * @; 1.2 date 2014.03.25.05.06.08; author poonam; state Exp; branches; next 1.1; 1.1 date 2014.03.25.02.12.49; author poonam; state Exp; branches; next ; desc @implemented server with three requesting client and three &#8230; <a href="https://www.emblogic.com/blog/03/ipc-server-using-pipe/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>head	1.2;<br />
access;<br />
symbols;<br />
locks<br />
	poonam:1.2; strict;<br />
comment	@ * @;</p>
<p>1.2<br />
date	2014.03.25.05.06.08;	author poonam;	state Exp;<br />
branches;<br />
next	1.1;</p>
<p>1.1<br />
date	2014.03.25.02.12.49;	author poonam;	state Exp;<br />
branches;<br />
next	;</p>
<p>desc<br />
@implemented server with three requesting client and three processing client bt result is not perfect for each requesting client.<br />
@</p>
<p>1.2<br />
log<br />
@used switch to run different processing clients.<br />
@<br />
text<br />
@#include&#8221;header.h&#8221;<br />
int main()<br />
{<br />
	int i,pipe1,pipe2,pipe3,pipe4,data_r1,data_r2,data_r3,data_add,data_sub,data_mul,plus[2],plus_r,plus_w,minus[2],minus_r,minus_w,mul[2],mul_r,mul_w;<br />
	int pid1,pid2,pid3,pid4,pid5,pid6,ch;<br />
	int fd_com_req[2], fd_com_res[2],fd_com_preq[2],fd_com_pres[2];<br />
	char a[4],b[4],c[4],d[4],e[4],f[4],g[4],h[4];<br />
	int buf_client1_r[3], buf_client2_r[3], buf_client3_r[3];<br />
	 pipe1=pipe(fd_com_req);<br />
	 pipe2=pipe(fd_com_res);<br />
	 pipe3=pipe(fd_com_preq);<br />
	 pipe4=pipe(fd_com_pres);<br />
	sprintf(a,&#8221;%d&#8221;,fd_com_req[1]);<br />
	sprintf(b,&#8221;%d&#8221;,fd_com_req[0]);<br />
	sprintf(c,&#8221;%d&#8221;,fd_com_res[1]);<br />
	sprintf(d,&#8221;%d&#8221;,fd_com_res[0]);<br />
	sprintf(e,&#8221;%d&#8221;,fd_com_preq[1]);<br />
	sprintf(f,&#8221;%d&#8221;,fd_com_preq[0]);<br />
	sprintf(g,&#8221;%d&#8221;,fd_com_pres[1]);<br />
	sprintf(h,&#8221;%d&#8221;,fd_com_pres[0]);<br />
	printf(&#8220;this is server\n&#8221;);<br />
	pid1=fork();<br />
	if(pid1!=0)<br />
	{<br />
		data_r1=read(fd_com_req[0],buf_client1_r,12);<br />
		for(i=0;i&lt;3;i++)<br />
		printf(&quot;client1[%d]=%d\n&quot;,i,buf_client1_r[i]);<br />
		pid2=fork();<br />
		if(pid2!=0)<br />
		{<br />
				data_r2=read(fd_com_req[0],buf_client2_r,12);<br />
				for(i=0;i&lt;3;i++)<br />
				printf(&quot;client2[%d]=%d\n&quot;,i,buf_client2_r[i]);<br />
			pid3=fork();<br />
			if(pid3!=0)<br />
			{<br />
				data_r3=read(fd_com_req[0],buf_client3_r,12);<br />
				for(i=0;i&lt;3;i++)<br />
				printf(&quot;client3[%d]=%d\n&quot;,i,buf_client3_r[i]);<br />
				int *server_buf[3] = {(int*) (buf_client1_r+0), (int*)(buf_client2_r+0),(int*)(buf_client3_r+0)};<br />
				for(i=0;i&lt;3;i++)<br />
				{<br />
					printf(&quot;server buf %d \n&quot;,*((int*)server_buf[i]));<br />
					ch = *((int*)server_buf[i]);<br />
					switch(ch)<br />
					{<br />
						case 43: printf(&quot;add \n&quot;);<br />
							 pid4=fork();<br />
							 if(pid4!=0)<br />
							{<br />
								plus_r = read(fd_com_pres[0],plus,8);<br />
								printf(&quot;plus result is =%d\n&quot;,plus[1]);<br />
								plus_w = write(fd_com_res[1],plus,8);<br />
							}<br />
							else<br />
							{</p>
<p>								data_add = write(fd_com_preq[1],buf_client1_r,12);<br />
								execl(&quot;./add&quot;,&quot;add&quot;,f,g,NULL);<br />
							}<br />
							break;</p>
<p>						case 45:   pid5=fork();<br />
							   if(pid5!=0)<br />
							  {<br />
								minus_r = read(fd_com_pres[0],minus,8);<br />
								printf(&quot;minus result is =%d\n&quot;,minus[1]);<br />
								minus_w = write(fd_com_res[1],minus,8);<br />
							  }<br />
							  else<br />
							  {</p>
<p>								data_sub = write(fd_com_preq[1],buf_client2_r,12);<br />
								execl(&quot;./sub&quot;,&quot;sub&quot;,f,g,NULL);<br />
							  }<br />
							  break;<br />
						case 42: pid6=fork();<br />
							if(pid6!=0)<br />
							{<br />
								mul_r = read(fd_com_pres[0],mul,8);<br />
								printf(&quot;mul result is =%d\n&quot;,mul[1]);<br />
								mul_w = write(fd_com_res[1],mul,8);<br />
							}<br />
							else<br />
							{	</p>
<p>							data_mul = write(fd_com_preq[1],buf_client3_r,12);<br />
							execl(&quot;./mul&quot;,&quot;mul&quot;,f,g,NULL);<br />
							}<br />
							break;<br />
					}<br />
				/*	else<br />
					{</p>
<p>						data_sub = write(fd_com_preq[1],buf_client2_r,12);<br />
						execl(&quot;./sub&quot;,&quot;sub&quot;,f,g,NULL);<br />
					}</p>
<p>				}<br />
				else<br />
				{</p>
<p>					data_add = write(fd_com_preq[1],buf_client1_r,12);<br />
					execl(&quot;./add&quot;,&quot;add&quot;,f,g,NULL);<br />
				}*/<br />
			}<br />
			}</p>
<p>			else<br />
			{</p>
<p>				execl(&quot;./cl3&quot;,&quot;client3&quot;,a,d,NULL);<br />
			}<br />
		}<br />
		else<br />
		{<br />
			execl(&quot;./cl2&quot;,&quot;client2&quot;,a,d,NULL);<br />
		}</p>
<p>	}<br />
	else<br />
	{<br />
		execl(&quot;./cl1&quot;,&quot;client1&quot;,a,d,NULL);<br />
	}<br />
}</p>
<p>@</p>
<p>1.1<br />
log<br />
@Initial revision<br />
@<br />
text<br />
@d5 1<br />
a5 1<br />
	int pid1,pid2,pid3,pid4,pid5,pid6;<br />
d40 47<br />
a86 22<br />
				//printf(&quot;clients req are \n&quot;);<br />
				pid4=fork();<br />
				if(pid4!=0)<br />
				{<br />
					plus_r = read(fd_com_pres[0],plus,8);<br />
					printf(&quot;plus result is =%d\n&quot;,plus[1]);<br />
					plus_w = write(fd_com_res[1],plus,8);<br />
					pid5=fork();<br />
					if(pid5!=0)<br />
					{<br />
						minus_r = read(fd_com_pres[0],minus,8);<br />
						printf(&quot;minus result is =%d\n&quot;,minus[1]);<br />
						minus_w = write(fd_com_res[1],minus,8);<br />
						pid6=fork();<br />
						if(pid6!=0)<br />
						{<br />
							mul_r = read(fd_com_pres[0],mul,8);<br />
							printf(&quot;mul result is =%d\n&quot;,mul[1]);<br />
							mul_w = write(fd_com_res[1],mul,8);<br />
						}<br />
						else<br />
						{<br />
d90 2<br />
a91 1<br />
						}<br />
d93 1<br />
a93 1<br />
					else<br />
d106 2<br />
a107 1<br />
				}<br />
d109 1<br />
@</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/ipc-server-using-pipe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>implemented fifo using single client</title>
		<link>https://www.emblogic.com/blog/03/implemented-fifo-using-single-client/</link>
		<comments>https://www.emblogic.com/blog/03/implemented-fifo-using-single-client/#comments</comments>
		<pubDate>Fri, 14 Mar 2014 11:42:20 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9086</guid>
		<description><![CDATA[created FIFO between two process. In this one process is writing and another process is reading using named pipes that is FIFO.]]></description>
				<content:encoded><![CDATA[<p>created FIFO between two process. In this one process is writing and another process is reading using named pipes that is FIFO.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/implemented-fifo-using-single-client/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>implemented interprocess communication using pipe</title>
		<link>https://www.emblogic.com/blog/03/implemented-interprocess-communication-using-pipe/</link>
		<comments>https://www.emblogic.com/blog/03/implemented-interprocess-communication-using-pipe/#comments</comments>
		<pubDate>Thu, 13 Mar 2014 05:37:30 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9034</guid>
		<description><![CDATA[created a communication medium between server and single client. client  sends request to the server to perform an operation.server after performing operations send the result back to the client .this result is again read by the client by using pipe.]]></description>
				<content:encoded><![CDATA[<p>created a communication medium between server and single client. client  sends request to the server to perform an operation.server after performing operations send the result back to the client .this result is again read by the client by using pipe.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/implemented-interprocess-communication-using-pipe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>implemented interprocess communication without pipe</title>
		<link>https://www.emblogic.com/blog/03/implemented-interprocess-communication-without-pipe/</link>
		<comments>https://www.emblogic.com/blog/03/implemented-interprocess-communication-without-pipe/#comments</comments>
		<pubDate>Thu, 13 Mar 2014 05:30:58 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9032</guid>
		<description><![CDATA[simply opened file in server side and write the file.this file (file descriptor) is passed as argument through execl to the another program called client which than read the file using sscanf(and then lseek().]]></description>
				<content:encoded><![CDATA[<p>simply opened file in server side and write the file.this file (file descriptor) is passed as argument through execl to the another program called client which than read the file using sscanf(and then lseek().</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/implemented-interprocess-communication-without-pipe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>how c convert program into executable</title>
		<link>https://www.emblogic.com/blog/03/how-c-convert-program-into-executable/</link>
		<comments>https://www.emblogic.com/blog/03/how-c-convert-program-into-executable/#comments</comments>
		<pubDate>Mon, 03 Mar 2014 06:01:35 +0000</pubDate>
		<dc:creator><![CDATA[poonam.rai664]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=8754</guid>
		<description><![CDATA[After writing the programme it is saved with .c name. During its execution code file gets converted into executable in four different steps.Firstly c code is preprocessed and get converted into .i file. Then .i file is compiled and get &#8230; <a href="https://www.emblogic.com/blog/03/how-c-convert-program-into-executable/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>After writing the programme it is saved with .c name. During its execution code file gets converted into executable in four different steps.Firstly c code is preprocessed and get converted into .i file. Then .i file is compiled and get converted into .s file. This .s file is assembled and converted into .o file which is our object code. Finally linker convert the .o file into .c file , then loader loads all the executable files with it and our output as ./a.out is generated.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/how-c-convert-program-into-executable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
