<?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; gagan7230</title>
	<atom:link href="https://www.emblogic.com/blog/author/gagan7230/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>Thread concept</title>
		<link>https://www.emblogic.com/blog/06/thread-concept/</link>
		<comments>https://www.emblogic.com/blog/06/thread-concept/#comments</comments>
		<pubDate>Fri, 06 Jun 2014 06:29:12 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 04: FTP based Client Server using Threads and Sockets]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10342</guid>
		<description><![CDATA[Thread operations include thread creation, termination, synchronization (joins,blocking), scheduling, data management and process interaction. A thread does not maintain a list of created threads, nor does it know the thread that created it. All threads within a process share the &#8230; <a href="https://www.emblogic.com/blog/06/thread-concept/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<ul>
<li>Thread operations include thread creation, termination, synchronization (joins,blocking), scheduling, data management and process interaction.</li>
<li>A thread does not maintain a list of created threads, nor does it know the thread that created it.</li>
<li>All threads within a process share the same address space.</li>
<li>Threads in the same process share:
<ul>
<li>Process instructions</li>
<li>Most data</li>
<li>open files (descriptors)</li>
<li>signals and signal handlers</li>
<li>current working directory</li>
<li>User and group id</li>
</ul>
</li>
<li>Each thread has a unique:
<ul>
<li>Thread ID</li>
<li>set of registers, stack pointer</li>
<li>stack for local variables, return addresses</li>
<li>signal mask</li>
<li>priority</li>
<li>Return value: <tt>errno</tt></li>
</ul>
</li>
<li>pthread functions return &#8220;0&#8243; if OK.</li>
</ul>
<p><a name="CREATIONTERMINATION"></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/thread-concept/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Threads</title>
		<link>https://www.emblogic.com/blog/06/threads-3/</link>
		<comments>https://www.emblogic.com/blog/06/threads-3/#comments</comments>
		<pubDate>Thu, 05 Jun 2014 07:53:21 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 04: FTP based Client Server using Threads and Sockets]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=10328</guid>
		<description><![CDATA[The POSIX thread libraries are a standards based thread API for C/C++. It allows one to spawn a new concurrent process flow. It is most effective on multi-processor or multi-core systems where the process flow can be scheduled to run &#8230; <a href="https://www.emblogic.com/blog/06/threads-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The POSIX thread libraries are a standards based thread API for C/C++. It allows one to spawn a new concurrent process flow. It is most effective on multi-processor or multi-core systems where the process flow can be scheduled to run on another processor thus gaining speed through parallel or distributed processing. Threads require less overhead than &#8220;forking&#8221; or spawning a new process because the system does not initialize a new system virtual memory space and environment for the process. While most effective on a multiprocessor system, gains are also found on uniprocessor systems which exploit latency in I/O and other system functions which may halt process execution. (One thread may execute while another is waiting for I/O or some other system latency.) Parallel programming technologies such as MPI and PVM are used in a distributed computing environment while threads are limited to a single computer system. All threads within a process share the same address space. A thread is spawned by defining a function and its arguments which will be processed in the thread. The purpose of using the POSIX thread library in your software is to execute software faster</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/06/threads-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>shell</title>
		<link>https://www.emblogic.com/blog/04/shell-2/</link>
		<comments>https://www.emblogic.com/blog/04/shell-2/#comments</comments>
		<pubDate>Thu, 03 Apr 2014 17:14:51 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 9: Embedded Linux on ARM]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9776</guid>
		<description><![CDATA[A Unix shell is a command-line interpreter or shell that provides a traditional user interface for the Unix operating system and for Unix-like systems. Users direct the operation of the computer by entering commands as text for a command line &#8230; <a href="https://www.emblogic.com/blog/04/shell-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>A <strong>Unix shell</strong> is a <a title="Command-line interpreter" href="http://en.wikipedia.org/wiki/Command-line_interpreter">command-line interpreter</a> or <a title="Shell (computing)" href="http://en.wikipedia.org/wiki/Shell_%28computing%29">shell</a> that provides a traditional <a title="User interface" href="http://en.wikipedia.org/wiki/User_interface">user interface</a> for the <a title="Unix" href="http://en.wikipedia.org/wiki/Unix">Unix</a> <a title="Operating system" href="http://en.wikipedia.org/wiki/Operating_system">operating system</a> and for <a title="Unix-like" href="http://en.wikipedia.org/wiki/Unix-like">Unix-like</a> systems. Users direct the operation of the <a title="Computer" href="http://en.wikipedia.org/wiki/Computer">computer</a> by entering commands as text for a <a title="Command line interpreter" href="http://en.wikipedia.org/wiki/Command_line_interpreter">command line interpreter</a> to execute, or by creating text scripts of one or more such commands. Users typically interact with a Unix shell using a <a title="Terminal emulator" href="http://en.wikipedia.org/wiki/Terminal_emulator">terminal emulator</a>, however, direct operation via serial hardware connections, or networking session, are common for server systems.</p>
<p>The most influential Unix shells have been the <a title="Bourne shell" href="http://en.wikipedia.org/wiki/Bourne_shell">Bourne shell</a> and the <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell">C shell</a>, These shells have both been used as the coding base and model for many derivative and work-alike shells with extended feature sets.</p>
<p>The Bourne shell, <em>sh</em>, was written by <a title="Stephen Bourne" href="http://en.wikipedia.org/wiki/Stephen_Bourne">Stephen Bourne</a> at AT&amp;T as the original Unix command line interpreter; it introduced the basic features common to all the Unix shells, including <a title="Pipeline (Unix)" href="http://en.wikipedia.org/wiki/Pipeline_%28Unix%29">piping</a>, <a title="Here document" href="http://en.wikipedia.org/wiki/Here_document">here documents</a>, <a title="Command substitution" href="http://en.wikipedia.org/wiki/Command_substitution">command substitution</a>, <a title="Variable (programming)" href="http://en.wikipedia.org/wiki/Variable_%28programming%29">variables</a>, <a title="Control flow" href="http://en.wikipedia.org/wiki/Control_flow">control structures</a> for condition-testing and looping and filename <a title="Wildcard character" href="http://en.wikipedia.org/wiki/Wildcard_character">wildcarding</a>. The language, including the use of a reversed keyword to mark the end of a block, was influenced by <a title="ALGOL 68" href="http://en.wikipedia.org/wiki/ALGOL_68">ALGOL 68</a>.<sup><a href="http://en.wikipedia.org/wiki/Unix_shell#cite_note-1">[1]</a></sup></p>
<p>The <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell">C shell</a>, <em>csh</em>, was written by <a title="Bill Joy" href="http://en.wikipedia.org/wiki/Bill_Joy">Bill Joy</a> while a graduate student at <a title="University of California, Berkeley" href="http://en.wikipedia.org/wiki/University_of_California,_Berkeley">University of California, Berkeley</a>. The language, including the control structures and the expression grammar, was modeled on C. The C shell also introduced a large number of features for interactive work, including the <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#History">history</a> and <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#Editing_operators">editing</a> mechanisms, <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#Aliases">aliases</a>, <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#Directory_stack">directory stacks</a>, <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#Tilde_notation">tilde notation</a>, <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#Cdpath">cdpath</a>, <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#Job_control">job control</a> and <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#Path_hashing">path hashing</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/shell-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bash</title>
		<link>https://www.emblogic.com/blog/04/bash/</link>
		<comments>https://www.emblogic.com/blog/04/bash/#comments</comments>
		<pubDate>Wed, 02 Apr 2014 17:57:15 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 9: Embedded Linux on ARM]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9773</guid>
		<description><![CDATA[Bash is a Unix shell written by Brian Fox for the GNU Project as a free software replacement for the Bourne shell (sh).[3][4] Released in 1989,[5] it has been distributed widely as the shell for the GNU operating system and &#8230; <a href="https://www.emblogic.com/blog/04/bash/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><strong>Bash</strong> is a <a title="Unix shell" href="http://en.wikipedia.org/wiki/Unix_shell">Unix shell</a> written by <a title="Brian Fox (computer programmer)" href="http://en.wikipedia.org/wiki/Brian_Fox_%28computer_programmer%29">Brian Fox</a> for the <a title="GNU Project" href="http://en.wikipedia.org/wiki/GNU_Project">GNU Project</a> as a <a title="Free software" href="http://en.wikipedia.org/wiki/Free_software">free software</a> replacement for the <a title="Bourne shell" href="http://en.wikipedia.org/wiki/Bourne_shell">Bourne shell</a> (sh).<sup><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29#cite_note-GNUBSD-3">[3]</a></sup><sup><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29#cite_note-4">[4]</a></sup> Released in 1989,<sup><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29#cite_note-BashBeta-5">[5]</a></sup> it has been distributed widely as the shell for the <a title="GNU operating system" href="http://en.wikipedia.org/wiki/GNU_operating_system">GNU operating system</a> and as a default shell on <a title="Linux" href="http://en.wikipedia.org/wiki/Linux">Linux</a> and <a title="Mac OS X" href="http://en.wikipedia.org/wiki/Mac_OS_X">Mac OS X</a>. It has been ported to <a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows">Microsoft Windows</a> and distributed with <a title="Cygwin" href="http://en.wikipedia.org/wiki/Cygwin">Cygwin</a> and <a title="MinGW" href="http://en.wikipedia.org/wiki/MinGW">MinGW</a>, to <a title="DOS" href="http://en.wikipedia.org/wiki/DOS">DOS</a> by the <a title="DJGPP" href="http://en.wikipedia.org/wiki/DJGPP">DJGPP</a> project, to <a title="Novell NetWare" href="http://en.wikipedia.org/wiki/Novell_NetWare">Novell NetWare</a> and to <a title="Android (operating system)" href="http://en.wikipedia.org/wiki/Android_%28operating_system%29">Android</a> via various terminal emulation applications.</p>
<p>Bash is a <a title="Command-line interpreter" href="http://en.wikipedia.org/wiki/Command-line_interpreter">command processor</a>, typically run in a text window, allowing the user to type commands which cause actions. Bash can also read commands from a file, called a <a title="Shell script" href="http://en.wikipedia.org/wiki/Shell_script">script</a>. Like all Unix shells, it supports filename <a title="Wildcard character" href="http://en.wikipedia.org/wiki/Wildcard_character">wildcarding</a>, <a title="Pipeline (Unix)" href="http://en.wikipedia.org/wiki/Pipeline_%28Unix%29">piping</a>, <a title="Here document" href="http://en.wikipedia.org/wiki/Here_document">here documents</a>, <a title="Command substitution" href="http://en.wikipedia.org/wiki/Command_substitution">command substitution</a>, <a title="Variable (programming)" href="http://en.wikipedia.org/wiki/Variable_%28programming%29">variables</a> and <a title="Control flow" href="http://en.wikipedia.org/wiki/Control_flow">control structures</a> for <a title="Conditional (programming)" href="http://en.wikipedia.org/wiki/Conditional_%28programming%29">condition-testing</a> and <a title="Iteration" href="http://en.wikipedia.org/wiki/Iteration">iteration</a>.<sup><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29#cite_note-6">[6]</a></sup> The <a title="Keyword (computer programming)" href="http://en.wikipedia.org/wiki/Keyword_%28computer_programming%29">keywords</a>, <a title="Syntax (programming languages)" href="http://en.wikipedia.org/wiki/Syntax_%28programming_languages%29">syntax</a> and other basic features of the <a title="Language (computer science)" href="http://en.wikipedia.org/wiki/Language_%28computer_science%29">language</a> were all copied from sh. Other features, e.g., <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell#History">history</a>, were copied from <a title="C shell" href="http://en.wikipedia.org/wiki/C_shell">csh</a> and <a title="Korn shell" href="http://en.wikipedia.org/wiki/Korn_shell">ksh</a>. Bash is a <a title="POSIX" href="http://en.wikipedia.org/wiki/POSIX">POSIX</a> shell but with a number of extensions.</p>
<p>The name itself is an <a title="Acronym" href="http://en.wikipedia.org/wiki/Acronym">acronym</a>, a <a title="Pun" href="http://en.wikipedia.org/wiki/Pun">pun</a>, and a description. As an acronym, it stands for <em>Bourne-again shell</em>, referring to its objective as a free replacement for the Bourne shell.<sup><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29#cite_note-7">[7]</a></sup> As a pun, it expressed that objective in a phrase that sounds similar to <em><a title="Born again (Christianity)" href="http://en.wikipedia.org/wiki/Born_again_%28Christianity%29">born again</a></em>, a term for spiritual rebirth.<sup><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29#cite_note-8">[8]</a></sup><sup><a href="http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29#cite_note-9">[9]</a></sup> The name is also descriptive of what it did, <em>bashing together</em> the features of sh, csh and ksh.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Initialising the Message Queue</title>
		<link>https://www.emblogic.com/blog/04/initialising-the-message-queue/</link>
		<comments>https://www.emblogic.com/blog/04/initialising-the-message-queue/#comments</comments>
		<pubDate>Tue, 01 Apr 2014 17:20:47 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9751</guid>
		<description><![CDATA[The msgget() function initializes a new message queue: int msgget(key_t key, int msgflg) It can also return the message queue ID (msqid) of the queue corresponding to the key argument. The value passed as the msgflg argument must be an &#8230; <a href="https://www.emblogic.com/blog/04/initialising-the-message-queue/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The <tt>msgget()</tt> function initializes a new message queue:</p>
<pre>int msgget(key_t key, int msgflg)</pre>
<p>It can also return the message queue ID (<tt>msqid</tt>) of the queue corresponding to the key argument. The value passed as the <tt>msgflg</tt> argument must be an octal integer with settings for the queue&#8217;s permissions and control flags.</p>
<p>The following code illustrates the <tt>msgget()</tt> function.</p>
<pre>#include &lt;sys/ipc.h&gt;; 
#include &lt;sys/msg.h&gt;; 

... 

key_t key; /* key to be passed to msgget() */ 
int msgflg /* msgflg to be passed to msgget() */ 
int msqid; /* return value from msgget() */ 

...
key = ...
msgflg = ...

if ((msqid = msgget(key, msgflg)) == &amp;ndash;1)
  {
    perror("msgget: msgget failed");
    exit(1);
   } else
    (void) fprintf(stderr, &amp;ldquo;msgget succeeded");
...</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/04/initialising-the-message-queue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ipc using fifo</title>
		<link>https://www.emblogic.com/blog/03/ipc-using-fifo-3/</link>
		<comments>https://www.emblogic.com/blog/03/ipc-using-fifo-3/#comments</comments>
		<pubDate>Mon, 31 Mar 2014 17:29:22 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9728</guid>
		<description><![CDATA[RCS file: fifoserver.c,v 3 Working file: fifoserver.c 4 head: 1.4 5 branch: 6 locks: strict 7         root: 1.4 8 access list: 9 symbolic names: 10 keyword substitution: kv 11 total revisions: 4;     selected revisions: 4 12 description: 13 client1 had &#8230; <a href="https://www.emblogic.com/blog/03/ipc-using-fifo-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: fifoserver.c,v<br />
3 Working file: fifoserver.c<br />
4 head: 1.4<br />
5 branch:<br />
6 locks: strict<br />
7         root: 1.4<br />
8 access list:<br />
9 symbolic names:<br />
10 keyword substitution: kv<br />
11 total revisions: 4;     selected revisions: 4<br />
12 description:<br />
13 client1 had open the fifo and writes the data and then server had read the data.<br />
14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
15 revision 1.4    locked by: root;<br />
16 date: 2014/03/29 06:49:06;  author: root;  state: Exp;  lines: +1 -1<br />
17 processing client received the data and no.s are added.<br />
18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
19 revision 1.3<br />
20 date: 2014/03/28 10:47:55;  author: root;  state: Exp;  lines: +10 -2<br />
21 data is read by server from three requesting clients<br />
22 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
23 revision 1.2<br />
24 date: 2014/03/28 09:46:01;  author: root;  state: Exp;  lines: +20 -2<br />
25 data is read in server from two requesting clients<br />
26 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
27 revision 1.1<br />
28 date: 2014/03/28 06:18:35;  author: root;  state: Exp;<br />
29 Initial revision<br />
30 =============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/ipc-using-fifo-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ipc using fifo</title>
		<link>https://www.emblogic.com/blog/03/ipc-using-fifo/</link>
		<comments>https://www.emblogic.com/blog/03/ipc-using-fifo/#comments</comments>
		<pubDate>Fri, 28 Mar 2014 17:26:38 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9628</guid>
		<description><![CDATA[2 RCS file: fifoserver.c,v 3 Working file: fifoserver.c 4 head: 1.3 5 branch: 6 locks: strict 7 access list: 8 symbolic names: 9 keyword substitution: kv 10 total revisions: 3;     selected revisions: 3 11 description: 12 client1 had open the &#8230; <a href="https://www.emblogic.com/blog/03/ipc-using-fifo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>2 RCS file: fifoserver.c,v<br />
3 Working file: fifoserver.c<br />
4 head: 1.3<br />
5 branch:<br />
6 locks: strict<br />
7 access list:<br />
8 symbolic names:<br />
9 keyword substitution: kv<br />
10 total revisions: 3;     selected revisions: 3<br />
11 description:<br />
12 client1 had open the fifo and writes the data and then server had read the data.<br />
13 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
14 revision 1.3<br />
15 date: 2014/03/28 10:47:55;  author: root;  state: Exp;  lines: +10 -2<br />
16 data is read by server from three requesting clients<br />
17 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
18 revision 1.2<br />
19 date: 2014/03/28 09:46:01;  author: root;  state: Exp;  lines: +20 -2<br />
20 data is read in server from two requesting clients<br />
21 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
22 revision 1.1<br />
23 date: 2014/03/28 06:18:35;  author: root;  state: Exp;<br />
24 Initial revision<br />
25 =============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/ipc-using-fifo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FIFO</title>
		<link>https://www.emblogic.com/blog/03/fifo-8/</link>
		<comments>https://www.emblogic.com/blog/03/fifo-8/#comments</comments>
		<pubDate>Thu, 27 Mar 2014 17:44:30 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9578</guid>
		<description><![CDATA[A FIFO special file (a named pipe) is similar to a pipe, except that it is accessed as part of the filesystem. It can be opened by multiple processes for reading or writing. When processes are exchanging data via the &#8230; <a href="https://www.emblogic.com/blog/03/fifo-8/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<pre>       A FIFO special file (a named pipe) is similar to a pipe, except that
       it is accessed as part of the filesystem.  It can be opened by
       multiple processes for reading or writing.  When processes are
       exchanging data via the FIFO, the kernel passes all data internally
       without writing it to the filesystem.  Thus, the FIFO special file
       has no contents on the filesystem; the filesystem entry merely serves
       as a reference point so that processes can access the pipe using a
       name in the filesystem.

       The kernel maintains exactly one pipe object for each FIFO special
       file that is opened by at least one process.  The FIFO must be opened
       on both ends (reading and writing) before data can be passed.
       Normally, opening the FIFO blocks until the other end is opened also.

       A process can open a FIFO in nonblocking mode.  In this case, opening
       for read-only will succeed even if no-one has opened on the write
       side yet, opening for write-only will fail with <strong>ENXIO </strong>(no such device
       or address) unless the other end has already been opened.

       Under Linux, opening a FIFO for read and write will succeed both in
       blocking and nonblocking mode.  POSIX leaves this behavior undefined.
       This can be used to open a FIFO for writing while there are no
       readers available.  A process that uses both ends of the connection
       in order to communicate with itself should be very careful to avoid
       deadlocks.</pre>
<h2></h2>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/fifo-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RCS</title>
		<link>https://www.emblogic.com/blog/03/rcs-2/</link>
		<comments>https://www.emblogic.com/blog/03/rcs-2/#comments</comments>
		<pubDate>Wed, 26 Mar 2014 17:11:31 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Embedded Linux]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9520</guid>
		<description><![CDATA[The RCS Revision Control System manages modifications to individual files. Files can be locked while checked out for change by a programmer to protect against poor coordination and comunications. Comparison with previous versions of the file and access to previous &#8230; <a href="https://www.emblogic.com/blog/03/rcs-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The RCS Revision Control System manages modifications to individual files. Files can be locked while checked out for change by a programmer to protect against poor coordination and comunications. Comparison with previous versions of the file and access to previous versions is also possible.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/rcs-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DHCP server</title>
		<link>https://www.emblogic.com/blog/03/dhcp-server/</link>
		<comments>https://www.emblogic.com/blog/03/dhcp-server/#comments</comments>
		<pubDate>Tue, 25 Mar 2014 17:20:55 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 00: Linux System / Network Administration]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9465</guid>
		<description><![CDATA[The Dynamic Host Configuration Protocol is used by computers for requesting Internet Protocol parameters, such as an IP address from a network server. The protocol operates based on the client-server model. DHCP is very common in all modern networks[1] ranging &#8230; <a href="https://www.emblogic.com/blog/03/dhcp-server/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The Dynamic Host Configuration Protocol is used by computers for requesting Internet Protocol parameters, such as an <a title="IP address" href="http://en.wikipedia.org/wiki/IP_address">IP address</a> from a network server. The protocol operates based on the <a title="Client-server model" href="http://en.wikipedia.org/wiki/Client-server_model">client-server model</a>. DHCP is very common in all modern networks<sup><a href="http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol#cite_note-1">[1]</a></sup> ranging in size from <a title="Home network" href="http://en.wikipedia.org/wiki/Home_network">home networks</a> to large <a title="Campus network" href="http://en.wikipedia.org/wiki/Campus_network">campus networks</a> and regional <a title="Internet service provider" href="http://en.wikipedia.org/wiki/Internet_service_provider">Internet service provider</a> networks. Most residential network routers receive a globally unique IP address within the provider network. Within a local network, DHCP assigns a local IP address to devices connected to the local network.</p>
<p>When a computer or other networked device connects to a network, its DHCP client software in the operating system sends a <a title="Broadcasting (computing)" href="http://en.wikipedia.org/wiki/Broadcasting_%28computing%29">broadcast</a> query requesting necessary information. Any DHCP server on the network may service the request. The DHCP server manages a pool of IP addresses and information about client configuration parameters such as <a title="Default gateway" href="http://en.wikipedia.org/wiki/Default_gateway">default gateway</a>, <a title="Domain name" href="http://en.wikipedia.org/wiki/Domain_name">domain name</a>, the <a title="Name server" href="http://en.wikipedia.org/wiki/Name_server">name servers</a>, <a title="Time server" href="http://en.wikipedia.org/wiki/Time_server">time servers</a>. On receiving a request, the server may respond with specific information for each client, as previously configured by an administrator, or with a specific address and any other information valid for the entire network, and the time period for which the allocation (<em>lease</em>) is valid. A host typically queries for this information immediately after <a title="Booting" href="http://en.wikipedia.org/wiki/Booting">booting</a>, and periodically thereafter before the expiration of the information. When an assignment is refreshed by the client computer, it initially requests the same parameter values, but may be assigned a new address from the server, based on the assignment policies set by administrators.</p>
<p>On large networks that consist of multiple links, a single DHCP server may service the entire network when aided by DHCP relay agents located on the interconnecting routers. Such agents relay messages between DHCP clients and DHCP servers located on different subnets.</p>
<p>Depending on implementation, the DHCP server may have three methods of allocating IP-addresses:</p>
<ul>
<li><em>dynamic allocation</em>: A <a title="Network administrator" href="http://en.wikipedia.org/wiki/Network_administrator">network administrator</a> reserves a range of IP addresses for DHCP, and each client computer on the LAN is configured to request an IP address from the DHCP <a title="Server (computing)" href="http://en.wikipedia.org/wiki/Server_%28computing%29">server</a> during network initialization. The request-and-grant process uses a lease concept with a controllable time period, allowing the DHCP server to reclaim (and then reallocate) IP addresses that are not renewed.</li>
<li><em>automatic allocation</em>: The DHCP server permanently assigns an IP address to a requesting client from the range defined by the administrator. This is like dynamic allocation, but the DHCP server keeps a table of past IP address assignments, so that it can preferentially assign to a client the same IP address that the client previously had.</li>
<li><em>static allocation</em>: The DHCP server allocates an IP address based on a preconfigured mapping to each client&#8217;s <a title="MAC address" href="http://en.wikipedia.org/wiki/MAC_address">MAC address</a>. This feature is variously called <em>static DHCP assignment</em> by <a title="DD-WRT" href="http://en.wikipedia.org/wiki/DD-WRT">DD-WRT</a>, <em>fixed-address</em> by the dhcpd documentation, <em>address reservation</em> by Netgear, <em>DHCP reservation</em> or <em>static DHCP</em> by <a title="Cisco" href="http://en.wikipedia.org/wiki/Cisco">Cisco</a> and <a title="Linksys" href="http://en.wikipedia.org/wiki/Linksys">Linksys</a>, and <em>IP address reservation</em> or <em>MAC/IP address binding</em> by various other router manufacturers.</li>
</ul>
<p>DHCP is used for <a title="IPv4" href="http://en.wikipedia.org/wiki/IPv4">Internet Protocol version 4</a> (IPv4), as well as <a title="IPv6" href="http://en.wikipedia.org/wiki/IPv6">IPv6</a>. While both versions serve the same purpose, the details of the protocol for IPv4 and IPv6 are sufficiently different that they may be considered separate protocols.<sup><a href="http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol#cite_note-2">[2]</a></sup> <a title="IPv6" href="http://en.wikipedia.org/wiki/IPv6">IPv6</a> devices may alternatively use <a title="IPv6 stateless address autoconfiguration" href="http://en.wikipedia.org/wiki/IPv6_stateless_address_autoconfiguration">stateless address autoconfiguration</a>. IPv4 hosts may use <a title="Link-local addressing" href="http://en.wikipedia.org/wiki/Link-local_addressing">link-local addressing</a> to achieve limited local connectivity.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/dhcp-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>semaphores</title>
		<link>https://www.emblogic.com/blog/03/semaphores-2/</link>
		<comments>https://www.emblogic.com/blog/03/semaphores-2/#comments</comments>
		<pubDate>Mon, 24 Mar 2014 16:54:34 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9315</guid>
		<description><![CDATA[Semaphores are a programming construct designed by E. W. Dijkstra in the late 1960s. Dijkstra&#8217;s model was the operation of railroads: consider a stretch of railroad in which there is a single track over which only one train at a &#8230; <a href="https://www.emblogic.com/blog/03/semaphores-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Semaphores are a programming construct designed by E. W. Dijkstra in the late 1960s. Dijkstra&#8217;s model was the operation of railroads: consider a stretch of railroad in which there is a single track over which only one train at a time is allowed. Guarding this track is a semaphore. A train must wait before entering the single track until the semaphore is in a state that permits travel. When the train enters the track, the semaphore changes state to prevent other trains from entering the track. A train that is leaving this section of track must again change the state of the semaphore to allow another train to enter. In the computer version, a semaphore appears to be a simple integer. A process (or a thread) waits for permission to proceed by waiting for the integer to become 0. The signal if it proceeds signals that this by performing incrementing the integer by 1. When it is finished, the process changes the semaphore&#8217;s value by subtracting one from it.</p>
<p>Semaphores let processes query or alter status information. They are often used to monitor and control the availability of system resources such as shared memory segments.</p>
<p>Semaphores can be operated on as individual units or as elements in a set. Because System V IPC semaphores can be in a large array, they are extremely heavy weight. Much lighter weight semaphores are available in the threads library (see <tt>man semaphore</tt> and also Chapter <a href="http://www.cs.cf.ac.uk/Dave/C/node31.html#ch:thread_sem">30.3</a>) and POSIX semaphores (see below briefly). Threads library semaphores must be used with mapped memory . A semaphore set consists of a control structure and an array of individual semaphores. A set of semaphores can contain up to 25 elements.</p>
<p>In a similar fashion to message queues, the semaphore set must be initialized using <tt>semget()</tt>; the semaphore creator can change its ownership or permissions using <tt>semctl()</tt>; and semaphore operations are performed via the <tt>semop()</tt> function</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/semaphores-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bitfield</title>
		<link>https://www.emblogic.com/blog/03/bitfield/</link>
		<comments>https://www.emblogic.com/blog/03/bitfield/#comments</comments>
		<pubDate>Sun, 23 Mar 2014 13:37:51 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Data Structures with C]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9292</guid>
		<description><![CDATA[2 RCS file: bitfield.c,v 3 Working file: bitfield.c 4 head: 1.1 5 branch: 6 locks: strict 7         root: 1.1 8 access list: 9 symbolic names: 10 keyword substitution: kv 11 total revisions: 1;     selected revisions: 1 12 description: 13 bits &#8230; <a href="https://www.emblogic.com/blog/03/bitfield/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>2 RCS file: bitfield.c,v<br />
3 Working file: bitfield.c<br />
4 head: 1.1<br />
5 branch:<br />
6 locks: strict<br />
7         root: 1.1<br />
8 access list:<br />
9 symbolic names:<br />
10 keyword substitution: kv<br />
11 total revisions: 1;     selected revisions: 1<br />
12 description:<br />
13 bits are alloted to different variables<br />
14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
15 revision 1.1    locked by: root;<br />
16 date: 2014/03/23 13:24:45;  author: root;  state: Exp;<br />
17 Initial revision<br />
18 =============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/bitfield/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ipc prjct with one process</title>
		<link>https://www.emblogic.com/blog/03/ipc-prjct-with-one-process/</link>
		<comments>https://www.emblogic.com/blog/03/ipc-prjct-with-one-process/#comments</comments>
		<pubDate>Fri, 21 Mar 2014 06:28:11 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=9187</guid>
		<description><![CDATA[1 2 RCS file: server.c,v 3 Working file: server.c 4 head: 1.1 5 branch: 6 locks: strict 7         root: 1.1 8 access list: 9 symbolic names: 10 keyword substitution: kv 11 total revisions: 1;     selected revisions: 1 12 description: 13 &#8230; <a href="https://www.emblogic.com/blog/03/ipc-prjct-with-one-process/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>1<br />
2 RCS file: server.c,v<br />
3 Working file: server.c<br />
4 head: 1.1<br />
5 branch:<br />
6 locks: strict<br />
7         root: 1.1<br />
8 access list:<br />
9 symbolic names:<br />
10 keyword substitution: kv<br />
11 total revisions: 1;     selected revisions: 1<br />
12 description:<br />
13 this is server<br />
14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
15 revision 1.1    locked by: root;<br />
16 date: 2014/03/19 07:21:04;  author: root;  state: Exp;<br />
17 Initial revision<br />
18 =============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/ipc-prjct-with-one-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>pipes</title>
		<link>https://www.emblogic.com/blog/03/pipes-4/</link>
		<comments>https://www.emblogic.com/blog/03/pipes-4/#comments</comments>
		<pubDate>Thu, 13 Mar 2014 05:39:47 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=8975</guid>
		<description><![CDATA[implemented interprocess communication using pipes.]]></description>
				<content:encoded><![CDATA[<p>implemented interprocess communication using pipes.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/pipes-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linklist</title>
		<link>https://www.emblogic.com/blog/03/linklist-2/</link>
		<comments>https://www.emblogic.com/blog/03/linklist-2/#comments</comments>
		<pubDate>Mon, 03 Mar 2014 06:57:50 +0000</pubDate>
		<dc:creator><![CDATA[gagan7230]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=8684</guid>
		<description><![CDATA[I have used malloc function in linklist for allocating dynamic memory to the pointers.In linklist nodes are at random locations.]]></description>
				<content:encoded><![CDATA[<p>I have used malloc function in linklist for allocating dynamic memory to the pointers.In linklist nodes are at random locations.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/03/linklist-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
