<?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; sampath.kumar</title>
	<atom:link href="https://www.emblogic.com/blog/author/sampath-kumar/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>C Assignments status</title>
		<link>https://www.emblogic.com/blog/08/c-assignments-status-3/</link>
		<comments>https://www.emblogic.com/blog/08/c-assignments-status-3/#comments</comments>
		<pubDate>Thu, 22 Aug 2013 08:28:34 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=7101</guid>
		<description><![CDATA[completed first 7 assignments]]></description>
				<content:encoded><![CDATA[<p>completed first 7 assignments</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/c-assignments-status-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C Assignment Status</title>
		<link>https://www.emblogic.com/blog/08/c-assignment-status-7/</link>
		<comments>https://www.emblogic.com/blog/08/c-assignment-status-7/#comments</comments>
		<pubDate>Fri, 16 Aug 2013 06:40:12 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=7038</guid>
		<description><![CDATA[Completed first 6 assignments, presently working on functions]]></description>
				<content:encoded><![CDATA[<p>Completed first 6 assignments, presently working on functions</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/c-assignment-status-7/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C assignments status</title>
		<link>https://www.emblogic.com/blog/08/c-assignments-status/</link>
		<comments>https://www.emblogic.com/blog/08/c-assignments-status/#comments</comments>
		<pubDate>Wed, 07 Aug 2013 12:38:57 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=7035</guid>
		<description><![CDATA[completed first 4 assignments, presently working on left over questions in strings and pointers]]></description>
				<content:encoded><![CDATA[<p>completed first 4 assignments, presently working on left over questions in strings and pointers </p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/c-assignments-status/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charecter Driver logfile</title>
		<link>https://www.emblogic.com/blog/08/charecter-driver-logfile-2/</link>
		<comments>https://www.emblogic.com/blog/08/charecter-driver-logfile-2/#comments</comments>
		<pubDate>Wed, 07 Aug 2013 12:23:45 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[prabjot]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=6983</guid>
		<description><![CDATA[revision 1.33 locked by: sampath; date: 2013/08/07 12:03:17; author: sampath; state: Exp; lines: +120 -12 Timers Implementation calculted number of jiffies for char driver operation, used macro time_after to compare jiffie values converted jiffies to seconds and nanoseconds using jiffies_to_timespec &#8230; <a href="https://www.emblogic.com/blog/08/charecter-driver-logfile-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>revision 1.33 locked by: sampath;<br />
date: 2013/08/07 12:03:17; author: sampath; state: Exp; lines: +120 -12<br />
Timers Implementation<br />
calculted number of jiffies for char driver operation, used macro time_after to compare jiffie values<br />
converted jiffies to seconds and nanoseconds using jiffies_to_timespec<br />
calculated TSC(cycles since reset) using rdtscl and caculated number of cycles for the char drive operation, also tested using get_cycles<br />
Implemented wallclock time using do_gettimeofday and time_to_tm, created a proc entry by name cureenttime<br />
Implemented a /proc entry for incorporating delay using cpu_relax and schedule by names jitbusy and jitsched respectively<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/08/charecter-driver-logfile-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charecter Driver logfile</title>
		<link>https://www.emblogic.com/blog/07/charecter-driver-logfile/</link>
		<comments>https://www.emblogic.com/blog/07/charecter-driver-logfile/#comments</comments>
		<pubDate>Wed, 31 Jul 2013 13:53:39 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[prabjot]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=6949</guid>
		<description><![CDATA[RCS file: ./basicregister.c,v Working file: basicregister.c head: 1.32 branch: locks: strict sampath: 1.22 sampath: 1.32 access list: symbolic names: keyword substitution: kv total revisions: 32; selected revisions: 32 description: Base program for driver Registering the driver into the kernel using &#8230; <a href="https://www.emblogic.com/blog/07/charecter-driver-logfile/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: ./basicregister.c,v<br />
Working file: basicregister.c<br />
head: 1.32<br />
branch:<br />
locks: strict<br />
sampath: 1.22<br />
sampath: 1.32<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 32; selected revisions: 32<br />
description:<br />
Base program for driver<br />
Registering the driver into the kernel using register_chrdev<br />
inserting the module using insmod<br />
unregistering using unregister_chrdev<br />
removing the module using rmmod<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.32 locked by: sampath;<br />
date: 2013/07/31 13:23:52; author: sampath; state: Exp; lines: +84 -22<br />
Implementation of IOCTL<br />
Able to map ioctl call mapping done through file_operations<br />
calling IOCTL from application for reseting the values using SCULL_IOC_RESET<br />
Able to reset to initial values<br />
calling IOCTL call from application for changing the quantum size using SCULL_IOC_SQUANTUM<br />
Able to chage quantum value and further write and read operations are performed accordind to the new quantum size<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.31<br />
date: 2013/07/28 12:22:25; author: sampath; state: Exp; lines: +43 -2<br />
Implementation of proc<br />
calling create_proc_read_entry<br />
mapping function which contain sculldev Information device name,major number allocated,quantum size, qset size, no of bytes written and read by application<br />
Able to access from proc directory<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.30<br />
date: 2013/07/28 06:42:14; author: sampath; state: Exp; lines: +16 -3<br />
Implementation of spinlock for synchronization<br />
initialized spin_lock_init and locking using spin_lock in open<br />
unlocking at the end of read using spin_unlock<br />
Also tested synchronization using spin_lock_irq and spin_unlock_irq<br />
spin_lock_irqsave and spin_lock_irqrestore<br />
synchronizing using spinlock and completion<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.29<br />
date: 2013/07/27 19:26:57; author: sampath; state: Exp; lines: +16 -8<br />
Initialized sema_init and init_completion in open within if condition if(opened in write only mode) as the application level has calling open twice once in write and second in read only mode<br />
removed declaring sem_post in close and declared at the end of read so as to allow another application to open afetr first application complete reading operation<br />
note: care should be taken as open and close are called twice from same application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.28<br />
date: 2013/07/25 06:49:48; author: sampath; state: Exp; lines: +14 -6<br />
Implemented completion<br />
declared init_completion in open<br />
wait_for_completion in read<br />
completion in write<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.27<br />
date: 2013/07/24 15:45:58; author: sampath; state: Exp; lines: +51 -10<br />
Corrected memory allocation error for scull_Qset<br />
Initialised scull_dev[lv]-&gt;scull_Qset=NULL for all lv values<br />
Able to perform trimming operation correctly<br />
Implementation of sema_init is done<br />
Able to synchronize correctly for multi applications<br />
Tested for 3 applications<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.26<br />
date: 2013/07/22 14:05:23; author: sampath; state: Exp; lines: +7 -1<br />
done with implementation of semaphores sema_init<br />
using down and up<br />
able to synchronize correctly tested running 3 applications at once<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.25<br />
date: 2013/07/22 12:27:19; author: sampath; state: Exp; lines: +76 -8<br />
Scull trim Implementation done if application opens in write only mode<br />
sucessfully trimming required no of quantum upto required no of bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.24<br />
date: 2013/07/19 07:23:36; author: sampath; state: Exp; lines: +35 -75<br />
Sucessfully tested driver using 3 multithreaded application one at a time<br />
Able to write and read data sucessfully<br />
Trying to synchronize multiple application running at ones<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.23<br />
date: 2013/07/17 05:19:21; author: sampath; state: Exp; lines: +75 -28<br />
Defined llseek function mapped from function call<br />
Able to read data from application according to lseek offset in application<br />
done with read operation using lseek<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.22 locked by: sampath;<br />
date: 2013/07/13 11:04:51; author: sampath; state: Exp; lines: +15 -54<br />
done with read and write operations for multiple scullqsets<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.21<br />
date: 2013/07/13 10:43:24; author: sampath; state: Exp; lines: +1 -1<br />
added ubuff+tnobsr in copy_to_user for cursor position<br />
able to read data at the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.20<br />
date: 2013/07/13 10:17:59; author: sampath; state: Exp; lines: +35 -26<br />
sucessfully Implemented reading operation for 98 bytes of data<br />
able to read tnobsr in application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.19<br />
date: 2013/07/13 07:17:49; author: sampath; state: Exp; lines: +20 -13<br />
new<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.18<br />
date: 2013/07/13 04:52:08; author: sampath; state: Exp; lines: +49 -36<br />
Able to read 63 bytes of data from kernel to user buffer.<br />
verification done by returning tnobsr to user application.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.17<br />
date: 2013/07/12 08:12:41; author: sampath; state: Exp; lines: +80 -11<br />
Implemented read operation trying to read from kernel to user buffer using copy_to_user<br />
Able to read only 8bytes of data<br />
tryin g to implement for complete read operation for reading 100bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.16<br />
date: 2013/07/11 20:56:23; author: sampath; state: Exp; lines: +5 -10<br />
Able to return 0 from read operation of kernel buffer to application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15<br />
date: 2013/07/11 20:10:35; author: sampath; state: Exp; lines: +34 -25<br />
Sucessfully implemented for multiple qsets<br />
Tested writing operation for 100 bytes of data<br />
no of scull qset are 2 and no of quantums created are 13<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2013/07/11 11:12:47; author: sampath; state: Exp; lines: +33 -10<br />
sucessfully implemented write operation for multiple quantums<br />
able to automate correct no of quantums<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2013/07/11 07:57:21; author: sampath; state: Exp; lines: +24 -7<br />
Sucessfully implemented write operation<br />
using kernel facility copy_from_user<br />
testing for only 4bytes of data for which one quantum is enough<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2013/07/10 11:43:26; author: sampath; state: Exp; lines: +75 -21<br />
Implementation of scullqset, qset and quantum done<br />
automated number of scullqsets and quantums wrt the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2013/07/10 03:53:40; author: sampath; state: Exp; lines: +120 -34<br />
Implemeenting write operation<br />
fetched private-&gt;data to sculldev<br />
Implemented auto calculation for number of scull_qset and number of quantums<br />
allocated memory for scull_qset qset and quantum calling their functions separately and trying to link them<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2013/07/09 07:28:58; author: sampath; state: Exp; lines: +22 -0<br />
Implemented basic write and read operations<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2013/07/08 07:27:12; author: sampath; state: Exp; lines: +39 -41<br />
Implementation of scull_trim for future use<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2013/07/05 04:53:38; author: sampath; state: Exp; lines: +1 -1<br />
Initialised cdev_del after completing the usage of cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2013/07/05 04:51:02; author: sampath; state: Exp; lines: +9 -8<br />
Added ret_cdev to check the return value of cdev_add<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2013/07/04 13:07:35; author: sampath; state: Exp; lines: +17 -7<br />
Initialising multiple devices<br />
assining dev using MKDEV<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2013/07/04 11:03:31; author: sampath; state: Exp; lines: +23 -10<br />
memory mapping through container_of<br />
pointing scull through inode<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2013/07/03 10:49:38; author: sampath; state: Exp; lines: +19 -2<br />
Assigning values to members of sculldev in scullinit and printing<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2013/07/02 13:40:19; author: sampath; state: Exp; lines: +17 -2<br />
Initialised function for scull_open<br />
and scull close<br />
calling open function from application<br />
communicating from user spaceapplication to kernelspace driver<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2013/07/02 10:34:24; author: sampath; state: Exp; lines: +44 -4<br />
Implemented struct scull<br />
registering the device in device table<br />
Initialized cdev_init<br />
pointing to dev through cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2013/07/01 07:16:06; author: sampath; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/charecter-driver-logfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charecter Driver log file</title>
		<link>https://www.emblogic.com/blog/07/charecter-log-file/</link>
		<comments>https://www.emblogic.com/blog/07/charecter-log-file/#comments</comments>
		<pubDate>Sun, 28 Jul 2013 12:34:09 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Character Driver]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[prabjot]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=6937</guid>
		<description><![CDATA[RCS file: ./basicregister.c,v Working file: basicregister.c head: 1.31 branch: locks: strict sampath: 1.22 sampath: 1.31 access list: symbolic names: keyword substitution: kv total revisions: 31; selected revisions: 31 description: Base program for driver Registering the driver into the kernel using &#8230; <a href="https://www.emblogic.com/blog/07/charecter-log-file/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: ./basicregister.c,v<br />
Working file: basicregister.c<br />
head: 1.31<br />
branch:<br />
locks: strict<br />
sampath: 1.22<br />
sampath: 1.31<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 31; selected revisions: 31<br />
description:<br />
Base program for driver<br />
Registering the driver into the kernel using register_chrdev<br />
inserting the module using insmod<br />
unregistering using unregister_chrdev<br />
removing the module using rmmod<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.31 locked by: sampath;<br />
date: 2013/07/28 12:22:25; author: sampath; state: Exp; lines: +43 -2<br />
Implementation of proc<br />
calling create_proc_read_entry<br />
mapping function which contain sculldev Information device name,major number allocated,quantum size, qset size, no of bytes written and read by application<br />
Able to access from proc directory<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.30<br />
date: 2013/07/28 06:42:14; author: sampath; state: Exp; lines: +16 -3<br />
Implementation of spinlock for synchronization<br />
initialized spin_lock_init and locking using spin_lock in open<br />
unlocking at the end of read using spin_unlock<br />
Also tested synchronization using spin_lock_irq and spin_unlock_irq<br />
spin_lock_irqsave and spin_lock_irqrestore<br />
synchronizing using spinlock and completion<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.29<br />
date: 2013/07/27 19:26:57; author: sampath; state: Exp; lines: +16 -8<br />
Initialized sema_init and init_completion in open within if condition if(opened in write only mode) as the application level has calling open twice once in write and second in read only mode<br />
removed declaring sem_post in close and declared at the end of read so as to allow another application to open afetr first application complete reading operation<br />
note: care should be taken as open and close are called twice from same application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.28<br />
date: 2013/07/25 06:49:48; author: sampath; state: Exp; lines: +14 -6<br />
Implemented completion<br />
declared init_completion in open<br />
wait_for_completion in read<br />
completion in write<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.27<br />
date: 2013/07/24 15:45:58; author: sampath; state: Exp; lines: +51 -10<br />
Corrected memory allocation error for scull_Qset<br />
Initialised scull_dev[lv]-&gt;scull_Qset=NULL for all lv values<br />
Able to perform trimming operation correctly<br />
Implementation of sema_init is done<br />
Able to synchronize correctly for multi applications<br />
Tested for 3 applications<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.26<br />
date: 2013/07/22 14:05:23; author: sampath; state: Exp; lines: +7 -1<br />
done with implementation of semaphores sema_init<br />
using down and up<br />
able to synchronize correctly tested running 3 applications at once<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.25<br />
date: 2013/07/22 12:27:19; author: sampath; state: Exp; lines: +76 -8<br />
Scull trim Implementation done if application opens in write only mode<br />
sucessfully trimming required no of quantum upto required no of bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.24<br />
date: 2013/07/19 07:23:36; author: sampath; state: Exp; lines: +35 -75<br />
Sucessfully tested driver using 3 multithreaded application one at a time<br />
Able to write and read data sucessfully<br />
Trying to synchronize multiple application running at ones<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.23<br />
date: 2013/07/17 05:19:21; author: sampath; state: Exp; lines: +75 -28<br />
Defined llseek function mapped from function call<br />
Able to read data from application according to lseek offset in application<br />
done with read operation using lseek<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.22 locked by: sampath;<br />
date: 2013/07/13 11:04:51; author: sampath; state: Exp; lines: +15 -54<br />
done with read and write operations for multiple scullqsets<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.21<br />
date: 2013/07/13 10:43:24; author: sampath; state: Exp; lines: +1 -1<br />
added ubuff+tnobsr in copy_to_user for cursor position<br />
able to read data at the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.20<br />
date: 2013/07/13 10:17:59; author: sampath; state: Exp; lines: +35 -26<br />
sucessfully Implemented reading operation for 98 bytes of data<br />
able to read tnobsr in application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.19<br />
date: 2013/07/13 07:17:49; author: sampath; state: Exp; lines: +20 -13<br />
new<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.18<br />
date: 2013/07/13 04:52:08; author: sampath; state: Exp; lines: +49 -36<br />
Able to read 63 bytes of data from kernel to user buffer.<br />
verification done by returning tnobsr to user application.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.17<br />
date: 2013/07/12 08:12:41; author: sampath; state: Exp; lines: +80 -11<br />
Implemented read operation trying to read from kernel to user buffer using copy_to_user<br />
Able to read only 8bytes of data<br />
tryin g to implement for complete read operation for reading 100bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.16<br />
date: 2013/07/11 20:56:23; author: sampath; state: Exp; lines: +5 -10<br />
Able to return 0 from read operation of kernel buffer to application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15<br />
date: 2013/07/11 20:10:35; author: sampath; state: Exp; lines: +34 -25<br />
Sucessfully implemented for multiple qsets<br />
Tested writing operation for 100 bytes of data<br />
no of scull qset are 2 and no of quantums created are 13<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2013/07/11 11:12:47; author: sampath; state: Exp; lines: +33 -10<br />
sucessfully implemented write operation for multiple quantums<br />
able to automate correct no of quantums<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2013/07/11 07:57:21; author: sampath; state: Exp; lines: +24 -7<br />
Sucessfully implemented write operation<br />
using kernel facility copy_from_user<br />
testing for only 4bytes of data for which one quantum is enough<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2013/07/10 11:43:26; author: sampath; state: Exp; lines: +75 -21<br />
Implementation of scullqset, qset and quantum done<br />
automated number of scullqsets and quantums wrt the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2013/07/10 03:53:40; author: sampath; state: Exp; lines: +120 -34<br />
Implemeenting write operation<br />
fetched private-&gt;data to sculldev<br />
Implemented auto calculation for number of scull_qset and number of quantums<br />
allocated memory for scull_qset qset and quantum calling their functions separately and trying to link them<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2013/07/09 07:28:58; author: sampath; state: Exp; lines: +22 -0<br />
Implemented basic write and read operations<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2013/07/08 07:27:12; author: sampath; state: Exp; lines: +39 -41<br />
Implementation of scull_trim for future use<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2013/07/05 04:53:38; author: sampath; state: Exp; lines: +1 -1<br />
Initialised cdev_del after completing the usage of cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2013/07/05 04:51:02; author: sampath; state: Exp; lines: +9 -8<br />
Added ret_cdev to check the return value of cdev_add<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2013/07/04 13:07:35; author: sampath; state: Exp; lines: +17 -7<br />
Initialising multiple devices<br />
assining dev using MKDEV<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2013/07/04 11:03:31; author: sampath; state: Exp; lines: +23 -10<br />
memory mapping through container_of<br />
pointing scull through inode<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2013/07/03 10:49:38; author: sampath; state: Exp; lines: +19 -2<br />
Assigning values to members of sculldev in scullinit and printing<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2013/07/02 13:40:19; author: sampath; state: Exp; lines: +17 -2<br />
Initialised function for scull_open<br />
and scull close<br />
calling open function from application<br />
communicating from user spaceapplication to kernelspace driver<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2013/07/02 10:34:24; author: sampath; state: Exp; lines: +44 -4<br />
Implemented struct scull<br />
registering the device in device table<br />
Initialized cdev_init<br />
pointing to dev through cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2013/07/01 07:16:06; author: sampath; state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/charecter-log-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Charecter Driver log_file</title>
		<link>https://www.emblogic.com/blog/07/charecter-driver-log_file/</link>
		<comments>https://www.emblogic.com/blog/07/charecter-driver-log_file/#comments</comments>
		<pubDate>Wed, 24 Jul 2013 09:41:21 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=6874</guid>
		<description><![CDATA[RCS file: ./basicregister.c,v Working file: basicregister.c head: 1.27 branch: locks: strict sampath: 1.22 sampath: 1.27 access list: symbolic names: keyword substitution: kv total revisions: 27; selected revisions: 27 description: Base program for driver Registering the driver into the kernel using &#8230; <a href="https://www.emblogic.com/blog/07/charecter-driver-log_file/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: ./basicregister.c,v<br />
Working file: basicregister.c<br />
head: 1.27<br />
branch:<br />
locks: strict<br />
	sampath: 1.22<br />
	sampath: 1.27<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 27;	selected revisions: 27<br />
description:<br />
Base program for driver<br />
Registering the driver into the kernel using register_chrdev<br />
inserting the module using insmod<br />
unregistering using unregister_chrdev<br />
removing the module using rmmod<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.27	locked by: sampath;<br />
date: 2013/07/24 09:28:01;  author: sampath;  state: Exp;  lines: +48 -9<br />
Corrected memory allocation error for scullqset<br />
correscted errors in trimming able to trim correct no of bytes<br />
sema_init implementation done<br />
synchronizing correctly for multithreadded application<br />
tested for 3 applications<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.26<br />
date: 2013/07/22 14:05:23;  author: sampath;  state: Exp;  lines: +7 -1<br />
done with implementation of semaphores sema_init<br />
using down and up<br />
able to synchronize correctly tested running 3 applications at once<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.25<br />
date: 2013/07/22 12:27:19;  author: sampath;  state: Exp;  lines: +76 -8<br />
Scull trim Implementation done if application opens in write only mode<br />
sucessfully trimming required no of quantum upto required no of bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.24<br />
date: 2013/07/19 07:23:36;  author: sampath;  state: Exp;  lines: +35 -75<br />
Sucessfully tested driver using 3 multithreaded application one at a time<br />
Able to write and read data sucessfully<br />
Trying to synchronize multiple application running at ones<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.23<br />
date: 2013/07/17 05:19:21;  author: sampath;  state: Exp;  lines: +75 -28<br />
Defined llseek function mapped from function call<br />
Able to read data from application according to lseek offset in application<br />
done with read operation using lseek<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.22	locked by: sampath;<br />
date: 2013/07/13 11:04:51;  author: sampath;  state: Exp;  lines: +15 -54<br />
done with read and write operations for multiple scullqsets<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.21<br />
date: 2013/07/13 10:43:24;  author: sampath;  state: Exp;  lines: +1 -1<br />
added ubuff+tnobsr in copy_to_user for cursor position<br />
able to read data at the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.20<br />
date: 2013/07/13 10:17:59;  author: sampath;  state: Exp;  lines: +35 -26<br />
sucessfully Implemented reading operation for 98 bytes of data<br />
able to read tnobsr in application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.19<br />
date: 2013/07/13 07:17:49;  author: sampath;  state: Exp;  lines: +20 -13<br />
new<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.18<br />
date: 2013/07/13 04:52:08;  author: sampath;  state: Exp;  lines: +49 -36<br />
Able to read 63 bytes of data from kernel to user buffer.<br />
verification done by returning tnobsr to user application.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.17<br />
date: 2013/07/12 08:12:41;  author: sampath;  state: Exp;  lines: +80 -11<br />
Implemented read operation trying to read from kernel to user buffer using copy_to_user<br />
Able to read only 8bytes of data<br />
tryin g to implement for complete read operation for reading 100bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.16<br />
date: 2013/07/11 20:56:23;  author: sampath;  state: Exp;  lines: +5 -10<br />
Able to return 0 from read operation of kernel buffer to application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15<br />
date: 2013/07/11 20:10:35;  author: sampath;  state: Exp;  lines: +34 -25<br />
Sucessfully implemented for multiple qsets<br />
Tested writing operation for 100 bytes of data<br />
no of scull qset are 2 and no of quantums created are 13<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2013/07/11 11:12:47;  author: sampath;  state: Exp;  lines: +33 -10<br />
sucessfully implemented write operation for multiple quantums<br />
able to automate correct no of quantums<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2013/07/11 07:57:21;  author: sampath;  state: Exp;  lines: +24 -7<br />
Sucessfully implemented write operation<br />
using kernel facility copy_from_user<br />
testing for only 4bytes of data for which one quantum is enough<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2013/07/10 11:43:26;  author: sampath;  state: Exp;  lines: +75 -21<br />
Implementation of scullqset, qset and quantum done<br />
automated number of scullqsets and quantums wrt the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2013/07/10 03:53:40;  author: sampath;  state: Exp;  lines: +120 -34<br />
Implemeenting write operation<br />
fetched private-&gt;data to sculldev<br />
Implemented auto calculation for number of scull_qset and number of quantums<br />
allocated memory for scull_qset qset and quantum calling their functions separately and trying to link them<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2013/07/09 07:28:58;  author: sampath;  state: Exp;  lines: +22 -0<br />
Implemented basic write and read operations<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2013/07/08 07:27:12;  author: sampath;  state: Exp;  lines: +39 -41<br />
Implementation of scull_trim for future use<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2013/07/05 04:53:38;  author: sampath;  state: Exp;  lines: +1 -1<br />
Initialised cdev_del after completing the usage of cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2013/07/05 04:51:02;  author: sampath;  state: Exp;  lines: +9 -8<br />
Added ret_cdev to check the return value of cdev_add<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2013/07/04 13:07:35;  author: sampath;  state: Exp;  lines: +17 -7<br />
Initialising multiple devices<br />
assining dev using MKDEV<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2013/07/04 11:03:31;  author: sampath;  state: Exp;  lines: +23 -10<br />
memory mapping through container_of<br />
pointing scull through inode<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2013/07/03 10:49:38;  author: sampath;  state: Exp;  lines: +19 -2<br />
Assigning values to members of sculldev in scullinit and printing<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2013/07/02 13:40:19;  author: sampath;  state: Exp;  lines: +17 -2<br />
Initialised function for scull_open<br />
and scull close<br />
calling open function from application<br />
communicating from user spaceapplication to kernelspace driver<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2013/07/02 10:34:24;  author: sampath;  state: Exp;  lines: +44 -4<br />
Implemented struct scull<br />
registering the device in device table<br />
Initialized cdev_init<br />
pointing to dev through cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2013/07/01 07:16:06;  author: sampath;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/charecter-driver-log_file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Article on Charecter Driver</title>
		<link>https://www.emblogic.com/blog/07/article-on-charecter-driver/</link>
		<comments>https://www.emblogic.com/blog/07/article-on-charecter-driver/#comments</comments>
		<pubDate>Sat, 20 Jul 2013 08:21:50 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=6856</guid>
		<description><![CDATA[Article on Character Driver This Article describes you the process of writing a Character Driver module. The Linux kernel version used is -3.3.4-5. Character Driver operates on Bytes that is transferring data byte by byte or character by character. Serial &#8230; <a href="https://www.emblogic.com/blog/07/article-on-charecter-driver/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Article on Character Driver</p>
<p>	This Article describes you the process of writing a Character Driver module. The Linux kernel version used is -3.3.4-5. Character Driver operates on Bytes that is transferring data byte by byte or character by character. Serial port driver, key bord driver and mouse driver are some real time examples for character Driver. Character Driver is one of the mechanism of running the driver policy. Each Driver has similar policie with different mechanism. One among them is our discussion that is character driver which provides communication between application and hardware upon Inserting the module on demand and removing the module after the task completion. The module can be inserted using the command insmod and removed using rmmod.</p>
<p>	The driver starts with device registration  done using alloc_chrdev_region ( ), by which the device is registered at kernel and for every device registration a major and minor number is allocated for the device and is stored in a variable of type dev_t dev . Major number specifies the Driver and minor number specifies the devices connected (type of mechanism followed by that driver) and are independent of devices. Dev variable is of 32 bit of which first 12 bits represents major number and the next 20 bits represents the minor number. After allocation of major and minor numbers they can be extracted using predefined macros called MAJOR(dev) and MINOR(dev). Defining the way of opening the Device, writing, reading procedures and closing the device plays an important part in Implementing the mechanism of char driver.</p>
<p>	SCULL(simple character utility for loading localities) defines the procedural mechanism of char driver and is apart from opening a normal low level file .The real flavor of character driver is defined in its SCULL, which describes the memory allocation strategies, way of performing the operations and procedure for loading localities. The SCULL contains blocks of memory called scull_qsets and each scull_qset contain qsets which handles array of pointers pointing to specific bytes of data called quantum. The scull_qset can handle upto maximum of data equal to product of qset_size and quantum size. Further each quantum can handle upto maximum of bytes equal to quantum_size defined by driver developer. Mathematically we can find the required number of scull_qsets and quantums required for accommodating given number of bytes and memory is allocated for scull_qset and quantum accordingly.<br />
	Number of Scull_qset =data_size/ (qset_size * quantum_size)<br />
	Number of quantum=	data_size/quantum_size;<br />
In order to reach data quantum we have to point from sculldev-&gt;scullqset-&gt;data[i].<br />
Writing and reading data can be done only on quantum. cdev(charecter device) is an important member of sculldev which points to a structure containing file_operations specific to driver routines. The operations are mapped and specific sub routines are defined which defines the specified operations ( open,read,write and close). Ones the scull is prepared required size of memory is allocated using kmalloc. The scull structure is initialized through cdev cdev_init and is added to the kernel using cdev_add. </p>
<p>		 Now the main part is to define the file operation subroutines. Before performing writing and reading operations, the device has to be opened and from open  mapping of SCULL on to device memory is done using predefined kernel facility container_of which contain starting address of scull as its return value. This value is preserved in private_data which is a member of struct file. The private data can be fetched before performing write and read operations. The write operation specifies writing data from application to kernel buffer which can be handled using kernel facility copy_from_user and reading specifies reading data from kernel buffer to user buffer at application which can be done using copy_to user.<br />
  	Everything in linux is a file, whenever you connect a device it is treated as a file and an inode is created for that file. The communication between application and kernel is carried out using FIFO(named pipe) created using command mknod. So through FIFO, utilizing the mechanism of  SCULL the communication between application and the kernel will be carried out.</p>
<p>Note:The article tries to  describe the procedure for  implementing the character driver and the syntax is not concentrated as of now. The further Implementations will be added on in the next article. Comments and doubts are welcome.</p>
<p>Thank you<br />
Sampath Kumar Kotigari.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/article-on-charecter-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Char Driver log file</title>
		<link>https://www.emblogic.com/blog/07/char-driver-log-file/</link>
		<comments>https://www.emblogic.com/blog/07/char-driver-log-file/#comments</comments>
		<pubDate>Fri, 19 Jul 2013 11:30:31 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=6820</guid>
		<description><![CDATA[RCS file: basicregister.c,v Working file: basicregister.c head: 1.24 branch: locks: strict sampath: 1.22 sampath: 1.24 access list: symbolic names: keyword substitution: kv total revisions: 24; selected revisions: 24 description: Base program for driver Registering the driver into the kernel using &#8230; <a href="https://www.emblogic.com/blog/07/char-driver-log-file/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>RCS file: basicregister.c,v<br />
Working file: basicregister.c<br />
head: 1.24<br />
branch:<br />
locks: strict<br />
	sampath: 1.22<br />
	sampath: 1.24<br />
access list:<br />
symbolic names:<br />
keyword substitution: kv<br />
total revisions: 24;	selected revisions: 24<br />
description:<br />
Base program for driver<br />
Registering the driver into the kernel using register_chrdev<br />
inserting the module using insmod<br />
unregistering using unregister_chrdev<br />
removing the module using rmmod<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.24	locked by: sampath;<br />
date: 2013/07/19 07:23:36;  author: sampath;  state: Exp;  lines: +35 -75<br />
Sucessfully tested driver using 3 multithreaded applications one at a time<br />
Able to write and read data sucessfully<br />
Trying to synchronize multiple applications running at ones<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.23<br />
date: 2013/07/17 05:19:21;  author: sampath;  state: Exp;  lines: +75 -28<br />
Defined llseek function mapped from function call<br />
Able to read data from application according to lseek offset in application<br />
done with read operation using lseek<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.22	locked by: sampath;<br />
date: 2013/07/13 11:04:51;  author: sampath;  state: Exp;  lines: +15 -54<br />
done with read and write operations for multiple scullqsets<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.21<br />
date: 2013/07/13 10:43:24;  author: sampath;  state: Exp;  lines: +1 -1<br />
added ubuff+tnobsr in copy_to_user for cursor position<br />
able to read data at the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.20<br />
date: 2013/07/13 10:17:59;  author: sampath;  state: Exp;  lines: +35 -26<br />
sucessfully Implemented reading operation for 98 bytes of data<br />
able to read tnobsr in application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.19<br />
date: 2013/07/13 07:17:49;  author: sampath;  state: Exp;  lines: +20 -13<br />
new<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.18<br />
date: 2013/07/13 04:52:08;  author: sampath;  state: Exp;  lines: +49 -36<br />
Able to read 63 bytes of data from kernel to user buffer.<br />
verification done by returning tnobsr to user application.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.17<br />
date: 2013/07/12 08:12:41;  author: sampath;  state: Exp;  lines: +80 -11<br />
Implemented read operation trying to read from kernel to user buffer using copy_to_user<br />
Able to read only 8bytes of data<br />
tryin g to implement for complete read operation for reading 100bytes<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.16<br />
date: 2013/07/11 20:56:23;  author: sampath;  state: Exp;  lines: +5 -10<br />
Able to return 0 from read operation of kernel buffer to application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.15<br />
date: 2013/07/11 20:10:35;  author: sampath;  state: Exp;  lines: +34 -25<br />
Sucessfully implemented for multiple qsets<br />
Tested writing operation for 100 bytes of data<br />
no of scull qset are 2 and no of quantums created are 13<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.14<br />
date: 2013/07/11 11:12:47;  author: sampath;  state: Exp;  lines: +33 -10<br />
sucessfully implemented write operation for multiple quantums<br />
able to automate correct no of quantums<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.13<br />
date: 2013/07/11 07:57:21;  author: sampath;  state: Exp;  lines: +24 -7<br />
Sucessfully implemented write operation<br />
using kernel facility copy_from_user<br />
testing for only 4bytes of data for which one quantum is enough<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.12<br />
date: 2013/07/10 11:43:26;  author: sampath;  state: Exp;  lines: +75 -21<br />
Implementation of scullqset, qset and quantum done<br />
automated number of scullqsets and quantums wrt the application<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.11<br />
date: 2013/07/10 03:53:40;  author: sampath;  state: Exp;  lines: +120 -34<br />
Implemeenting write operation<br />
fetched private-&gt;data to sculldev<br />
Implemented auto calculation for number of scull_qset and number of quantums<br />
allocated memory for scull_qset qset and quantum calling their functions separately and trying to link them<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.10<br />
date: 2013/07/09 07:28:58;  author: sampath;  state: Exp;  lines: +22 -0<br />
Implemented basic write and read operations<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.9<br />
date: 2013/07/08 07:27:12;  author: sampath;  state: Exp;  lines: +39 -41<br />
Implementation of scull_trim for future use<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.8<br />
date: 2013/07/05 04:53:38;  author: sampath;  state: Exp;  lines: +1 -1<br />
Initialised cdev_del after completing the usage of cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.7<br />
date: 2013/07/05 04:51:02;  author: sampath;  state: Exp;  lines: +9 -8<br />
Added ret_cdev to check the return value of cdev_add<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.6<br />
date: 2013/07/04 13:07:35;  author: sampath;  state: Exp;  lines: +17 -7<br />
Initialising multiple devices<br />
assining dev using MKDEV<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.5<br />
date: 2013/07/04 11:03:31;  author: sampath;  state: Exp;  lines: +23 -10<br />
memory mapping through container_of<br />
pointing scull through inode<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.4<br />
date: 2013/07/03 10:49:38;  author: sampath;  state: Exp;  lines: +19 -2<br />
Assigning values to members of sculldev in scullinit and printing<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.3<br />
date: 2013/07/02 13:40:19;  author: sampath;  state: Exp;  lines: +17 -2<br />
Initialised function for scull_open<br />
and scull close<br />
calling open function from application<br />
communicating from user spaceapplication to kernelspace driver<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.2<br />
date: 2013/07/02 10:34:24;  author: sampath;  state: Exp;  lines: +44 -4<br />
Implemented struct scull<br />
registering the device in device table<br />
Initialized cdev_init<br />
pointing to dev through cdev<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
revision 1.1<br />
date: 2013/07/01 07:16:06;  author: sampath;  state: Exp;<br />
Initial revision<br />
=============================================================================</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/char-driver-log-file/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Char Driver Logfile</title>
		<link>https://www.emblogic.com/blog/07/char-driver-logfile/</link>
		<comments>https://www.emblogic.com/blog/07/char-driver-logfile/#comments</comments>
		<pubDate>Wed, 17 Jul 2013 07:51:59 +0000</pubDate>
		<dc:creator><![CDATA[sampath.kumar]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=6806</guid>
		<description><![CDATA[charlogfilepresently working on lseek implementation in write trying to rectify the problems in write operation using lseek.]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.emblogic.com/blog/07/char-driver-logfile/charlogfile-3/" rel="attachment wp-att-6821">charlogfile</a>presently working on lseek implementation in write trying to rectify the problems in write operation using lseek.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/07/char-driver-logfile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
