<?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; Abhishek Choubey</title>
	<atom:link href="https://www.emblogic.com/blog/author/abhishekchoubey7391/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>EIA/TIA RS 232 -E specification for data transfer over serial channel( Sending large amount of data ~7MB)</title>
		<link>https://www.emblogic.com/blog/11/eiatia-rs-232-e-specification-for-data-transfer-over-serial-channel-sending-large-amount-of-data-7mb/</link>
		<comments>https://www.emblogic.com/blog/11/eiatia-rs-232-e-specification-for-data-transfer-over-serial-channel-sending-large-amount-of-data-7mb/#comments</comments>
		<pubDate>Fri, 21 Nov 2014 09:19:45 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Serial Port Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11832</guid>
		<description><![CDATA[Summary : - Successful hand shaking as per RS 232 protocol between the DTE and DCE. - ~7MB of data transferred in 13 min. 7 sec. - Data transfer rate is approximately 900 bytes per second. - Circular buffer implemented &#8230; <a href="https://www.emblogic.com/blog/11/eiatia-rs-232-e-specification-for-data-transfer-over-serial-channel-sending-large-amount-of-data-7mb/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Summary :<br />
- Successful hand shaking as per RS 232 protocol between<br />
  the DTE and DCE.<br />
- ~7MB of data transferred in 13 min. 7 sec.<br />
- Data transfer rate is approximately 900 bytes per<br />
  second.<br />
- Circular buffer implemented in writer module of DTE.</p>
<p>log files :&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&gt;&gt; read :<br />
  2 RCS file: dev_read.c,v<br />
  3 Working file: dev_read.c<br />
  4 head: 1.3<br />
  5 branch:<br />
  6 locks: strict<br />
  7         root: 1.3<br />
  8 access list:<br />
  9 symbolic names:<br />
 10 keyword substitution: kv<br />
 11 total revisions: 3;     selected revisions: 3<br />
 12 description:<br />
 13 read module for transfering 7 mb of data over the serial channel using RS-232 protocol.<br />
 14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 15 revision 1.3    locked by: root;<br />
 16 date: 2014/11/21 19:28:25;  author: root;  state: Exp;  lines: +0 -2<br />
 17 removed debugging symbols.<br />
 18 driver in release mode<br />
 19 successful implementation of the read module.<br />
 20 7 MB of data successfully received.<br />
 21<br />
 22<br />
 23 The reader has no way of knowing when the writer will stop sending data, thus to overcome this the application on the<br />
 24 DCE end is to know(explicitly) how musch data is to be send by the DTE.<br />
 25 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 26 revision 1.2<br />
 27 date: 2014/11/21 19:26:21;  author: root;  state: Exp;  lines: +2 -18<br />
 28 successfully implemented the reader module for the DCE.<br />
 29 able to receive 7MB of data.<br />
 30 time taken to transfer 7MB is 13 minutes.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
&gt;&gt; write : </p>
<p>  2 RCS file: dev_write.c,v<br />
  3 Working file: dev_write.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 Sending a file of 7 mb on a serial channel, using the RS 232 protocol.<br />
 13 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 14 revision 1.3<br />
 15 date: 2014/11/21 19:21:46;  author: root;  state: Exp;  lines: +1 -7<br />
 16 Removed the comments.<br />
 17 write module ready for release.<br />
 18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 19 revision 1.2<br />
 20 date: 2014/11/21 19:15:27;  author: root;  state: Exp;  lines: +3 -5<br />
 21 Implemented hand shaking between the DTE and DCE.<br />
 22 DTE has a circular buffer (max size of buffer = 4k bytes).<br />
 23 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/11/eiatia-rs-232-e-specification-for-data-transfer-over-serial-channel-sending-large-amount-of-data-7mb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEEE EIA/TIA-232-E specification and associated serial port device driver</title>
		<link>https://www.emblogic.com/blog/11/ieee-eiatia-232-e-specification-and-associated-serial-port-device-driver/</link>
		<comments>https://www.emblogic.com/blog/11/ieee-eiatia-232-e-specification-and-associated-serial-port-device-driver/#comments</comments>
		<pubDate>Sat, 15 Nov 2014 05:41:32 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Serial Port Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11797</guid>
		<description><![CDATA[Summary : The project uses RS 232 protocol to transfer a single byte of data between two host systems over a serial communication channel. Following are the rcs files : 1. Intialization module : RCS file: ./initialization.c,v Working file: initialization.c &#8230; <a href="https://www.emblogic.com/blog/11/ieee-eiatia-232-e-specification-and-associated-serial-port-device-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Summary :<br />
The project uses RS 232 protocol to transfer a single byte of data between two host systems over a serial communication channel.<br />
Following are the rcs files :<br />
1. Intialization module :<br />
RCS file: ./initialization.c,v<br />
Working file: initialization.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
        root: 1.2<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2;     selected revisions: 2<br />
description:<br />
Following operations have been performed successfully.<br />
&#8211;Driver successfully registered and removed.<br />
&#8211; Range of addresses from 0x3f8 to 0x3ff, acquired and release successfully.<br />
&#8211; Baud rate set by manipulating the Line control register.<br />
&#8211; Number of message bits set, by setting the bits 0 and 1 of the LCR resigter.<br />
&#8211; Driver successfully added to the kernel table.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2    locked by: root;<br />
date: 2014/11/13 15:41:05;  author: root;  state: Exp;  lines: +1 -6<br />
*** empty log message ***<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2014/11/13 15:35:18;  author: root;  state: Exp;<br />
Initial revision<br />
========================================================<br />
2. write module :<br />
RCS file: dev_write.c,v<br />
Working file: dev_write.c<br />
head:<br />
branch:<br />
locks: strict<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 0<br />
description:<br />
write module :<br />
&#8211; write data to the serial port.<br />
&#8211; data read successfully from the user application.<br />
&#8211; data successfully written to the 0x3f8 or the THR ( Transmitter holding Register )<br />
==========================================================<br />
3. read module :<br />
RCS file: dev_read.c,v<br />
Working file: dev_read.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
        root: 1.2<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2;     selected revisions: 2<br />
description:<br />
read module :<br />
&#8211; read the data from the serial port at address 0x03f8 ( Receiver Buffer Register ).<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2    locked by: root;<br />
date: 2014/11/13 15:55:54;  author: root;  state: Exp;  lines: +2 -0<br />
Data read successfully from the port and sent to user application.<br />
Single byte of data received successfully.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2014/11/13 15:55:20;  author: root;  state: Exp;<br />
Initial revision<br />
==========================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/11/ieee-eiatia-232-e-specification-and-associated-serial-port-device-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEEE Std 1284 – 1994 : Standard Signalling Method for a bi-directional parallel peripheral interface for personal computers (Nibble Mode) and associated device driver</title>
		<link>https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-nibble-mode-and-associated-device-driver/</link>
		<comments>https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-nibble-mode-and-associated-device-driver/#comments</comments>
		<pubDate>Mon, 03 Nov 2014 07:36:58 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Parallel Port Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11656</guid>
		<description><![CDATA[This project implements the protocol, for data transfer between a personal computer and a parallel peripheral interface, under NIBBLE MODE. The protocol has been implemented by using polling method for checking the status of the peripheral device and the host. &#8230; <a href="https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-nibble-mode-and-associated-device-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This project implements the protocol, for data transfer between a personal computer and a parallel peripheral interface, under NIBBLE MODE.<br />
The protocol has been implemented by using polling method for checking the status of the peripheral<br />
device and the host.<br />
Successfully able to transfer a byte of data.<br />
The user applications are configured for sending and receiving multiple bytes of data.</p>
<p>Following are the RCS files and code snippet of the project : </p>
<p>1. intialization module :<br />
RCS file: ./initialization.c,v<br />
Working file: initialization.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
	root: 1.2<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2;	selected revisions: 2<br />
description:<br />
IEEE Std. 1284-1994<br />
Standard Signalling method for a Bi-directional parallel peripheral Interface for personal computer.<br />
IC : 74LS244<br />
Mode : Nibble Mode<br />
Module Info : initialization<br />
	This module is responsible for :<br />
	- creating scull for the device.<br />
	- allocating required address for the driver to work.<br />
	- add driver to kernel tree.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2	locked by: root;<br />
date: 2014/11/03 06:38:42;  author: root;  state: Exp;  lines: +0 -8<br />
Successfully allocated memory to the device scull.<br />
requested and acquired the required address space i.e. 0&#215;0378 &#8211; 0x037a<br />
0&#215;0378 for data lines.<br />
0&#215;0379 for status lines.<br />
0x037a for control lines.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Code Snippet :<br />
tatic int __init initialization_function(void){<br />
	/* the name of the driver which you want your driver to be visible */<br />
	const char *name = &#8220;character_device_latest&#8221;;<br />
	int ret, i;<br />
	printk(KERN_ALERT&#8221;%s : Begin&#8221;, __func__);</p>
<p>	/* checking and acquiring region for parallel port*/<br />
	ret = check_region(START, RANGE);<br />
	if(ret &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
2. write module :<br />
RCS file: ./dev_write.c,v<br />
Working file: dev_write.c<br />
head: 1.3<br />
branch:<br />
locks: strict<br />
	root: 1.3<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 3;	selected revisions: 3<br />
description:<br />
Module : the module implements the protocol for sending a byte of data in two nibbles.<br />
The module implements the protocol in the following manner :<br />
	1. reset the data and control lines.<br />
	2. write data to data lines.<br />
	3. check the busy status of the device by polling.<br />
	4. if device is free send strobe signal.<br />
	5. wait for acknowledgement corresponding the first nibble.<br />
	6. repeat steps 2-6 for sending the second nibble.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3	locked by: root;<br />
date: 2014/11/03 07:15:13;  author: root;  state: Exp;  lines: +0 -7<br />
the writer performs the following operations successfully following the protocol for nibble mode.<br />
	1. read data to be sent from user application.<br />
	2. write first nibble to data lines.<br />
	3. get acknowledgement for first nibble and then send the second nibble<br />
	4. wait for acknowledgement of second nibble.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Code Snippet :<br />
int protocol(const char __user* buffer){<br />
	unsigned char temp;<br />
	volatile unsigned char busy;<br />
	volatile unsigned char ack;<br />
	struct nibble n;</p>
<p>	/* remove garbage content from the control and data lines */<br />
	outb(0&#215;0000, CTRL_REG);<br />
	outb(0&#215;0000, DATA_REG);</p>
<p>	/* prepare the first nibble to be sent */<br />
	temp = buffer[0];<br />
	printk(KERN_INFO&#8221;data to be sent to the reader = %d\n&#8221;, temp);<br />
	n.val = temp;<br />
	printk(KERN_INFO&#8221;nibble 1 to be sent to the reader = %d\n&#8221;, n.val);<br />
	outb(n.val, DATA_REG);<br />
	/* check the busy status of the device */<br />
	do{<br />
		busy = inb(STATUS_REG);<br />
		busy = busy &amp; 0&#215;0080;<br />
	}while(busy!=0&#215;0080);<br />
	printk(&#8220;Device free\n&#8221;);<br />
&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;<br />
3. read module :<br />
RCS file: ./dev_read.c,v<br />
Working file: dev_read.c<br />
head: 1.3<br />
branch:<br />
locks: strict<br />
	root: 1.3<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 3;	selected revisions: 3<br />
description:<br />
this module implements the protocol for receiving the data on the reader side.<br />
protocol implemented for Nibble mode.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3	locked by: root;<br />
date: 2014/11/03 07:12:53;  author: root;  state: Exp;  lines: +1 -0<br />
the reader correctly reads a byte of data as sent by the writer.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2014/11/03 07:09:30;  author: root;  state: Exp;  lines: +14 -14<br />
corrected the error in reading the value from the status register.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Code Snippet :<br />
ssize_t dev_read(struct file *filep, char __user *ubuff, size_t size, loff_t *loff)<br />
{<br />
	volatile unsigned char strobe;<br />
	unsigned char data;<br />
	unsigned char temp;<br />
	printk(KERN_INFO&#8221;BEGIN %s\n&#8221;, __func__);</p>
<p>	/* reset the data and control lines and update the busy status to free. */<br />
	outb(0&#215;0000, CTRL_REG);<br />
	outb(0&#215;0001, CTRL_REG);<br />
	outb(0&#215;0000, DATA_REG);</p>
<p>	/* wait on strobe value = 1, first nibble */<br />
	do{<br />
		strobe = inb(STATUS_REG);<br />
		strobe = strobe &amp; 0&#215;0080;<br />
	}while(strobe!=0&#215;0080);<br />
	printk(KERN_INFO&#8221;Got strobe signal from the writer = %d\n&#8221;, strobe);</p>
<p>	outb(0&#215;0000, CTRL_REG); // make device appear busy to reader</p>
<p>	// read the first nibble<br />
	temp = inb(STATUS_REG);<br />
	printk(KERN_INFO&#8221; inb, temp = %d\n&#8221;, temp);<br />
	temp = temp &amp; 0&#215;0078;<br />
	temp = temp &gt;&gt;3;<br />
	printk(KERN_INFO&#8221;temp after masking= %d\n&#8221;, temp);<br />
	printk(KERN_INFO&#8221;Data received (nibble &#8211; 1)= %d\n&#8221;, temp);</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-nibble-mode-and-associated-device-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IEEE Std 1284 &#8211; 1994 : Standard Signalling Method for a bi-directional parallel peripheral interface for personal computers ( Byte Mode) and associated device driver</title>
		<link>https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-compatability-mode-and-associated-device-driver/</link>
		<comments>https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-compatability-mode-and-associated-device-driver/#comments</comments>
		<pubDate>Sat, 01 Nov 2014 05:14:39 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Parallel Port Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11641</guid>
		<description><![CDATA[Writing a driver for 74LS244 parallel port and implementing read and write operations under compatability mode. Following are the rcs files : 1. initialization : RCS file: ./initialization.c,v Working file: initialization.c head: 1.4 branch: locks: strict root: 1.4 access list: &#8230; <a href="https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-compatability-mode-and-associated-device-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Writing a driver for 74LS244 parallel port and implementing read and write operations under compatability mode.<br />
Following are the rcs files :<br />
1. initialization : </p>
<p>RCS file: ./initialization.c,v<br />
Working file: initialization.c<br />
head: 1.4<br />
branch:<br />
locks: strict<br />
	root: 1.4<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 4;	selected revisions: 4<br />
description:<br />
Initialization file for Centronics port driver based on IEEE-1284 standard.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4	locked by: root;<br />
date: 2014/11/01 04:44:07;  author: root;  state: Exp;  lines: +0 -4<br />
Successfully implemented the following operations :<br />
1. Acquire the address 0&#215;0378 &#8211; 0x037a for the device.<br />
2. Create the device scull.<br />
3. Initialise the cdev structure..<br />
4. Add the device to the kernel tree.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2014/10/31 15:19:12;  author: root;  state: Exp;  lines: +0 -40<br />
Successfully created the scull for the device.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2014/10/31 15:16:36;  author: root;  state: Exp;  lines: +1 -0<br />
Released the region acquired by the default parallel port driver.<br />
Acquired the same space for own driver.<br />
Entry successfully created in /proc/ioports.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2014/10/31 15:16:07;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>2. cleanup module for device : </p>
<p>RCS file: ./cleanup.c,v<br />
Working file: cleanup.c<br />
head: 1.4<br />
branch:<br />
locks: strict<br />
	root: 1.4<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 4;	selected revisions: 4<br />
description:<br />
Cleanup module for deriver<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4	locked by: root;<br />
date: 2014/11/01 04:59:28;  author: root;  state: Exp;  lines: +0 -1<br />
The module successfully performs the following functions :<br />
1. Unregister the driver.<br />
2. Release the address space acquired i.e. 0&#215;378 &#8211; 0x37a<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2014/11/01 04:57:56;  author: root;  state: Exp;  lines: +0 -1<br />
Able to release the acquired range successfully.<br />
The driver releases the 0&#215;0378-0x037a address space on rmmod.<br />
Entry removed from the /proc/ioports file.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2014/11/01 04:56:34;  author: root;  state: Exp;  lines: +0 -2<br />
Successfully unregistered the driver on rmmod.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2014/11/01 04:56:15;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>3. write module : </p>
<p>RCS file: ./dev_write.c,v<br />
Working file: dev_write.c<br />
head: 1.5<br />
branch:<br />
locks: strict<br />
	root: 1.5<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 5;	selected revisions: 5<br />
description:<br />
dev_write.c : runs when user space application writes the node.<br />
module implements the protocol under Compatability mode.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5	locked by: root;<br />
date: 2014/10/31 16:56:12;  author: root;  state: Exp;  lines: +0 -1<br />
The writer is able to perform the following :<br />
1. Take the data from the user application.<br />
2. Write the data to the port.<br />
3. Check busy status of the device at the other end of the cable.<br />
4. Send strobe.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2014/10/31 16:53:29;  author: root;  state: Exp;  lines: +1 -0<br />
Implemented the protocol in 3 steps.<br />
wddl : write data to data lines.<br />
cbs : check busy status of the device, keep pollng until the device is found free.<br />
sss : once the device is found free send the strobe signal to indicate that the data on data lines is valid content.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2014/10/31 15:33:36;  author: root;  state: Exp;  lines: +0 -59<br />
Able to send a single byte of data.<br />
Protocol successfully implemented.<br />
Acknowledgement from device has not been used.<br />
Some problem with the hardware.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2014/10/31 15:32:12;  author: root;  state: Exp;  lines: +2 -0<br />
able to send the data successfully without any protocol.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2014/10/31 15:31:39;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
<p>4. read module : </p>
<p>RCS file: ./dev_read.c,v<br />
Working file: dev_read.c<br />
head: 1.2<br />
branch:<br />
locks: strict<br />
	root: 1.2<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 2;	selected revisions: 2<br />
description:<br />
dev_read : module runs when an application tries to read from the node.<br />
Implements compatability mode for data transfer between two systems.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2	locked by: root;<br />
date: 2014/10/31 16:44:09;  author: root;  state: Exp;  lines: +1 -0<br />
Successfully implemented the protocol.<br />
The device sends the busy status.<br />
Waits for strobe.<br />
Once strobe arrives, reads data.<br />
Sends the data to the user application by copy_to_user.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2014/10/31 16:42:58;  author: root;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/11/ieee-std-1284-1994-standard-signalling-method-for-a-bi-directional-parallel-peripheral-interface-for-personal-computers-compatability-mode-and-associated-device-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Character Driver ( Registration, Open, Write, Cleanup)  along with proc</title>
		<link>https://www.emblogic.com/blog/10/character-driver-registration-open-write-cleanup-along-with-proc/</link>
		<comments>https://www.emblogic.com/blog/10/character-driver-registration-open-write-cleanup-along-with-proc/#comments</comments>
		<pubDate>Mon, 13 Oct 2014 04:16:32 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11568</guid>
		<description><![CDATA[Character driver completed and successfully tested with registration, open, write and cleanup modules and debugged using proc file system. The logfiles are as under : RCS file: initialization.c,v 3 Working file: initialization.c 4 head: 1.5 5 branch: 6 locks: strict &#8230; <a href="https://www.emblogic.com/blog/10/character-driver-registration-open-write-cleanup-along-with-proc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Character driver completed and successfully tested with registration, open, write and cleanup modules and debugged using proc file system.<br />
The logfiles are as under :<br />
<strong>RCS file: initialization.c,v</strong><br />
  3 Working file: initialization.c<br />
  4 head: 1.5<br />
  5 branch:<br />
  6 locks: strict<br />
  7         root: 1.5<br />
  8 access list:<br />
  9 symbolic names:<br />
 10 keyword substitution: kv<br />
 11 total revisions: 5;     selected revisions: 5<br />
 12 description:<br />
 13 Character driver initialization file.<br />
 14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 15 revision 1.5    locked by: root;<br />
 16 date: 2014/10/11 18:32:59;  author: root;  state: Exp;  lines: +14 -0<br />
 17 Nothin new<br />
 18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 19 revision 1.4<br />
 20 date: 2014/10/09 19:47:30;  author: root;  state: Exp;  lines: +0 -14<br />
 21 *** empty log message ***<br />
 22 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 23 revision 1.3<br />
 24 date: 2014/10/09 17:24:36;  author: root;  state: Exp;  lines: +7 -3<br />
 25 Successfully written the current time into the proc file.</p>
<p><strong>RCS file: dev_open.c,v</strong><br />
  3 Working file: dev_open.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 Implements the underline mechanism of what happens when a file is opened by user space process<br />
 14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 15 revision 1.1    locked by: root;<br />
 16 date: 2014/10/09 18:39:19;  author: root;  state: Exp;<br />
 17 Initial revision<br />
 18 ===================================================</p>
<p><strong>CS file: dev_write.c,v</strong><br />
  3 Working file: dev_write.c<br />
  4 head: 1.6<br />
  5 branch:<br />
  6 locks: strict<br />
  7         root: 1.6<br />
  8 access list:<br />
  9 symbolic names:<br />
 10 keyword substitution: kv<br />
 11 total revisions: 6;     selected revisions: 6<br />
 12 description:<br />
 13 dev_write implementation for character driver.<br />
 14 Implements the routine needed to write in driver space using an application.<br />
 15 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 16 revision 1.6    locked by: root;<br />
 17 date: 2014/10/11 18:48:38;  author: root;  state: Exp;  lines: +5 -6<br />
 18 added comments<br />
 19 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 20 revision 1.5<br />
 21 date: 2014/10/11 18:41:19;  author: root;  state: Exp;  lines: +2 -5<br />
 22 Added some debugging messages.<br />
 23 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 24 revision 1.4<br />
 25 date: 2014/10/11 18:33:21;  author: root;  state: Exp;  lines: +87 -12<br />
 26 Successfully implemented the copy_to_user routine.<br />
 27 The user application successfully writes the data inside sculldev.<br />
 28 correctly returning the amount of data written.<br />
 29 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 30 revision 1.3<br />
 31 date: 2014/10/09 19:47:57;  author: root;  state: Exp;  lines: +62 -1<br />
 32 Successfully created the required number of quantums and qsets.</p>
<p><strong>RCS file: cleanup.c,v</strong><br />
  3 Working file: cleanup.c<br />
  4 head: 1.3<br />
  5 branch:<br />
  6 locks: strict<br />
  7         root: 1.3<br />
  8 access list:<br />
  9 symbolic names:<br />
 10 keyword substitution: kv<br />
 11 total revisions: 3;     selected revisions: 3<br />
 12 description:<br />
 13 Char driver cleanup file..<br />
 14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 15 revision 1.3    locked by: root;<br />
 16 date: 2014/10/11 18:33:10;  author: root;  state: Exp;  lines: +2 -1<br />
 17 Removed the proc_remove code.<br />
 18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 19 revision 1.2<br />
 20 date: 2014/10/09 17:19:43;  author: root;  state: Exp;  lines: +10 -1<br />
 21 added code to remove proc entry and unregister driver.<br />
 22 Upto this, driver registration, proc file, and unregister work fine.<br />
 23 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/10/character-driver-registration-open-write-cleanup-along-with-proc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MULTI-THREADED FTP SERVER</title>
		<link>https://www.emblogic.com/blog/09/multi-threaded-ftp-server/</link>
		<comments>https://www.emblogic.com/blog/09/multi-threaded-ftp-server/#comments</comments>
		<pubDate>Mon, 29 Sep 2014 20:47:32 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Project 04: FTP based Client Server using Threads and Sockets]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11544</guid>
		<description><![CDATA[Hi guys, I&#8217;ve tried to implement a multi-threaded FTP server that enables the clients to download files from the server. I will be posting the project on git-hub along with all its source code. You are most welcome to test &#8230; <a href="https://www.emblogic.com/blog/09/multi-threaded-ftp-server/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Hi guys, I&#8217;ve tried to implement a multi-threaded FTP server that enables the clients to download files from the server. I will be posting the project on git-hub along with all its source code. You are most welcome to test the code, find bugs and report at the email as under :<br />
email : abhishek.esse@gmail.com<br />
Here&#8217;s the server&#8217;s log file.</p>
<p>  1<br />
  2 RCS file: server.c,v<br />
  3 Working file: server.c<br />
  4 head: 1.5<br />
  5 branch:<br />
  6 locks: strict<br />
  7         root: 1.5<br />
  8 access list:<br />
  9 symbolic names:<br />
 10 keyword substitution: kv<br />
 11 total revisions: 5;     selected revisions: 5<br />
 12 description:<br />
 13 Implementing ftp server under AF_INET family.<br />
 14 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 15 revision 1.5    locked by: root;<br />
 16 date: 2014/09/29 20:33:26;  author: root;  state: Exp;  lines: +0 -1<br />
 17 Removed the statement that printed the number of bytes written by the server.<br />
 18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 19 revision 1.4<br />
 20 date: 2014/09/29 20:23:53;  author: root;  state: Exp;  lines: +143 -29<br />
 21 Successfully implemented the ftp server.<br />
 22 The server successfully responds to the client requests.<br />
 23 File sending successful.<br />
 24 No issues as of now w.r.t. to functionality of the server.<br />
 25 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 26 revision 1.3<br />
 27 date: 2014/09/29 11:42:01;  author: root;  state: Exp;  lines: +59 -28<br />
 28 The server threads for individual clients behave properly, i.e. even if a client quits the server continues execution.<br />
 29 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 30 revision 1.2<br />
 31 date: 2014/09/29 10:25:56;  author: root;  state: Exp;  lines: +30 -8<br />
 32 Implemented the following functionality.<br />
&#8220;server_log_file&#8221; 42L, 1587C                                                                                                       25,1          Top</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/09/multi-threaded-ftp-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server rcs ( TCP,  AF_UNIX)</title>
		<link>https://www.emblogic.com/blog/08/server-rcs-tcp-af_unix/</link>
		<comments>https://www.emblogic.com/blog/08/server-rcs-tcp-af_unix/#comments</comments>
		<pubDate>Mon, 25 Aug 2014 05:47:51 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11430</guid>
		<description><![CDATA[1 2 RCS file: server.c,v 3 Working file: server.c 4 head: 1.2 5 branch: 6 locks: strict 7 access list: 8 symbolic names: 9 keyword substitution: kv 10 total revisions: 2; selected revisions: 2 11 description: 12 Implementation of server. &#8230; <a href="https://www.emblogic.com/blog/08/server-rcs-tcp-af_unix/">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.2<br />
  5 branch:<br />
  6 locks: strict<br />
  7 access list:<br />
  8 symbolic names:<br />
  9 keyword substitution: kv<br />
 10 total revisions: 2;     selected revisions: 2<br />
 11 description:<br />
 12 Implementation of server.<br />
 13 Protocol : TCP<br />
 14 Domain   : AF_UNIX<br />
 15 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 16 revision 1.2<br />
 17 date: 2014/08/25 05:19:58;  author: root;  state: Exp;  lines: +10 -10<br />
 18 Server successfully implemented.<br />
 19 Server accepts requests and sends responses.<br />
 20 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 21 revision 1.1<br />
 22 date: 2014/08/25 05:03:27;  author: root;  state: Exp;<br />
 23 Initial revision<br />
 24 =============================================================================<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
&#8220;logfile&#8221; 24L, 629C                                                                                                1,0-1         All</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/server-rcs-tcp-af_unix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server rcs ( UDP, AF_UNIX)</title>
		<link>https://www.emblogic.com/blog/08/server-rcs-udp-af_unix/</link>
		<comments>https://www.emblogic.com/blog/08/server-rcs-udp-af_unix/#comments</comments>
		<pubDate>Mon, 25 Aug 2014 05:46:42 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11428</guid>
		<description><![CDATA[1 2 RCS file: server.c,v 3 Working file: server.c 4 head: 1.2 5 branch: 6 locks: strict 7 root: 1.2 8 access list: 9 symbolic names: 10 keyword substitution: kv 11 total revisions: 2; selected revisions: 2 12 description: 13 &#8230; <a href="https://www.emblogic.com/blog/08/server-rcs-udp-af_unix/">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.2<br />
  5 branch:<br />
  6 locks: strict<br />
  7         root: 1.2<br />
  8 access list:<br />
  9 symbolic names:<br />
 10 keyword substitution: kv<br />
 11 total revisions: 2;     selected revisions: 2<br />
 12 description:<br />
 13 implemented sockets for datagram under af_unix domain.<br />
 14 Works ok, but I have some queries.<br />
 15 Queries :<br />
 16         If more than one request come, then server&#8217;s sendto call returns bad file descriptor with each request it servers, but th    e messages are exchanged properly<br />
 17         The server socket fd and the client socket fd are same, how come ?<br />
 18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 19 revision 1.2    locked by: root;<br />
 20 date: 2014/08/25 05:42:35;  author: root;  state: Exp;  lines: +0 -6<br />
 21 Server successfully serves more than 1 client, but not simultaneoulsy, needs multithreading<br />
 22 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 23 revision 1.1<br />
 24 date: 2014/08/22 20:27:03;  author: root;  state: Exp;<br />
 25 Initial revision<br />
 26 =============================================================================<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
1 line less; before #1  2 seconds ago                                                                              1,0-1         All</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/server-rcs-udp-af_unix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Server Implementation ( UDP , AF_INET)</title>
		<link>https://www.emblogic.com/blog/08/server-implementation-udp-af_inet/</link>
		<comments>https://www.emblogic.com/blog/08/server-implementation-udp-af_inet/#comments</comments>
		<pubDate>Mon, 25 Aug 2014 05:31:41 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11425</guid>
		<description><![CDATA[1 2 RCS file: server.c,v 3 Working file: server.c 4 head: 1.2 5 branch: 6 locks: strict 7 root: 1.2 8 access list: 9 symbolic names: 10 keyword substitution: kv 11 total revisions: 2; selected revisions: 2 12 description: 13 &#8230; <a href="https://www.emblogic.com/blog/08/server-implementation-udp-af_inet/">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.2<br />
  5 branch:<br />
  6 locks: strict<br />
  7         root: 1.2<br />
  8 access list:<br />
  9 symbolic names:<br />
 10 keyword substitution: kv<br />
 11 total revisions: 2;     selected revisions: 2<br />
 12 description:<br />
 13 Implementation fo server.<br />
 14 Protocol : UDP<br />
 15 Domain   : AF_INET<br />
 16 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 17 revision 1.2    locked by: root;<br />
 18 date: 2014/08/25 05:13:38;  author: root;  state: Exp;  lines: +1 -0<br />
 19 Server is able to accpet client requests and send them response.<br />
 20 Server serves one client at a time.<br />
 21 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 22 revision 1.1<br />
 23 date: 2014/08/25 05:07:54;  author: root;  state: Exp;<br />
 24 Initial revision<br />
 25 =============================================================================<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
&#8220;logfile&#8221; 25L, 678C                                                                                                1,0-1         All</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/server-implementation-udp-af_inet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Socket Programming :  ( Server Implementation for TCP under AF_INET domain )</title>
		<link>https://www.emblogic.com/blog/08/socket-programming-server-implementation-for-tcp-under-af_unix-domain/</link>
		<comments>https://www.emblogic.com/blog/08/socket-programming-server-implementation-for-tcp-under-af_unix-domain/#comments</comments>
		<pubDate>Mon, 25 Aug 2014 05:23:53 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11421</guid>
		<description><![CDATA[1 2 RCS file: server.c,v 3 Working file: server.c 4 head: 1.2 5 branch: 6 locks: strict 7 access list: 8 symbolic names: 9 keyword substitution: kv 10 total revisions: 2; selected revisions: 2 11 description: 12 Implementation of server &#8230; <a href="https://www.emblogic.com/blog/08/socket-programming-server-implementation-for-tcp-under-af_unix-domain/">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.2<br />
  5 branch:<br />
  6 locks: strict<br />
  7 access list:<br />
  8 symbolic names:<br />
  9 keyword substitution: kv<br />
 10 total revisions: 2;     selected revisions: 2<br />
 11 description:<br />
 12 Implementation of server for stream socket ( TCP ) under AF_INET domain.<br />
 13 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 14 revision 1.2<br />
 15 date: 2014/08/25 04:55:04;  author: root;  state: Exp;  lines: +1 -0<br />
 16 Server successfully implemented.<br />
 17 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 18 revision 1.1<br />
 19 date: 2014/08/25 04:53:24;  author: root;  state: Exp;<br />
 20 Initial revision<br />
 21 =============================================================================<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
~<br />
&#8220;logfile&#8221; 21L, 595C                                                                                                1,0-1         All</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/socket-programming-server-implementation-for-tcp-under-af_unix-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A chat client ( to chat between two terminals)  :  Source code snippet</title>
		<link>https://www.emblogic.com/blog/08/a-chat-client-to-chat-between-two-terminals-source-code-snippet/</link>
		<comments>https://www.emblogic.com/blog/08/a-chat-client-to-chat-between-two-terminals-source-code-snippet/#comments</comments>
		<pubDate>Tue, 19 Aug 2014 11:04:21 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11397</guid>
		<description><![CDATA[ret_msnd = msgsnd(ret_mget, &#38;m_p, sizeof(struct content), 0); 89 if(strcmp(m_p.con.msg, &#8220;exit&#8221;) == 10) 90 { 91 printf(&#8220;Client 1 says bye\n&#8221;); 92 kill(pid, SIGINT); /* kill the child generated for reading the inbox, before parent goe s off */ 93 exit(EXIT_SUCCESS); 94 &#8230; <a href="https://www.emblogic.com/blog/08/a-chat-client-to-chat-between-two-terminals-source-code-snippet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>ret_msnd = msgsnd(ret_mget, &amp;m_p, sizeof(struct content), 0);<br />
 89                         if(strcmp(m_p.con.msg, &#8220;exit&#8221;) == 10)<br />
 90                         {<br />
 91                                 printf(&#8220;Client 1 says bye\n&#8221;);<br />
 92                                 kill(pid, SIGINT); /* kill the child generated for reading the inbox, before parent goe    s off */<br />
 93                                 exit(EXIT_SUCCESS);<br />
 94                         }<br />
 95                         if(ret_msnd == -1) /* msgsnd fails then kill the child , and the parent.*/<br />
 96                         {<br />
 97                                 printf(&#8220;Failed to send message to write q\n&#8221;);<br />
 98                                 perror(&#8220;msgsnd&#8221;);<br />
 99                                 kill(pid, SIGINT);<br />
100                                 exit(EXIT_FAILURE);<br />
101                         }</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/a-chat-client-to-chat-between-two-terminals-source-code-snippet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPC (Using FIFOS , without semaphores)</title>
		<link>https://www.emblogic.com/blog/08/ipc-using-fifos-without-semaphores/</link>
		<comments>https://www.emblogic.com/blog/08/ipc-using-fifos-without-semaphores/#comments</comments>
		<pubDate>Tue, 12 Aug 2014 05:38:47 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11381</guid>
		<description><![CDATA[1 2 RCS file: server.c,v 3 Working file: server.c 4 head: 1.5 5 branch: 6 locks: strict 7 access list: 8 symbolic names: 9 keyword substitution: kv 10 total revisions: 5; selected revisions: 5 11 description: 12 Implementing ipc using &#8230; <a href="https://www.emblogic.com/blog/08/ipc-using-fifos-without-semaphores/">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.5<br />
  5 branch:<br />
  6 locks: strict<br />
  7 access list:<br />
  8 symbolic names:<br />
  9 keyword substitution: kv<br />
 10 total revisions: 5;     selected revisions: 5<br />
 11 description:<br />
 12 Implementing ipc using fifos<br />
 13 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 14 revision 1.5<br />
 15 date: 2014/08/12 05:37:54;  author: root;  state: Exp;  lines: +13 -4<br />
 16 Completed the implementation the IPC(client-server) using FIFOS.<br />
 17 No synchronisation mechanism used.<br />
 18 Issues :<br />
 19         If more than one client send the same type of request, then the server becomes less reliable<br />
 20 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 21 revision 1.4<br />
 22 date: 2014/08/10 18:08:52;  author: root;  state: Exp;  lines: +4 -0<br />
 23 Upto here :<br />
 24         1. the req client 1 successfully write the structure into the fifo, which is successfully read by the server, and displayed.<br />
 25         2. the structure read by the server is now to be written in the fifo of the processing client.<br />
 26         3. next target : to successfully write the structure to the fifo of pc.<br />
 27 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 28 revision 1.3<br />
 29 date: 2014/08/10 18:00:40;  author: root;  state: Exp;  lines: +77 -17<br />
 30 Trying to read the req fifo of a client by the server.<br />
 31 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 32 revision 1.2<br />
 33 date: 2014/08/10 16:45:36;  author: root;  state: Exp;  lines: +1 -1<br />
 34 Implemented _create_fifos() function that enables the server to create child readers for reading each of the request fifos.<br />
&#8220;log_file&#8221; 39L, 1544C                                                                                                               1,0-1         Top</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/ipc-using-fifos-without-semaphores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IPC (USING PIPES, WITHOUT SYNCHRNISATION)</title>
		<link>https://www.emblogic.com/blog/08/ipc-using-pipes-without-synchrnisation/</link>
		<comments>https://www.emblogic.com/blog/08/ipc-using-pipes-without-synchrnisation/#comments</comments>
		<pubDate>Tue, 12 Aug 2014 05:37:17 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Project 03: Client Server Communication using Linux and IPC]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11379</guid>
		<description><![CDATA[1 2 RCS file: server.c,v 3 Working file: server.c 4 head: 1.5 5 branch: 6 locks: strict 7 access list: 8 symbolic names: 9 keyword substitution: kv 10 total revisions: 5; selected revisions: 5 11 description: 12 Implementing ipc using &#8230; <a href="https://www.emblogic.com/blog/08/ipc-using-pipes-without-synchrnisation/">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.5<br />
  5 branch:<br />
  6 locks: strict<br />
  7 access list:<br />
  8 symbolic names:<br />
  9 keyword substitution: kv<br />
 10 total revisions: 5;     selected revisions: 5<br />
 11 description:<br />
 12 Implementing ipc using pipes.<br />
 13 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 14 revision 1.5<br />
 15 date: 2014/08/12 05:43:09;  author: root;  state: Exp;  lines: +77 -9<br />
 16 Completed the IPC mechanism using pipes, without synchronisation.<br />
 17 Server uses wait() 2 times.<br />
 18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 19 revision 1.4<br />
 20 date: 2014/08/06 18:18:14;  author: root;  state: Exp;  lines: +29 -1<br />
 21 Completed the implementation of the server for all the three clients.<br />
 22 Flow of contorl as expected.<br />
 23 No issues as of now.<br />
 24 Testing ot be continued.<br />
 25 IPC using pipes completed for three processes.<br />
 26 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 27 revision 1.3<br />
 28 date: 2014/08/06 15:51:31;  author: root;  state: Exp;  lines: +83 -8<br />
 29 Implementation complete for a single client.<br />
 30 Every thing works fine.<br />
 31 Have to replicate it for 3 and then 30 clients.<br />
 32 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
 33 revision 1.2<br />
 34 date: 2014/08/06 14:12:57;  author: root;  state: Exp;  lines: +130 -1<br />
                                                                                                                                    1,0-1         Top</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/ipc-using-pipes-without-synchrnisation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Header file for double linklist : (All functions implemented except for a few in the misc menu)</title>
		<link>https://www.emblogic.com/blog/07/header-file-for-double-linklist/</link>
		<comments>https://www.emblogic.com/blog/07/header-file-for-double-linklist/#comments</comments>
		<pubDate>Mon, 21 Jul 2014 05:27:54 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11218</guid>
		<description><![CDATA[1 #include&#60;stdio.h&#62; 2 #include&#60;stdlib.h&#62; 3 4 struct node 5 { 6         int info; 7         struct node *next; 8         struct node *prev; 9 }; 10 11 12 void mem_fail();                          // report failure of memory allocation and exit the program. 13 void &#8230; <a href="https://www.emblogic.com/blog/07/header-file-for-double-linklist/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>1 #include&lt;stdio.h&gt;<br />
2 #include&lt;stdlib.h&gt;<br />
3<br />
4 struct node<br />
5 {<br />
6         int info;<br />
7         struct node *next;<br />
8         struct node *prev;<br />
9 };<br />
10<br />
11<br />
12 void mem_fail();                          // report failure of memory allocation and exit the program.<br />
13 void traverse(struct node *);             // traverse the linklist, given the start node.<br />
14 int search(struct node *);<br />
15 struct node *get_node();                  // return a new node to the caller.<br />
16 struct node *op_menu(struct node *, int); // maps the choice of the user to its corresponsing operation on the linklist.<br />
17 struct node *insert_menu(struct node *);  // contains the different options for the insertion of a node in  the linklist.<br />
18 struct node *insert(struct node *, int);  // maps the user choice for inserting a node to its corresponding function.<br />
19 struct node *insert_end(struct node *, struct node *);<br />
20 struct node *insert_beg(struct node *, struct node *);<br />
21 struct node *insert_at_pos(struct node *, struct node *);<br />
22 struct node *insert_after_key(struct node *, struct node *);<br />
23 struct node *delete_menu(struct node *);<br />
24 struct node *delete_node(struct node *, int);<br />
25 struct node *delete_end(struct node *);<br />
26 struct node *delete_beg(struct node *);<br />
27 struct node *delete_nth(struct node *);<br />
28 struct node *delete_key(struct node *);<br />
29 struct node *misc_menu(struct node *);<br />
30 struct node *misc_op(struct node *, int);<br />
31 void print_reverse_list(struct node *);<br />
~<br />
~<br />
~<br />
&#8220;header.h&#8221; 31L, 1365C                                                                                                               30,1          All</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/header-file-for-double-linklist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Queue : using array (enque, deque, search, traverse)</title>
		<link>https://www.emblogic.com/blog/07/queue-using-array-enque-deque-search-traverse/</link>
		<comments>https://www.emblogic.com/blog/07/queue-using-array-enque-deque-search-traverse/#comments</comments>
		<pubDate>Fri, 18 Jul 2014 06:48:03 +0000</pubDate>
		<dc:creator><![CDATA[Abhishek Choubey]]></dc:creator>
				<category><![CDATA[Project 2: Multiple Data Compression and Encryption]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=11097</guid>
		<description><![CDATA[1 2 RCS file: main.c,v 3 Working file: main.c 4 head: 1.8 5 branch: 6 locks: strict 7 access list: 8 symbolic names: 9 keyword substitution: kv 10 total revisions: 8;     selected revisions: 8 11 description: 12 Implementing queue operations &#8230; <a href="https://www.emblogic.com/blog/07/queue-using-array-enque-deque-search-traverse/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>1<br />
2 RCS file: main.c,v<br />
3 Working file: main.c<br />
4 head: 1.8<br />
5 branch:<br />
6 locks: strict<br />
7 access list:<br />
8 symbolic names:<br />
9 keyword substitution: kv<br />
10 total revisions: 8;     selected revisions: 8<br />
11 description:<br />
12 Implementing queue operations using an array.<br />
13 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
14 revision 1.8<br />
15 date: 2014/07/18 06:43:04;  author: root;  state: Exp;  lines: +1 -1<br />
16 search() function successfully prints the index of multiple instances of a value.<br />
17 search, enque, deque, traverse functions implemented and tested.<br />
18 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
19 revision 1.7<br />
20 date: 2014/07/18 06:40:30;  author: root;  state: Exp;  lines: +11 -4<br />
21 testing the search function.<br />
22 testing failed.<br />
23 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
24 revision 1.6<br />
25 date: 2014/07/18 06:31:08;  author: root;  state: Exp;  lines: +1 -1<br />
26 Testing search function for multilple instances of a value in the queue.<br />
27 Testing failed.<br />
28 Output : not as expected.<br />
29 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
30 revision 1.5<br />
31 date: 2014/07/18 06:28:11;  author: root;  state: Exp;  lines: +29 -2<br />
32 Implemented the deque function successfully.<br />
33 Tested ok with tried test cases.<br />
34 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
35 revision 1.4<br />
36 date: 2014/07/18 05:56:19;  author: root;  state: Exp;  lines: +5 -3<br />
&#8220;log_file&#8221; 54L, 1995C                                                                                                               1,0-1         Top</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/queue-using-array-enque-deque-search-traverse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
