<?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; ramkeshvats</title>
	<atom:link href="https://www.emblogic.com/blog/author/ramkeshvats/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>message queue</title>
		<link>https://www.emblogic.com/blog/11/message-queue-3/</link>
		<comments>https://www.emblogic.com/blog/11/message-queue-3/#comments</comments>
		<pubDate>Fri, 07 Nov 2014 08:13:08 +0000</pubDate>
		<dc:creator><![CDATA[ramkeshvats]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11721</guid>
		<description><![CDATA[Message queue is the inter process technique in which two or more unrelated process can communicate using that queue. In message queue we send a message number associated with particular client/process along with our data and at the server end &#8230; <a href="https://www.emblogic.com/blog/11/message-queue-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Message queue is the inter process technique in which two or more unrelated process can communicate using that queue. In message queue we send a message number associated with particular client/process  along with our data and at the server end data associated with a particular client can be received, recognised by that message numbe and further prcessed(according to client request).</p>
<p>As for each client there is different message no. so in case of message queue technique there is no need of synchronization the clients.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/11/message-queue-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>synchronization techniques</title>
		<link>https://www.emblogic.com/blog/07/synchronization-techniques/</link>
		<comments>https://www.emblogic.com/blog/07/synchronization-techniques/#comments</comments>
		<pubDate>Thu, 24 Jul 2014 09:39:14 +0000</pubDate>
		<dc:creator><![CDATA[ramkeshvats]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11283</guid>
		<description><![CDATA[The various synchronization techniques at kernel level are- Semaphore Completions Spinlock in semaphore we use system calls- up and down before entering into critical section the integer semaphore value is decremented by using down and it is incremented using call &#8230; <a href="https://www.emblogic.com/blog/07/synchronization-techniques/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The various synchronization techniques at kernel level are-<br />
Semaphore<br />
Completions<br />
Spinlock</p>
<p>in semaphore we use system calls- up and down<br />
before entering into critical section the integer semaphore value is decremented by using down and it is incremented using call up after critical section.</p>
<p>Completion is another kernel level synchronization technique that has advantage over semaphore that it is light weight operation. It does not require any weight queue&#8230;&#8230;.the calls used in completion are-  wait_for_copmletion and complete and also complete_all.</p>
<p>Spinlock is used in process that cannot sleep such as interrupt handler. In spinlock execution in critical section is atomic,non_interruptable.The calls used in spinlock are spin_lock and spin_unlock.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/synchronization-techniques/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title></title>
		<link>https://www.emblogic.com/blog/05/10041/</link>
		<comments>https://www.emblogic.com/blog/05/10041/#comments</comments>
		<pubDate>Mon, 12 May 2014 10:30:54 +0000</pubDate>
		<dc:creator><![CDATA[ramkeshvats]]></dc:creator>
				<category><![CDATA[Data Structures with C]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10041</guid>
		<description><![CDATA[It is always a good practice to assign a NULL value to a pointer variable in case you do not have exact address to be assigned. This is done at the time of variable declaration. A pointer that is assigned &#8230; <a href="https://www.emblogic.com/blog/05/10041/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It is always a good practice to assign a NULL value to a pointer variable in case you do not have exact address to be assigned. This is done at the time of variable declaration. A pointer that is assigned NULL is called a null pointer.</p>
<p>The NULL pointer is a constant with a value of zero defined in several standard libraries ex.-</p>
<p>On most of the operating systems, programs are not permitted to access memory at address 0 because that memory is reserved by the operating system. However, the memory address 0 has special significance; it signals that the pointer is not intended to point to an accessible memory location. But by convention, if a pointer contains the null (zero) value, it is assumed to point to nothing.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/05/10041/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>how to insert and delete elements in linked list at various position</title>
		<link>https://www.emblogic.com/blog/03/how-to-insert-and-delete-elements-in-linked-list-at-various-position/</link>
		<comments>https://www.emblogic.com/blog/03/how-to-insert-and-delete-elements-in-linked-list-at-various-position/#comments</comments>
		<pubDate>Thu, 27 Mar 2014 10:45:36 +0000</pubDate>
		<dc:creator><![CDATA[ramkeshvats]]></dc:creator>
				<category><![CDATA[Data Structures with C]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9556</guid>
		<description><![CDATA[head 1.1; access; symbols; locks root:1.1; strict; comment @ * @; 1.1 date 2014.03.27.10.47.56; author root; state Exp; branches; next ; desc @@ 1.1 log @Initial revision @ text @#include #include struct node { int data; struct node * next; &#8230; <a href="https://www.emblogic.com/blog/03/how-to-insert-and-delete-elements-in-linked-list-at-various-position/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>head	1.1;<br />
access;<br />
symbols;<br />
locks<br />
	root:1.1; strict;<br />
comment	@ * @;</p>
<p>1.1<br />
date	2014.03.27.10.47.56;	author root;	state Exp;<br />
branches;<br />
next	;</p>
<p>desc<br />
@@</p>
<p>1.1<br />
log<br />
@Initial revision<br />
@<br />
text<br />
@#include<br />
#include<br />
struct node<br />
{<br />
	int data;<br />
	struct node * next;<br />
};<br />
struct node * create_ll( );<br />
struct node * insert_ll(struct node * );<br />
struct node * insert_beg(struct node * );<br />
struct node * insert_pos(struct node * );<br />
struct node * insert_end(struct node * );<br />
struct node * delete_ll(struct node  * );<br />
struct node * delete_beg(struct node  * );<br />
struct node * delete_pos(struct node  * );<br />
struct node * delete_end(struct node  * );<br />
struct node * display_ll(struct node * );<br />
int main()<br />
{<br />
	struct node * start;<br />
	int ch;<br />
	do<br />
	{<br />
		printf(&#8220;\n1 create linklist&#8221;);<br />
		printf(&#8220;\n2 insert linklist&#8221;);<br />
		printf(&#8220;\n3 delete linklist&#8221;);<br />
		printf(&#8220;\n4 display linklist&#8221;);<br />
		printf(&#8220;\n5 quit&#8221;);<br />
		printf(&#8220;\n enter the choice&#8221;);<br />
		scanf(&#8220;%d&#8221;,&amp;ch);</p>
<p>		switch(ch)<br />
		{<br />
			case 1:<br />
				start=create_ll();<br />
				break;<br />
			case 2:<br />
				start=insert_ll(start);<br />
				break;<br />
			case 3:<br />
				start=delete_ll(start);<br />
				break;<br />
			case 4:<br />
				start=display_ll(start);<br />
				break;<br />
		}<br />
}while(ch != 5);<br />
return 0;<br />
}<br />
struct node * create_ll()<br />
{<br />
	struct node * temp;<br />
	temp=malloc(sizeof(struct node));<br />
	printf(&#8220;enter the data&#8221;);<br />
	scanf(&#8220;%d&#8221;,&amp;temp-&gt;data);<br />
	temp-&gt;next=NULL;<br />
	return temp;<br />
}<br />
struct node * insert_ll(struct node * start )<br />
{<br />
	int ch;<br />
	printf(&#8220;\n1 insert at the beg&#8221;);<br />
	printf(&#8220;\n2 insert at the pos&#8221;);<br />
	printf(&#8220;\n3 insert at the end&#8221;);<br />
	printf(&#8220;\n enter the choice&#8221;);<br />
		scanf(&#8220;%d&#8221;,&amp;ch);<br />
	switch(ch)<br />
	{<br />
		case 1:<br />
			start=insert_beg(start);<br />
			break;<br />
		case 2:<br />
			start=insert_pos(start);<br />
			break;<br />
		case 3:<br />
			start=insert_end(start);<br />
			break;</p>
<p>	}</p>
<p>return start;<br />
}<br />
struct node * delete_ll(struct node * start )<br />
{<br />
	int ch;<br />
	printf(&#8220;\n1 delete at the beg&#8221;);<br />
	printf(&#8220;\n2 delete at the pos&#8221;);<br />
	printf(&#8220;\n3 delete at the end&#8221;);<br />
	printf(&#8220;\n enter the choice&#8221;);<br />
		scanf(&#8220;%d&#8221;,&amp;ch);<br />
	switch(ch)<br />
	{<br />
		case 1:<br />
			start=delete_beg(start);<br />
			break;<br />
		case 2:<br />
			start=delete_pos(start);<br />
			break;<br />
		case 3:<br />
			start=delete_end(start);<br />
			break;<br />
	}<br />
	return start;<br />
}</p>
<p>struct node * display_ll(struct node * start)<br />
{<br />
	struct node * temp;<br />
	temp=start;<br />
	while(temp!=NULL)<br />
	{<br />
		printf(&#8220;entered data is %d&#8221;,temp-&gt;data);<br />
		temp=temp-&gt;next;</p>
<p>	}<br />
return start;<br />
}<br />
struct node * insert_beg(struct node * start)<br />
{<br />
	struct node * temp;<br />
	temp=create_ll();<br />
	temp-&gt;next=start;<br />
	start=temp;<br />
	return start;</p>
<p>}<br />
struct node * insert_pos(struct node * start)<br />
{<br />
	int i,n;<br />
	struct node * temp,* new;<br />
	temp=start;<br />
	new=create_ll();<br />
	printf(&#8220;enter the position to be inserted&#8221;);<br />
	scanf(&#8220;%d&#8221;,&amp;n);<br />
	for(i=0;inext;<br />
	}<br />
   	new-&gt;next=temp-&gt;next;<br />
	temp-&gt;next=new;<br />
	return start;</p>
<p>}<br />
struct node * insert_end(struct node * start)<br />
{<br />
	struct node * temp,* new;<br />
	temp=start;<br />
	new=create_ll();<br />
	while(temp-&gt;next!=NULL)<br />
	{<br />
		temp=temp-&gt;next;<br />
		}<br />
	temp-&gt;next=new;<br />
	new-&gt;next=NULL;<br />
	return start;<br />
}<br />
struct node * delete_beg(struct node * start)<br />
{<br />
	struct node * temp;<br />
	temp=start;<br />
	start=start-&gt;next;;<br />
	free(temp);<br />
		return start;<br />
}<br />
struct node * delete_pos(struct node * start)<br />
{<br />
	struct node * temp,* pre;<br />
	int i,m;<br />
	temp=start;<br />
	printf(&#8220;\nenter the position&#8221;);<br />
	scanf(&#8220;%d&#8221;,&amp;m);<br />
			for(i=0;inext;<br />
			}<br />
			pre-&gt;next=temp-&gt;next;<br />
			free(temp);<br />
			return start;<br />
}<br />
struct node * delete_end(struct node * start)<br />
{<br />
		struct node * temp,*pre;<br />
		temp=start;<br />
		while(temp-&gt;next!=NULL)<br />
		{<br />
		 	pre=temp;<br />
			temp=temp-&gt;next;<br />
			}<br />
			free(temp);<br />
			pre-&gt;next=NULL;<br />
			return start;</p>
<p>} </p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/how-to-insert-and-delete-elements-in-linked-list-at-various-position/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>function pointer</title>
		<link>https://www.emblogic.com/blog/03/function-pointer/</link>
		<comments>https://www.emblogic.com/blog/03/function-pointer/#comments</comments>
		<pubDate>Tue, 25 Mar 2014 09:48:44 +0000</pubDate>
		<dc:creator><![CDATA[ramkeshvats]]></dc:creator>
				<category><![CDATA[Data Structures with C]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9402</guid>
		<description><![CDATA[we cannot define a function into a structure, but we can define a function pointer in structure.]]></description>
				<content:encoded><![CDATA[<p>we cannot define a function into a structure, but we can define a function pointer in structure.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/function-pointer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>masterarray</title>
		<link>https://www.emblogic.com/blog/03/masterarray/</link>
		<comments>https://www.emblogic.com/blog/03/masterarray/#comments</comments>
		<pubDate>Tue, 25 Mar 2014 09:42:44 +0000</pubDate>
		<dc:creator><![CDATA[ramkeshvats]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9267</guid>
		<description><![CDATA[masterarray created sucessfully]]></description>
				<content:encoded><![CDATA[<p>masterarray created sucessfully</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/masterarray/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
