<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4754969599447033629</id><updated>2011-07-29T14:04:48.652+05:30</updated><category term='linux'/><category term='Windows XP'/><category term='Vista'/><category term='Xen'/><category term='Adding new system calls'/><category term='Games'/><category term='Open Solaris'/><category term='User Privileges'/><category term='kernel cmdline'/><category term='Driver Domain'/><category term='xen-tools'/><category term='python'/><category term='installing Xen'/><category term='Dev C++'/><category term='HP remote control'/><category term='Misc'/><category term='busybox'/><category term='Flash Drives'/><category term='ubuntu'/><category term='Xen hypervisor'/><title type='text'>Stuff that doesn't matter !!</title><subtitle type='html'>The purpose of writing is to inflate weak ideas, obscure pure reasoning, and inhibit clarity. ~Calvin</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-6832712755255907096</id><published>2010-01-03T20:44:00.007+05:30</published><updated>2010-01-03T22:53:25.528+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Driver Domain'/><category scheme='http://www.blogger.com/atom/ns#' term='Xen'/><category scheme='http://www.blogger.com/atom/ns#' term='Xen hypervisor'/><title type='text'>Setting up an Isolated Driver Domain in Xen</title><content type='html'>&lt;span style="font-style: italic;"&gt;Disclaimer : This article assumes that you have some experience in compiling kernels and are familiar with installing and using &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Xen&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Xen&lt;/span&gt; has a very useful feature of Driver Domains. This post will not talk about the theory, but instead focus on setting up a Driver Domain.&lt;br /&gt;Information about driver domains can be found on the &lt;a href="http://wiki.xensource.com/xenwiki/DriverDomain"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Xen&lt;/span&gt;-wiki&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;So, as mentioned on the wiki page, we basically need 3 things to setup a driver domain :&lt;br /&gt;1. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Passthrough&lt;/span&gt;&lt;br /&gt;2. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Backend&lt;/span&gt; Driver&lt;br /&gt;3. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Hotplug&lt;/span&gt; scripts&lt;br /&gt;&lt;br /&gt;One of the easiest ways to create a Driver Domain is the boot the Dom0 kernel as a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;DomU&lt;/span&gt;.&lt;br /&gt;This article talks about setting up a driver domain for a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;PCI&lt;/span&gt; device. The process described below does not apply for creating a driver domain for block devices.&lt;br /&gt;&lt;br /&gt;There are some &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;config&lt;/span&gt; options that have to be taken care of.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;1. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Backend&lt;/span&gt; Driver :&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;The back-end driver for the device should be compiled. In this post, we will be creating a driver domain for a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;PCI&lt;/span&gt; device. Hence the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;backend&lt;/span&gt; driver should be present in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;DomU&lt;/span&gt; that is to be used as the driver domain.&lt;br /&gt;Since we will be using the same kernel for Dom0 and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;DomU&lt;/span&gt;, we compile the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;backend&lt;/span&gt; driver in the kernel configuration. "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;pciback&lt;/span&gt;" is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;backend&lt;/span&gt; driver. It can be compiled either as a module or built into the kernel.&lt;br /&gt;I have compiled &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;pciback&lt;/span&gt; into the kernel. This makes the process of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;passthrough&lt;/span&gt; extremely easy.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Gqf_V5oaOhQ/S0DHd4GiwKI/AAAAAAAAAe0/ATAXRaKSS-o/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 230px;" src="http://4.bp.blogspot.com/_Gqf_V5oaOhQ/S0DHd4GiwKI/AAAAAAAAAe0/ATAXRaKSS-o/s320/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5422553267444039842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;2. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Passthrough&lt;/span&gt; :&lt;br /&gt;     &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;passthrough&lt;/span&gt; is a feature that allows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;DomU&lt;/span&gt; to gain direct access to the physical device.&lt;br /&gt;The first thing that has to be done is to compile the Dom0 kernel with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;Passthrough&lt;/span&gt; enabled. This step is &lt;span style="font-style: italic;"&gt;optional. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Compile and install the Dom0 kernel.&lt;br /&gt;&lt;br /&gt;The first step for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;acheiving&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;PCI&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;passthrough&lt;/span&gt; is to find the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;PCI&lt;/span&gt; ID of the device.&lt;br /&gt;The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;PCI&lt;/span&gt; ID can be found using "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;lspci&lt;/span&gt;". Once the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;PCI&lt;/span&gt; ID has been found out, follow these steps :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;If &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;pciback&lt;/span&gt; is &lt;span style="font-weight: bold;"&gt;built into the kernel&lt;/span&gt;, then add the following options to the Dom0 kernel command line, in the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;bootloader's&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;config&lt;/span&gt; file :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="tightenable"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;pciback&lt;/span&gt;.permissive pciback.hide=(03:00.0)&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;  Here, 03:00.0 is the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;PCI&lt;/span&gt; ID of the device. ( A &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;NIC&lt;/span&gt; on my machine). This hides the device from Dom0. If the device is not hidden from Dom0, then Dom0 initialises the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;PCI&lt;/span&gt; device...which we do not want.&lt;br /&gt;&lt;br /&gt;The next step is to modify the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;DomU's&lt;/span&gt; configuration file. Add the following line to expose the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;PCI&lt;/span&gt; device to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;DomU&lt;/span&gt; that is to e used as the driver domain.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;pci&lt;/span&gt;    =  [  '03:00.0' ].&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, start the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;DomU&lt;/span&gt;. Remember to use the same Dom0 kernel for this &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;DomU&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Once the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;DomU&lt;/span&gt; is booted, issue "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;lspci&lt;/span&gt;" from within the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;DomU&lt;/span&gt;. The &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;PCI&lt;/span&gt; device should appear.&lt;br /&gt;&lt;br /&gt;If &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;lscpi&lt;/span&gt; shows the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;PCI&lt;/span&gt; device, then it has been successfully pass-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;throughed&lt;/span&gt; !&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;Hotplug&lt;/span&gt; scripts :&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Now, to use the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;DomU&lt;/span&gt; containing the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;PCI&lt;/span&gt; device as a driver domain, we need &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;hotplug&lt;/span&gt; scripts. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;Hotplug&lt;/span&gt; scripts allow other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;DomUs&lt;/span&gt;' &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;frontend&lt;/span&gt; drivers to attach themselves with the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;backend&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The easiest way to get the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;hotplug&lt;/span&gt; scripts in the Driver Domain is to get the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;xen&lt;/span&gt; source code and do a "make install-tools" within the Driver Domain.&lt;/span&gt;&lt;br /&gt;This should install the required &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;hotplug&lt;/span&gt; scripts in the Driver Domain.&lt;br /&gt;&lt;br /&gt;This completes the process of setting up a driver domain ! :-)&lt;br /&gt;&lt;br /&gt;For a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;NIC&lt;/span&gt;, run the &lt;span style="font-style: italic;"&gt;network-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;bridg&lt;/span&gt;&lt;/span&gt;e script from &lt;span style="font-style: italic;"&gt;/etc/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;xen&lt;/span&gt;/script&lt;/span&gt;s to bring up &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;Xen's&lt;/span&gt; virtual bridge in the Driver Domain.&lt;br /&gt;&lt;br /&gt;Now, to let the other &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;DomUs&lt;/span&gt; know about the driver domain, edit the configuration file of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;DomU&lt;/span&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_74"&gt;vif&lt;/span&gt; = [ 'mac=some_mac_id, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_75"&gt;backend&lt;/span&gt;=id_of_the_driver_domain' ]&lt;/blockquote&gt;the "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_76"&gt;backend&lt;/span&gt;" option identifies the Driver Domain for the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_77"&gt;DomU&lt;/span&gt;.&lt;br /&gt;Now boot the other DomUs.&lt;br /&gt;It can be verified that the vifs from the DomUs are connected to the bridge in the Driver domain,&lt;br /&gt;run&lt;br /&gt;&lt;blockquote&gt;$brctl show&lt;/blockquote&gt;&lt;br /&gt;in the driver domain.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-6832712755255907096?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/6832712755255907096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2010/01/setting-up-isolated-driver-domain-in.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6832712755255907096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6832712755255907096'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2010/01/setting-up-isolated-driver-domain-in.html' title='Setting up an Isolated Driver Domain in Xen'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_Gqf_V5oaOhQ/S0DHd4GiwKI/AAAAAAAAAe0/ATAXRaKSS-o/s72-c/Screenshot.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-2083401400009122770</id><published>2009-10-18T12:15:00.014+05:30</published><updated>2009-10-26T19:49:14.274+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='xen-tools'/><title type='text'>Xen-tools and ubuntu Dom0</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;Installing Xen as described &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://amodjaltade.blogspot.com/2009/10/installing-xen-341.html"&gt;here&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt; does not install the xen-tools properly. Even  if the hypervisor and Dom0 are up perfectly, there is nothing more that can be done without xen-tools.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote  style="font-family:trebuchet ms;"&gt;&lt;span style="display: block; padding-left: 6em;font-size:100%;" &gt;&lt;span&gt;$ sudo xm list&lt;br /&gt;&lt;br /&gt;Traceback (most recent call last):&lt;br /&gt;File "/usr/sbin/xm", line 5, in &lt;module&gt;&lt;br /&gt;from xen.xm import main&lt;br /&gt;ImportError: No module named xen.xm&lt;br /&gt;&lt;/module&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;Thanks to Shriniket and Hormazd for reproducing the error :-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;As described &lt;/span&gt;&lt;a style="font-family: trebuchet ms;" href="http://bderzhavets.wordpress.com/2009/07/07/building-xenified-2-6-30-1-kernel-via-xen-patches-2-6-30-2-tar-bz2/"&gt;here&lt;/a&gt;&lt;span style="font-family:trebuchet ms;"&gt;, the solution to this problem involves editing the &lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:trebuchet ms;font-size:100%;"  &gt;Config.mk&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt; file.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The Config.mk file is in the source root directory.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;The following lines (line no. 38 and 39) have to be changed from :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:100%;"&gt;PYTHON      ?= python&lt;br /&gt;PYTHON_PREFIX_ARG ?= --prefix="$(PREFIX)"&lt;br /&gt;&lt;br /&gt;to :&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;PYTHON      = python&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;PYTHON_PREFIX_ARG = &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Save the changes. Then,&lt;code&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;code&gt;# make clean&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;# make install-xen&lt;br /&gt;&lt;br /&gt;# make install-tools&lt;br /&gt;&lt;br /&gt;# make install-stubdom&lt;/code&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Doing &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;# make clean&lt;/span&gt;&lt;span style="font-size:100%;"&gt; and &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;# make install-tools &lt;/span&gt;&lt;span style="font-size:100%;"&gt;might be sufficient.&lt;br /&gt;Haven't tried it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Everything should be working fine now.&lt;br /&gt;&lt;br /&gt;Tuning Config.mk results Xen packages to be placed&lt;br /&gt;into /usr/local/lib/python2.6/dist-packages due to&lt;br /&gt;Changeset 19594 in xen-3.4-testing.hg.&lt;br /&gt;Otherwise, Xen packages would go to&lt;br /&gt;/usr/lib/python2.6/site-packages,&lt;br /&gt;which is not default location for python 2.6 on Ubuntu 9.04&lt;br /&gt;( as opposed to  Fedora 11 ).&lt;br /&gt;Thus you won’t be able to start xend in Dom0.&lt;br /&gt;&lt;br /&gt;Cheers !&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-2083401400009122770?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/2083401400009122770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2009/10/xen-tools-and-ubuntu-dom0.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2083401400009122770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2083401400009122770'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2009/10/xen-tools-and-ubuntu-dom0.html' title='Xen-tools and ubuntu Dom0'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-6293286892992349079</id><published>2009-10-05T00:45:00.008+05:30</published><updated>2009-10-26T00:29:22.733+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='busybox'/><category scheme='http://www.blogger.com/atom/ns#' term='kernel cmdline'/><category scheme='http://www.blogger.com/atom/ns#' term='Xen hypervisor'/><title type='text'>Problems with getting Xen working ...</title><content type='html'>IF you are looking for how to install Xen, you can find it &lt;a href="http://amodjaltade.blogspot.com/2009/10/installing-xen-341.html"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Trying to get Xen working , ran into some problems ...&lt;br /&gt;&lt;br /&gt;1. There is this peculiar problem that I faced with all the kernels that I tried as Dom0.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; Gave up waiting for root device.  Common problems:&lt;br /&gt;-Boot args (cat /proc/cmdline)&lt;br /&gt;-Check root delay = (did the system wait long enough?)&lt;br /&gt;-Check root=(did the system wait for the right device?)&lt;br /&gt;-Missing modules (cat /proc/modules; ls /dev)&lt;br /&gt;ALERT! /dev/disk/by-uuid/xxxxx-xxxx-xxxxxxxxxxxx does not exist. Dropping to shell!&lt;br /&gt;&lt;br /&gt;Busybox v1.10.2 (Ubuntu 1:1.10.2-2ubuntu7) built-in shell (ash)&lt;br /&gt;Enter 'help' for a list of built-in commands.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;The hypervisor was booting fine, but the Dom0 refused to recognise my root device and would drop me into busybox.&lt;br /&gt;&lt;br /&gt;The solution to this problem is to pass an extra parameter to the kernel, indicating that it should wait longer for the root device. (SCSI disks have this problem).&lt;br /&gt;So now, you need to edit your /boot/grub/menu.lst. The parameter to be passed is "rootdelay". &lt;span style="font-weight: bold;"&gt;rootdelay=90&lt;/span&gt; has worked for me. You may experiment with lower/higer values.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$sudo gedit /boot/grub/menu.lst &lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;#######Snippet - menu.lst ###########&lt;br /&gt;&lt;br /&gt;title        Xen 3.4.0 / Ubuntu 9.04, kernel 2.6.18.8&lt;br /&gt;uuid        fe8adb1a-7b82-40c4-b7d9-e35921c1155f&lt;br /&gt;kernel        /boot/xen-3.4.0.gz&lt;br /&gt;module        /boot/vmlinuz-2.6.26-2-xen-686 root=LABEL=root ro console=tty0 &lt;span style="font-weight: bold;"&gt;rootdelay=90&lt;/span&gt;&lt;br /&gt;module        /boot/initrd.img-2.6.26-2-xen-686&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. The second problem that I faced was with the 2.6.18 xenified kernel. The kernel boots into busybox and the keyboard becomes totally unusable. None of the keys works.&lt;br /&gt;Although I did notice that the quickplay buttons do generate an interrupt ( it shows a message on the screen when I press a quickplay button), the rest of the keys are useless.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Could not fix this :-(&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3. The 3rd problem that I faced was with the 2.6.26 Debian xenified kernel, along with the first one.&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;ata1.00: qc timeout (cmd 0xec)&lt;br /&gt;ata1.00: failed to IDENTIFY (i/o error, err_mask= 0x4)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;A little googling led me to think this was an ACPI problem. So I tried passing acpi=off in the kernel cmdline, but did not work out.&lt;br /&gt;Some more googling led me in various directions. Tried atleast 5 different parameters.&lt;br /&gt;&lt;br /&gt;The one parameter that finally worked was &lt;span style="font-weight: bold;"&gt;pci=nomsi&lt;/span&gt; . Found it &lt;a href="https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/354462"&gt;here&lt;/a&gt;, and oddly enough as a solution to a different problem !&lt;br /&gt;&lt;br /&gt;Apparently this is occurs due to problem of the Debian kernel on some motherboards and is consistently reproducable.&lt;br /&gt;&lt;br /&gt;So, the final kernel command line that works perfectly is :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;/boot/vmlinuz-2.6.26-2-xen-686 root=LABEL=root ro console=tty0 &lt;span style="font-weight: bold;"&gt;rootdelay=90 pci=nomsi&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps !&lt;br /&gt;&lt;br /&gt;Cheers ! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-6293286892992349079?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/6293286892992349079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2009/10/problems-with-getting-xen-working.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6293286892992349079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6293286892992349079'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2009/10/problems-with-getting-xen-working.html' title='Problems with getting Xen working ...'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-8694662024569686779</id><published>2009-10-04T20:36:00.014+05:30</published><updated>2009-10-05T17:40:45.767+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='installing Xen'/><category scheme='http://www.blogger.com/atom/ns#' term='Xen'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Installing Xen 3.4.1</title><content type='html'>Recently, there was need to install Xen on my laptop for project work.&lt;br /&gt;&lt;br /&gt;Xen 3.3 is present in the ubuntu repositories and installation is very straight forward.&lt;br /&gt;&lt;br /&gt;If you plan to use &lt;span style="font-weight: bold;"&gt;Xen 3.3&lt;/span&gt;, then the task is extremly easy.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Steps&lt;/span&gt; :&lt;br /&gt;&lt;br /&gt;1.Installing the Xen hypervisor.&lt;br /&gt;&lt;br /&gt;sudo apt-get install ubuntu-xen-desktop&lt;br /&gt;&lt;br /&gt;2. Installing a Dom0 kernel. There are various options available.&lt;br /&gt;i)   You can either use the 2.6.18.8 xenified kernel available on the official website. Get it &lt;a href="http://bits.xensource.com/oss-xen/release/3.4.0/linux-2.6.18-xen-3.4.0.tar.gz"&gt;here&lt;/a&gt;.&lt;br /&gt;ii)  You can download Debian xenified kernel from &lt;a href="http://packages.debian.org/lenny/i386/linux-image-2.6.26-2-xen-686/download"&gt;her&lt;/a&gt;&lt;a href="http://packages.debian.org/lenny/i386/linux-image-2.6.26-2-xen-686/download"&gt;e&lt;/a&gt; and the modules for the kernel from &lt;a href="http://packages.debian.org/lenny/i386/linux-modules-2.6.26-2-xen-686/download"&gt;here&lt;/a&gt;.&lt;br /&gt;iii) You can use download a vanilla kernel from &lt;a href="http://www.blogger.com/www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.29.2.tar.bz2"&gt;here&lt;/a&gt; and patch it to work as a Dom0. You can get the patches &lt;a href="http://www.blogger.com/gentoo-xen-kernel.googlecode.com/files/xen-patches-2.6.29-6.tar.bz2"&gt;here&lt;/a&gt;. Patches for version 2.6.29-6 are stable.&lt;br /&gt;iv)  You can download a vanilla kernel and configure it as a Dom0 using PVOPS. (There are still quite a few issues with this.)&lt;br /&gt;&lt;br /&gt;3. Done.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:130%;"&gt;Installing Xen 3.4.1 :&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Detailed steps :&lt;br /&gt;&lt;br /&gt;I am describing how to install Xen 3.4.1 from source and using the Debian xenified kernel (2.6.26) as Dom0. I compiled the 2.6.18.8 xenified kernel, but my keyboard would become unusable. I also tried patching the vanilla kernel, but ran into some problems. So I settled for the Debian xenified kernel.&lt;br /&gt;&lt;br /&gt;Step 1: Satisfying the dependencies.&lt;br /&gt;&lt;br /&gt;Special thanks to &lt;a href="http://somethingswhichidintknow.blogspot.com/"&gt;&lt;span&gt;Furquan Shaikh&lt;/span&gt;&lt;/a&gt;, my senior, for providing me a comprehensive list of all the dependencies.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ sudo apt-get install gcc make binutils zlib1g-dev pyhton-dev python2.6-dev python-opnessl libncurses5-dev libssl-dev xorg-dev bridge-utils iproute udev tetex-base tetex-bin latex-make texi2html texinfo texlive texlive-base gawk gettext-kde&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Alternatively, you can automate the process using :&lt;br /&gt;&lt;blockquote&gt;$ sudo apt-get build-dep package-anme&lt;package-name&gt;&lt;/package-name&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;For more info on this, click &lt;a href="http://chinmaykamat.wordpress.com/2008/09/07/ubuntu-install-all-pacakges-needed-to-build-a-source-code/"&gt;here &lt;/a&gt;and &lt;a href="http://chinmaykamat.wordpress.com/2008/09/29/auto-apt-and-apt-file/"&gt;here&lt;/a&gt;&lt;br /&gt;Thanks to &lt;a href="http://chinmaykamat.wordpress.com/"&gt;CDK&lt;/a&gt; :-)&lt;br /&gt;&lt;br /&gt;will install all the required dependencies.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 2 : Downloading the latest Xen source. You can download the source from &lt;a href="http://bits.xensource.com/oss-xen/release/3.4.1/xen-3.4.1.tar.gz"&gt;here.&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;Step 3 : Extract the source into a suitable directory. Then&lt;br /&gt;&lt;div style="text-align: center;"&gt;   i)  # make install-xen&lt;br /&gt;ii) # make install-tools&lt;br /&gt;iii)# make install-stubdom&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;If all the dependencies were satisfied, step 3 should not give any problems at all.&lt;br /&gt;&lt;br /&gt;Step 4 : The packages for Dom0 Debian kernel can be obtained from &lt;a href="http://packages.debian.org/lenny/i386/linux-image-2.6.26-2-xen-686/download"&gt;here&lt;/a&gt; and &lt;a href="http://packages.debian.org/lenny/i386/linux-modules-2.6.26-2-xen-686/download"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Once downloaded, install the kernel using :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;$ sudo dpkg -i linux-image-2.6.26-2-xen-686_2.6.26-19_i386.deb linux-modules-2.6.26-2-xen-686_2.6.26-19_i386.deb&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;This installs the Dom0 kernel and also updates the grub entries.&lt;br /&gt;&lt;br /&gt;This completes installation of the hypervisor and the Dom0. Since the Dom0 kernel is 2.6.26, make sure that your root partition is not ext4. ext4 support was included since kernel 2.6.28.&lt;br /&gt;&lt;br /&gt;Now, reboot your computer, you should boot into the Dom0 kernel if everything went right. :-)&lt;br /&gt;&lt;br /&gt;I ran into some problems while booting the Dom0 kernel. I am posting them &lt;a href="http://amodjaltade.blogspot.com/2009/10/problems-with-getting-xen-working.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-8694662024569686779?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/8694662024569686779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2009/10/installing-xen-341.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/8694662024569686779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/8694662024569686779'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2009/10/installing-xen-341.html' title='Installing Xen 3.4.1'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-405624379849270153</id><published>2009-08-15T22:18:00.029+05:30</published><updated>2009-08-16T13:04:07.920+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Adding new system calls'/><title type='text'>Adding system calls to the Linux kernel</title><content type='html'>&lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Adding new system calls to the Linux kernel&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;span style=""&gt;                                                                                                &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;This article talks about adding new system calls to the Linux kernel on an x86 machine , version 2.6.XX&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Disclaimer :&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;" &gt; This is by no means a complete and/or definitive guide. It is based purely on whatever little experience I have.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;In this article , we will implement a linked-list in the kernel space which stores one&lt;span style=""&gt;  &lt;/span&gt;integer value per node and write new system calls to add new items to the list, delete existing items and to display the contents of the list.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Adding new system calls to the kernel involves editing some kernel files, the files that have to be edited are :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;So, first of all, download a kernel source from &lt;/span&gt;&lt;a href="http://kernel.org/"&gt;&lt;span style=";font-family:&amp;quot;;" &gt;http://kernel.org&lt;/span&gt;&lt;/a&gt;&lt;span style=";font-family:&amp;quot;;" &gt; and extract in into a suitable location.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;(The pathnames are relative to the source base directory) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;1&lt;/span&gt;&lt;span style=";font-size:85%;" &gt;. /arch/x86/kernel/syscall_table_32.S&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;2. /arch/x86/include/asm/unistd_32.h&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;3. /include/linux/syscalls.h&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;4. /Makefile&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Next, we are going to put all the new files that we create into a separate directory.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Let's call that directory as "lister" . Note that this is not at all necessary, we can simply add our system calls in the kernel/sys.c file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;So, in the source base directory, we will create a directory named "lister" which will hold all the new files that we create.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The new files that we will be creating are :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;5. lister/lister.c&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;6. lister/lister.h&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;7. lister/Makefile&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Finally, we'll create some user-space files to test the system calls. We'll see more&lt;span style=""&gt;  &lt;/span&gt;about these files later.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Now, lets get started !!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;1. The first file to be changed is the &lt;b&gt;arch/x86/kernel/syscall_table_32.S&lt;/b&gt; file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;This file contains the names of all the system calls, prefixed with "sys_"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Since, we will be adding 3 new system calls to the kernel, which we will be naming as &lt;b&gt;listadd&lt;/b&gt;, &lt;b&gt;listdel&lt;/b&gt; and &lt;b&gt;listshow&lt;/b&gt;, we will have to append 3 lines to this file as :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;.long sys_listadd&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;.long sys_listdel&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;.long sys_listshow&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;2. Next, we'll modify the &lt;b&gt;arch/x86/include/asm/unistd_32.h&lt;/b&gt; file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;This file contains an unique number associated with the system call that is passed to the kernel through the EAX register (specific to x86) when a system call is invoked.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Again, we will have to append 3 lines to the file as follows :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The general structure of the line is &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;"&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:&amp;quot;;font-size:85%;"  &gt;#define __NR_&amp;lt;system_call_name&amp;gt;&amp;lt;last_system_call_number +1&amp;gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:&amp;quot;;font-size:85%;"  &gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;so&lt;/span&gt;&lt;/span&gt;, after adding the relevant lines to the files,the&lt;span style=""&gt;  &lt;/span&gt;file will look somewhat like this :&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;----------------------- snippet ----------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#define __NR_preadv&lt;span style=""&gt;        &lt;/span&gt;&lt;span style=""&gt;       &lt;/span&gt;333&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#define __NR_pwritev&lt;span style=""&gt;       &lt;/span&gt;334&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#define __NR_listadd &lt;span style=""&gt;             &lt;/span&gt;335&lt;span style=""&gt;   &lt;/span&gt;/* newly&lt;span style=""&gt;  &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#define __NR_listdel&lt;span style=""&gt;       &lt;/span&gt;336&lt;span style=""&gt;   &lt;/span&gt;/* added&lt;span style=""&gt;  &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#define __NR_listshow&lt;span style=""&gt;             &lt;/span&gt;337&lt;span style=""&gt;   &lt;/span&gt;/* lines&lt;span style=""&gt;  &lt;/span&gt;*/&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#ifdef __KERNEL__&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#define __ARCH_WANT_IPC_PARSE_VERSION&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;----------------------- snippet ----------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;3. Next, we will edit the file &lt;b&gt;include/linux/syscalls.h&lt;/b&gt; that holds the declarations of all the system calls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;We will add the declarations of our 3 system calls to this file.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;For the listadd system call ,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;asmlinkage long sys_listadd(int __user *);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Now the above declaration says that the listadd system call takes 1 parameter, which is a pointer, in the user-space, to an integer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Similarly, we add the declarations of the other two system calls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;asmlinkage long sys_listdel(int __user *);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;asmlinkage long sys_listshow();&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;4. Next, we modify the &lt;b&gt;/Makefile&lt;/b&gt; so that the files that we will be creating in our "lister" folder get complied.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Add lister/ to core-y (Search for regex: core-y ).The "lister" directory will contain the source file, header file and the Makefile for our system call.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;So, the line would look something like this : &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;core-y&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;        &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;:= usr/ lister/&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;5. Now we create a directory in the source base directory, that will hold our files that contain the code of our system calls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Let's call that directory as "lister"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Now, we will write the actual implementation of the system calls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;It consists of making 2 files, in our case, we call those files, &lt;b&gt;lister.c&lt;/b&gt; and &lt;b&gt;lister.h&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;6. Create a file called &lt;b&gt;lister.h &lt;/b&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The contents of the header file can be something like this&lt;span style=""&gt;  &lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;------------------&lt;span style=""&gt;  &lt;/span&gt;LISTER.H&lt;span style=""&gt;  &lt;/span&gt;------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#ifndef LISTER_H&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#define LISTER_H&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include&amp;lt;linux/list.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;struct linked_list{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;struct list_head list;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;int data;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;struct list_head linked_list;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;int no_of_elements = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#endif&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;------------------- END ------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;This header file defines the node structure of our linked-list. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;It also declares the head of the linked-list (named linked_list) and a variable that holds the number of elements in the list.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;7. Now, we will write the actual system calls. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;We create a file called &lt;b&gt;lister.c&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt;&amp;nbsp;The indentations in the code are eaten up by Blogger...&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;----------------------------- LISTER.C -------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include&amp;lt;linux/syscalls.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include&amp;lt;linux/list.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include&amp;lt;linux/slab.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include&amp;lt;linux/kernel.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include&amp;lt;asm/uaccess.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include&amp;lt;linux/linkage.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;#include "lister.h"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;SYSCALL_DEFINE1(listadd,int __user*,buffer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;int data;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;struct linked_list *new = (struct linked_list*) \&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;                           &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;kmalloc(sizeof(struct linked_list),GFP_KERNEL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;if(no_of_elements == 0){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;    &lt;/span&gt;INIT_LIST_HEAD(&amp;amp;linked_list);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;get_user(data,buffer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;new-&gt;data = data;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;list_add_tail(&amp;amp;new-&gt;list,&amp;amp;linked_list);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;no_of_elements++;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;return 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;SYSCALL_DEFINE1(listdel,int __user*,buffer)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;int data;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;struct list_head *ptr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;struct linked_list *entry;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;get_user(data,buffer);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;if(no_of_elements &gt; 0){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;list_for_each(ptr,&amp;amp;linked_list){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;    &lt;/span&gt;entry&lt;span style=""&gt;  &lt;/span&gt;= list_entry(ptr,struct linked_list,list);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;    &lt;/span&gt;if(entry-&gt;data == data){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;      &lt;/span&gt;list_del(ptr);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;      &lt;/span&gt;return 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;      &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;return -1;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;SYSCALL_DEFINE0(listshow)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;struct list_head *ptr;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;struct linked_list *entry;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;if(no_of_elements &gt; 0){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;list_for_each(ptr,&amp;amp;linked_list){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;    &lt;/span&gt;entry = list_entry(ptr,struct linked_list,list);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;    &lt;/span&gt;printk(KERN_ALERT "%d\n",entry-&gt;data);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;    &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;&lt;span style=""&gt;  &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="font-family: courier new;"&gt;&lt;span style=";font-size:85%;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;---------------------------- END -------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The &lt;b&gt;SYSCALL_DEFINEx&lt;/b&gt; macro is defined in the &lt;b&gt;syscalls.h &lt;/b&gt;file. It is, as the name suggests, used to define a system call.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Here, "x" is the number of parameters that the system call takes.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;So the line&lt;span style=""&gt;  &lt;/span&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;SYSCALL_DEFINE1(listdel,int __user*,buffer) &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;says that : define a system call with the name "listdel", which takes 1 parameter and the parameter is a pointer, in user-space, to an integer.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The name of the pointer is the third argument.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;so in general,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;SYSCALL_DEFINE0(&amp;lt;name_of_system_call&amp;gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;SYSCALL_DEFINEx(&amp;lt;name_of_system_call&amp;gt;, &amp;lt;type_of_arg_1&amp;gt;, &amp;lt;name_of_arg_1&amp;gt;, ... , \ &amp;lt;type_of_arg_x&amp;gt;, &amp;lt;name_of_arg_x&amp;gt;)&lt;span style=""&gt;     &lt;/span&gt;&lt;span style=""&gt;                                         &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The rest of the code is fairly straight-forward.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The &lt;b&gt;get_user()&lt;/b&gt; macro copies the data from the user-space to the kernel-space. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The &lt;b&gt;list_for_each()&lt;/b&gt; macro is used for iterating through the list.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The &lt;b&gt;list_entry()&lt;/b&gt; macro returns a pointer to the linked-list node, given a pointer to the list_head struct within that node as the argument .&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;8. Now, we write a simple &lt;b&gt;Makefile &lt;/b&gt;to compile our files&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;----------------------- Makefile -------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;obj-y += lister.o&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;-----------------------&lt;span style=""&gt;   &lt;/span&gt;END&lt;span style=""&gt;    &lt;/span&gt;-------------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;This completes our kernel-space code. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Now, to test this code, we need to write some user-space code.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;For this, we write 2 files, &lt;b&gt;test.c &lt;/b&gt;and &lt;b&gt;tester.h&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;9. Now, we will write wrapper functions for the system calls and put then together in a header file. Let's call that file as "&lt;b&gt;tester.h&lt;/b&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Writing wrapper functions is not necessary, but it improves the readability of the code. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;-----------------------&lt;span style=""&gt;  &lt;/span&gt;TESTER.H ----------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;#include&amp;lt;linux/unistd.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;#include&amp;lt;sys/syscall.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;#define __NR_listadd 335&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;#define __NR_listdel 336&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;#define __NR_listshow 337&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;static long add_in_list(int * buff)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;return syscall(__NR_listadd,buff);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;static long del_from_list(int * buff)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;return syscall(__NR_listdel,buff);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;static long show_list(void)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;return syscall(__NR_listshow);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;------------------------- END --------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Note here that the numbers in the #define s have to be &lt;b&gt;&lt;i&gt;exactly&lt;/i&gt;&lt;/b&gt; the same as those in the &lt;b&gt;unistd.h &lt;/b&gt;file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Here, in this header file, we wrote 3 wrapper functions for each of the system calls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The &lt;b&gt;_syscall() &lt;/b&gt;macro is the actual invocation of the system call.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Here, the arguments to the wrapper functions are simple integer pointers, instead of the int __user *&lt;span style=""&gt;  &lt;/span&gt;that we used earlier. This is because this code is in the user-space, while the earlier code was in the kernel-space.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;10. Now, we'll write a simple program to test the system calls. Let's call&lt;span style=""&gt;  &lt;/span&gt;that file "&lt;b&gt;test.c&lt;/b&gt;"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;----------------------- TEST.C ----------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;#include&amp;lt;stdio.h&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;#include "tester.h"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;int main()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;int data;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;int i;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;for(i=0;i&lt;4;i++){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;printf("\nEnter the number : ");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;scanf("%d",&amp;amp;data);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;add_in_list(&amp;amp;data);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;show_list();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;printf("\nDelete : ");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;scanf("%d",&amp;amp;data);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;&lt;span style=""&gt;       &lt;/span&gt;del_from_list(&amp;amp;data);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;font-size:9pt;"  &gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;---------------------- END ---------------------------------&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;The code is very simple, nothing really to explain. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Just compile and install the kernel so that system calls become available.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Then compile and execute "test.c" to test out the system calls.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt;Any kind of criticism is welcome ! :-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:&amp;quot;;" &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style=""&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-405624379849270153?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/405624379849270153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2009/08/adding-system-calls-to-linux-kernel.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/405624379849270153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/405624379849270153'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2009/08/adding-system-calls-to-linux-kernel.html' title='Adding system calls to the Linux kernel'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-4170236378172925893</id><published>2009-08-12T19:39:00.023+05:30</published><updated>2009-08-12T21:27:32.249+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Random</title><content type='html'>&lt;span style="font-family:verdana;"&gt;It's been quite a while since the last post. I've been kinda busy ( read LAZY) in the last 3 months.&lt;br /&gt;&lt;br /&gt;A lot has happened since the last post was published. Okay, as you might have guessed, this is _not_ a technical post. :-) &lt;br /&gt;&lt;br /&gt;College in the Final year has really been fun. It's been less about attending lectures and more about playing Table Tennis and Carom !!&lt;br /&gt;We now have a week long off  as a measure to control the swine flu epidemic in the city. I hate swine flu, but I like the holidays :-) :P&lt;br /&gt;&lt;br /&gt;One of the best things that has happened since then is that now i have a job ! [:D]&lt;br /&gt;&lt;br /&gt;Yeah, we had campus recruitment in our college and I was one of the lucky few to have been recruited to &lt;a style="font-family: courier new;" href="http://www.thoughtworks.com/"&gt;ThoughtWorks&lt;/a&gt;.&lt;br /&gt;The recruitment process for ThoughtWorks was rather gruelling...spanning over 3 days and 6 rounds, 7 actually, if you count the aptitude/logic test that i had to give before being handed over the offer letter !&lt;br /&gt;So, after a logic test, group activity round, coding round, 1st technical interview, 2nd technical interview, HR interview and a logic test to test my speed &amp;amp; accuracy...here I am !&lt;br /&gt;But having survived so many rounds makes my selection feel all the more satisfying :-)&lt;br /&gt;&lt;br /&gt;We also got our results in the last week. I've done pretty well this time around. For the first time, a girl didn't top the class  :P &lt;br /&gt;&lt;br /&gt;We also have to do an year long project in the final year. My project group ( 4 of us)  have been working really hard in the last couple of months, reading lots research papers / blogs / TO-DO lists to find a good project idea. We're hoping to zero down on a good idea soon ( Its been like this for the last month :P ). Really looking forward to working with the group.&lt;br /&gt;&lt;br /&gt;I wont say the customary "Look forward to more posts in the near future" stuff , coz i know that its not gonna happen. I'm not a regular blogger and I'm too lazy to become one :P&lt;br /&gt;&lt;br /&gt;This post came purely out of the guilt of seeing most of my friends blog in the last couple of days :P &lt;br /&gt;Special inspiration from &lt;a href="http://pindropnonsense.blogspot.com"&gt;Aruna&lt;/a&gt;, who has been blogging furiously in the last 15 days :-)&lt;br /&gt;&lt;br /&gt;So, until the next post, Cya !&lt;br /&gt;Take care. Be safe. Bunk college !&lt;br /&gt;--Cheers !&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-4170236378172925893?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/4170236378172925893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2009/08/stuff-that-doesnt-matter.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/4170236378172925893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/4170236378172925893'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2009/08/stuff-that-doesnt-matter.html' title='Random'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-153483168267241935</id><published>2009-05-02T23:42:00.014+05:30</published><updated>2009-07-26T20:38:07.112+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='HP remote control'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>HP remote control in ubuntu ....how to get it working ....</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Got a new laptop couple of months ago :D&lt;br /&gt;HP Pavilion dv5 1104TU and it completely rocks ! :D&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Well, it also came with a neat little remote control with lots of media buttons to make life easy. It worked perfectly under Vista, but refused to work with ubuntu (tried on 8.10 and 9.04). Now, I've finally come up with a way to get it working on Ubuntu.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Just follow this procedure and nothing can go wrong !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Firstly, you'll need to get &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;lirc&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; .&lt;/span&gt;&lt;br /&gt;To install lirc, click &lt;a href="apt:/lirc"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Note : Select "none" and "none" when it asks for configuration during isntallation.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;After that, download the configuration file for the Remote from &lt;/span&gt;&lt;a style="font-family: courier new;" href="http://lirc.sourceforge.net/remotes/hp/DV6331"&gt;here&lt;/a&gt;&lt;span style="font-family:courier new;"&gt; .This is the configuration file for the remote that comes with the DV6 series, but it works just fine with DV5 series too.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Now save this file as &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;lircd.conf&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; in /etc/lirc/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;After this , edit the hardware.conf file to match this :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;# /etc/lirc/hardware.conf&lt;br /&gt;#&lt;br /&gt;#Chosen Remote Control&lt;br /&gt;REMOTE="None"&lt;br /&gt;REMOTE_MODULES="lirc_dev lirc_serial"&lt;br /&gt;REMOTE_DRIVER="default"&lt;br /&gt;REMOTE_DEVICE=""&lt;br /&gt;REMOTE_LIRCD_CONF=""&lt;br /&gt;REMOTE_LIRCD_ARGS=""&lt;br /&gt;&lt;br /&gt;#Chosen IR Transmitter&lt;br /&gt;TRANSMITTER="None"&lt;br /&gt;TRANSMITTER_MODULES=""&lt;br /&gt;TRANSMITTER_DRIVER=""&lt;br /&gt;TRANSMITTER_DEVICE=""&lt;br /&gt;TRANSMITTER_LIRCD_CONF=""&lt;br /&gt;TRANSMITTER_LIRCD_ARGS=""&lt;br /&gt;&lt;br /&gt;#Enable lircd&lt;br /&gt;START_LIRCD="true"&lt;br /&gt;&lt;br /&gt;#Don't start lircmd even if there seems to be a good config file&lt;br /&gt;#START_LIRCMD="false"&lt;br /&gt;&lt;br /&gt;#Try to load appropriate kernel modules&lt;br /&gt;LOAD_MODULES="true"&lt;br /&gt;&lt;br /&gt;# Default configuration files for your hardware if any&lt;br /&gt;LIRCMD_CONF=""&lt;br /&gt;&lt;br /&gt;#Forcing noninteractive reconfiguration&lt;br /&gt;#If lirc is to be reconfigured by an external application&lt;br /&gt;#that doesn't have a debconf frontend available, the noninteractive&lt;br /&gt;#frontend can be invoked and set to parse REMOTE and TRANSMITTER&lt;br /&gt;#It will then populate all other variables without any user input&lt;br /&gt;#If you would like to configure lirc via standard methods, be sure&lt;br /&gt;#to leave this set to "false"&lt;br /&gt;FORCE_NONINTERACTIVE_RECONFIGURATION="false"&lt;br /&gt;START_LIRCMD=""&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Save it&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Go to the terminal and ..&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: courier new;"&gt; sudo /etc/init.d/lirc start &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;and Voila ! if you have done everything correctly, the remote should be working now.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;You can try it out from System-&gt;Preferences-&gt;Keyboard Shortcuts&lt;br /&gt;Hope that helps ! :-)&lt;br /&gt;Cheers !&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-153483168267241935?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/153483168267241935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2009/05/hp-remote-control-in-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/153483168267241935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/153483168267241935'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2009/05/hp-remote-control-in-ubuntu.html' title='HP remote control in ubuntu ....how to get it working ....'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-2437602921575131504</id><published>2008-12-17T23:55:00.005+05:30</published><updated>2008-12-18T00:30:50.131+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flash Drives'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows XP'/><title type='text'>Of Flash drives and Windows XP...Part II</title><content type='html'>Part I can be found &lt;a href="http://amodjaltade.blogspot.com/2008/12/of-flash-drives-and-windows-xp.html"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This part contains the workarounds !&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;How to fool Windows into thinking that the removable drive is a local disk :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This solution has been copied from &lt;a href="http://www.uwe-sieber.de/usbtrouble_e.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I am posting the solution here too, just because its difficult to find the solution on that page :P.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Nearly all USB flash drives pretend to have a removable media (even it's a lie), so Windows detects them as 'removable'. On drives with a removable media Windows 2000 and higher supports only one partition.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Finally it's a single bit in the device's device descriptor, the removable media bit (RMB). If you take away the RMB then Windows sees the drive as 'local disk' and multiple partitions work.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The Removable Media Bit can be changed either in the drive's hardware or by a Windows filter driver.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Changing in the hardware works with some flash drives by means of the tool &lt;/span&gt;&lt;a style="font-family: courier new;" href="http://www.pendriveapps.com/2008/05/01/bootit-lexar-usb-flip-the-removable-media-bit-tool"&gt;Lexar BootIt. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;But this works only with some pen-drvies. It DID NOT work for me.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The second way to do this ...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;A filter driver for removing the RMB has been made by Hitachi for their Microdrives (Compatct Flash cards with a mini harddrive):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-family: courier new;" href="http://www.uwe-sieber.de/files/xpfildrvr1224_320.zip"&gt;xpfildrvr1224_320.zip&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;By modifying the included INF file the filter driver can be used with any other 'removable' drive.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;For the device detection there are the lines in section [cfadisk_device]:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[cfadisk_device]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;%Microdrive_devdesc% = cfadisk_install,IDE\DiskIBM-DSCM-11000__________________________SC2IC801&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;"IDE\DiskIBM-DSCM-11000__________________________SC2IC801" is the device ID of one of the supported Microdrives.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;In analogy to these lines we add one line for each 'removable' USB drive we want to turn into an USB hard drive. The ID is found in the Windows device management: Expand 'Disk drives', right click your USB drive, select Properties. On the tab "Details" under XP the item "Device instance ID" is already selected. Click on the ID in the List and press Ctrl+C, this copies the ID into the Windows Clipboard and can be pasted somewhere else with Ctrl+V.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;XP shows the tab "Details" only when the environment variable DEVMGR_SHOW_DETAILS=1 is set:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;a href="http://www.uwe-sieber.de/files/devmgr_show_1.reg"&gt;DevMgr_Show_1.reg&lt;/a&gt; download and doubleclick the file, then relogon to take effect.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Sample:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;USBSTOR\DISK&amp;amp;VEN_LEXAR&amp;amp;PROD_JUMPDRIVE&amp;amp;REV_1.30\K326441127040&amp;amp;0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;We need the fat part:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;[cfadisk_device]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;%Microdrive_devdesc% = cfadisk_install,USBSTOR\DISK&amp;amp;VEN_LEXAR&amp;amp;PROD_JUMPDRIVE&amp;amp;REV_1.30&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;In the last line of the INF file we change "Hitachi Microdrive" into something nice as "RemovableToFixed".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;In the device manager again right-click the USB drive, "Update driver...", then "No, not this time" -&gt; Next -&gt; "Install from a list or..." -&gt; Next -&gt; "Don't search." -&gt; Next -&gt; "Have Disk" -&gt; browse to the INF file here. Now "RemovableToFixed" should be in the list -&gt; Next -&gt; Confirm the two warnings -&gt; Finish.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Now the drive is re-detected, actually as USB hard drive. The drive can be partitioned, and all the existing partitions are visible and usable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Now, this solution works with all the USB flash drives. But the problem is that since this method requires installing a custom driver, the pen-drive is detected as a local disk only on the machine that uses that driver. All the other machines detect it as a removable drive. This essentially defeats the purpose of using a pen-drive !!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-size:130%;"&gt;Re-arrangement of partitions :&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This hasn't been copied from anywhere :P.&lt;br /&gt;&lt;br /&gt;What i realized was that only the &lt;span style="font-weight: bold;"&gt;1st&lt;/span&gt; physical partition was being assigned a letter. So i re-arranged the partitions within the flash drive as follows :&lt;br /&gt;&lt;br /&gt;1) 2111 MB NTFS (for general use)&lt;br /&gt;2)1024 MB ext2 ( for persistence)&lt;br /&gt;3)700 MB FAT32, bootable.&lt;br /&gt;&lt;br /&gt;This made the NTFS partition visible from Windows and i could use my flash drive as if it were a ~2 GB pen-drive.&lt;br /&gt;&lt;br /&gt;Looking back, I actually liked this solution, since, whenever I use my pen-drive in the college, the viruses wont be able to mess up the FAT32 bootable partition ! and when I use Linux, all 3 partitions are being mounted anyway. The flip side was that sharing data between the partitions was impossible with Windows XP.....&lt;br /&gt;&lt;br /&gt;So as it turned out, there is no concrete solution to using Flash drives with multiple partitions with Windows XP....just some workarounds, each with its pros and cons....&lt;br /&gt;&lt;br /&gt;So what do you do if you wanna use a Flash drive with multiple partitions ? .....&lt;span style="font-weight: bold;"&gt;Use Linux&lt;/span&gt;  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-2437602921575131504?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/2437602921575131504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/of-flash-drives-and-windows-xppart-ii.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2437602921575131504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2437602921575131504'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/of-flash-drives-and-windows-xppart-ii.html' title='Of Flash drives and Windows XP...Part II'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-2619754057386317891</id><published>2008-12-17T23:00:00.008+05:30</published><updated>2008-12-18T00:17:53.108+05:30</updated><title type='text'>Of Flash drives and Windows XP...Part I</title><content type='html'>As mentioned &lt;a href="http://amodjaltade.blogspot.com/2008/12/of-live-usbs-and-mbrs.html"&gt;here&lt;/a&gt;, I faced quite an annoying problem when i created multiple partitions on my USB flash drive.&lt;br /&gt;&lt;br /&gt;The layout of the Flash drive was as follows :&lt;br /&gt;&lt;br /&gt;1)720 MB partition, FAT32, bootable&lt;br /&gt;2)1024 MB partition ext2 (for persistence)&lt;br /&gt;3)2111 MB parition, NTFS (for general use)&lt;br /&gt;&lt;br /&gt;Now, the problem was that when the Flash drive was inserted when Windows XP was running, only 1 partition was being assigned a letter by Windows. The remaining partitions were visible from the Disk Management Tool, but were not being assigned a letter and as a result were rendered useless.&lt;br /&gt;Any attempt to assign a letter to the drives resulted in the following error :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"The partition is not enabled. To enable the partition re-start the computer."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Restarting the computer does not help and the same error is displayed.&lt;br /&gt;Now this was annoying, because the partition that was being assigned a letter was the 720 MB one, which was already filled up.&lt;br /&gt;&lt;br /&gt;This problem is absent in Ubuntu. All the 3 partitions are detected and are usable. This problem is confirmed by Microsoft as a feature (lol :P).Only the first partition on the USB Flash drive is assigned a letter and is usable.&lt;br /&gt;&lt;br /&gt;There are a couple of workarounds for this ....one is to fool Windows into thinking that the removable drive is a local disk. The other one involves rearrangement of partitions.&lt;br /&gt;&lt;br /&gt;Workarounds can be found &lt;a href="http://amodjaltade.blogspot.com/2008/12/of-flash-drives-and-windows-xppart-ii.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-2619754057386317891?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/2619754057386317891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/of-flash-drives-and-windows-xp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2619754057386317891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2619754057386317891'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/of-flash-drives-and-windows-xp.html' title='Of Flash drives and Windows XP...Part I'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-1454242800682598462</id><published>2008-12-17T11:19:00.007+05:30</published><updated>2008-12-17T23:00:17.658+05:30</updated><title type='text'>Of Live USBs and MBRs</title><content type='html'>Determined to put my 4 GB flash drive to good use, i decided to create a Live USB disk of the Interpid Ibex on it.&lt;br /&gt;&lt;br /&gt;Now, Ubuntu 8.10 comes with this neat "Live USB disk creator" tool, which makes it extremely easy to create a live disk.But on my friend &lt;a href="http://chinmaykamat.blogspot.com/2008/10/live-usbs-and-guis.html"&gt;Chinmay's blog&lt;/a&gt;, i read that this tool doesn't make the USB stick persistent. So, without trying  it out  myself, i headed  &lt;a href="http://www.pendrivelinux.com/2008/10/15/ubuntu-810-persistent-flash-drive-install-from-live-cd/"&gt;here&lt;/a&gt;. Now this page describes how to &lt;span style="font-style: italic;"&gt;install&lt;/span&gt; Ubuntu 8.10 on the USB stick.&lt;br /&gt;&lt;br /&gt;After following all the steps mentioned there, i was unable to boot through my USB stick. It displayed some garbage on the screen and i was forced to restart the computer.&lt;br /&gt;&lt;br /&gt;So now,  I tried the Live USB creator tool, which led to the same problem as well !. One probable source of this kind of error can be a corrupted MBR. So i tried writing a MBR to the disk using lilo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#lilo -M /dev/sdX&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;where, X  is the letter assigned to the drive, which can be found out by doing a  &lt;span style="font-weight: bold;"&gt;#fdisk -l &lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;And, as it turned out, this was the problem. Now, I was able to boot through my USB stick and everything  seemed just fine. All the settings and documents  were persistent. I again, formatted the USB stick and used the tool provided with the Intrepid, and surprisingly the settings and documents were persistent here too !. So Chinmay's might be an isolated problem....or mine  an isolated success :P .&lt;br /&gt;&lt;br /&gt;The major difference that i found out between the two methods was that the creator tool does not create separate physical partitions on the stick. It instead creates a file on the stick and uses it for persistent settings. On the other hand, the manual method creates a separate partition for keeping the settings persistent.&lt;br /&gt;&lt;br /&gt;Now, my USB stick was ready ! ....well not exactly.....i faced quite an annoying problem in Windows while using this USB stick.&lt;br /&gt;&lt;br /&gt;Since I'm running out of time, I will post the problem and some workarounds that I found out later.&lt;br /&gt;&lt;br /&gt;Stay tuned :-D&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-1454242800682598462?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/1454242800682598462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/of-live-usbs-and-mbrs.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/1454242800682598462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/1454242800682598462'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/of-live-usbs-and-mbrs.html' title='Of Live USBs and MBRs'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-6883336399067846976</id><published>2008-12-13T20:36:00.011+05:30</published><updated>2008-12-14T10:17:12.794+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='User Privileges'/><category scheme='http://www.blogger.com/atom/ns#' term='Open Solaris'/><title type='text'>Problem with user Privileges and Roles in OpenSolaris</title><content type='html'>Had tried out Open Solaris a few months ago...and straightaway faced a numerous problems :P ...&lt;br /&gt;&lt;br /&gt;The most annoying was that the user privileges were getting reset on every login.&lt;br /&gt;So here i am posting how i worked around this problem.&lt;br /&gt;&lt;br /&gt;As I said,&lt;br /&gt;&lt;br /&gt;The user privileges of my user were getting reset on every login and now, the GUI had started throwing a strange error...when i started the user admin tool ( Users and Groups ), it asked me for authorization, when i provided the root password, it simply rejected it.&lt;br /&gt;&lt;br /&gt;The funny part is, that i can "su" root using the same password through the terminal !! (This is ofcourse after i "su" the Primary Administrator) .&lt;br /&gt;&lt;br /&gt;So, i was forced to work with the CLI, i tried using the "usermod" command, but I did not understand clearly the way it is supposed to be used, so gave up on that too.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, i opened the  &lt;span style="font-weight: bold;"&gt;/etc/user_attr&lt;/span&gt; file .&lt;br /&gt;&lt;br /&gt;/****************&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/etc/user_attr snippet :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;root::::type=role;auths=solaris.*,solaris.grant;profiles=All;lock_afte r_retries=no;min_label=admin_low;clearance=admin_high&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;aditya::::profiles=Prim ary Administrator;roles=root&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#amod::::profiles=Apache 22 Administration,Application Server Management,Audit Control,Audit Review,Basic Actions,Console #User,Contract Observer,Cron Management,Crypto Management,DAT Administration,D-BUS Management,Desktop Configuration,Device #Management,Device Security,DHCP Management,dtwm,File System Management,File System Security,FTP Management,HAL #Management,Idmap Name Mapping Management,Idmap Service Management,Inetd Management,Information Security,IP Filter #Management,ISCSI Target Administration,ISCSI Target Management,ISNS Server Management,Kerberos Client Management,Kerberos #Server Management,Log Management,Mail Management,Maintenance and Repair,Media Backup,Media Restore,MySQL #Administration,Name Service Management,Name Service Security,NDMP Management,Network IPsec Management,Network Link #Security,Network Management,Network Security,Network Wifi Management,Network Wifi Security,Object Access #Management,Object Label Management,Operator,Outside Accred,Postgres Administration,Primary Administrator,Printer #Management,Process Management,Project Management,Rights Delegation,Rmvolmgr Management,Service Management,Service #Operator,shutdown,SMBFS Management,SMB Management,Software Installation,System Administrator,System Event Management,User #Management,User Security,VSCAN Management,Web Console Management,ZFS File System Management,ZFS Storage Management,Zone #Management;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;amod::::auths=solaris.*,solaris.grant;profiles=All;roles=root&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;/***** ***************end of snippet&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;(all the lines of amod (second from last) have been commented, they might not show up properly...formatting problems)&lt;br /&gt;&lt;br /&gt;so as u can see, my user (amod) had all the privileges, but they weren't showing up in the GUI ! (bug ?). And now i understood why i couldn't "su" root... i had no "roles" defined. I have no idea of how to set roles through the GUI or the CLI, so instead i just copied "root's" line and made some changes :P&lt;br /&gt;&lt;br /&gt;So now, my problem is solved, i can su root directly from amod and do everything i want (heck ! im _almost_ root now :D ).&lt;br /&gt;&lt;br /&gt;But, the problem of the GUI not showing the privileges still persists.&lt;br /&gt;&lt;br /&gt;I had posted this workaround on the &lt;a href="http://www.opensolaris.org/jive/thread.jspa?threadID=75340&amp;amp;tstart=0"&gt;Pune Open Solaris User Group's forums&lt;/a&gt; and was suggested that I post it on the Open Solaris desktop-discuss forums. The post on the desktop-discuss forums can be found &lt;a href="http://www.opensolaris.org/jive/thread.jspa?messageID=287414"&gt;here&lt;/a&gt;. The same problem has been confirmed by 3 users there.&lt;br /&gt;So, until an update for the GUI, which allows roles to be defined is released, the above workaround works just fine :-)&lt;br /&gt;&lt;br /&gt;EDIT:&lt;br /&gt;You can also assign roles to a user using the "usermod" command with a "-r" option. I did not know this then. This, again, can be done only by the Primary Admin, if no other users have "root" role defined.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-6883336399067846976?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/6883336399067846976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/problem-with-user-privileges-and-roles.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6883336399067846976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6883336399067846976'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/12/problem-with-user-privileges-and-roles.html' title='Problem with user Privileges and Roles in OpenSolaris'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-8558595003796187708</id><published>2008-10-23T23:01:00.005+05:30</published><updated>2008-11-10T12:34:06.787+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>Err....</title><content type='html'>Saw the dates for practical exam  yesterday and i made a choice between Fifa '09 and Proakis...&lt;br /&gt;&lt;br /&gt;I opened my Proakis and five minutes later....closed it.......WTH !! i can't understand a word !!!&lt;br /&gt;&lt;br /&gt;Wondering wats gonna happen, i had a vision ...(a la Vincent Kennedy McMohan moment )...&lt;br /&gt;&lt;br /&gt;Follow these steps and 80% is guaranteed. Read on.&lt;br /&gt;&lt;br /&gt;Before we start, here's one instruction -&gt; Be slow, don't rush through it. Read each word carefully and follow each step !!&lt;br /&gt;All set.&lt;br /&gt;&lt;br /&gt;Now, firstly,&lt;br /&gt;&lt;br /&gt;look down and look up .......good u r a in a state of mind where u'll do/believe everything i say :P&lt;br /&gt;&lt;br /&gt;1) Clap your hands 3 times on a desk, 2 times with the right hand, once with the left. If you're a leftie, reverse it. If you're ambidextrous, clap 2 times with both the hands.&lt;br /&gt;&lt;br /&gt;2) Jump 7 times without bending your knees.&lt;br /&gt;&lt;br /&gt;3) Look down and look up. If u did it again....man u're really desparate :P...if not, see !! u're already getting smarter ...Read on....&lt;br /&gt;&lt;br /&gt;4) Spin around 3 and a half times.&lt;br /&gt;&lt;br /&gt;5) Say "&lt;span style="font-style:italic;"&gt;asjdhfasdklfwmasiuwehjawergydaszmxbczxjhg&lt;/span&gt;" &lt;span style="font-weight:bold;"&gt;BACKWARDS !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, the last step....laugh at urself for being such a dumba** to read thru this crap....hehehe...&lt;br /&gt;&lt;br /&gt;And Lo ! u're there...if u could do all the things said above, 80% is guaranteed !!&lt;br /&gt;&lt;br /&gt;Well, i cudn't do all the steps ......so i made a choice ....between Fifa '09 and my Proakis......&lt;br /&gt;&lt;br /&gt;AC Milan v/s Chelsea ...6-0. Peace !! :-)&lt;br /&gt;&lt;br /&gt;PS : This is purely a work of imagination. Any resemblance to living or dead is just a result of ur twisted perception :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-8558595003796187708?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/8558595003796187708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/10/saw-dates-for-practical-exam-yesterday.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/8558595003796187708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/8558595003796187708'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/10/saw-dates-for-practical-exam-yesterday.html' title='Err....'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-124351375158947396</id><published>2008-08-09T16:20:00.003+05:30</published><updated>2008-08-09T22:38:46.973+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Owned !!</title><content type='html'>ROTFLMAO !!&lt;br /&gt;&lt;br /&gt;Check this out - &gt;&lt;a href="http://www.neowin.net/news/main/08/08/08/vista39s-security-rendered-completely-useless-by-new-exploit"&gt;Game Over !!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-124351375158947396?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/124351375158947396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/08/owned.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/124351375158947396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/124351375158947396'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/08/owned.html' title='Owned !!'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-4177544276790568479</id><published>2008-08-08T19:09:00.020+05:30</published><updated>2008-08-09T22:40:11.723+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc'/><title type='text'>WTH just happened ?</title><content type='html'>I turned on my computer and it popped a message &lt;span style="font-weight:bold;"&gt;"BIOS Checksum Error. Starting recovery ...".&lt;/span&gt;&lt;br /&gt;It started searching my floppy drive( non-existent :P ) and the Cd-Drive for the BIOS ROM.&lt;br /&gt;Fortunately, I had the support CD at hand and quickly pushed it into the CD-Drive.&lt;br /&gt;&lt;br /&gt;Up came the message :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;"M2N-MX.ROM detected&lt;br /&gt;Starting Erasing...|&lt;br /&gt;Starting programming ....|  "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then the mobo beeped twice-thrice and the computer restarted. And, the BIOS checksum error message popped again !! WTH !! i just saw it getting flashed !!&lt;br /&gt;&lt;br /&gt;Happened 2 times in a row....frustrated, i decided to take out the mobo manual (dunno why i didn't take it out earlier ... :P) &lt;br /&gt;&lt;br /&gt;It had 2 full pages regarding BIOS recovery... one way was to press Alt+ F2 before POST to start ASUS' "EZ Flash Utility " that would apparently help me flash my BIOS.&lt;br /&gt;&lt;br /&gt;Computer restarted. I pressed Alt+F2. &lt;br /&gt;The utility started and searched my Cd-Drive for a BIOS file.&lt;br /&gt;Up came the message &lt;span style="font-weight:bold;"&gt;"M2N-MX.ROM detected"&lt;/span&gt;&lt;br /&gt;and immedialtely followed by &lt;span style="font-weight:bold;"&gt;"Error ! the ROM file is outdated and cannot work with the hardware "&lt;/span&gt;&lt;br /&gt;WTF !! This is the BIOS that came in the manufacturer's CD !! &lt;br /&gt;&lt;br /&gt;I was starting to freak out... Fired up my old machine and downloaded the LATEST BIOS for my mobo, bought a CD and burned it onto the disk.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Computer restarted.&lt;br /&gt;Up came the message:&lt;br /&gt;"M2N-MX.ROM not detected !"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;huh?...Sigh, the file i had downloaded had a different name ....fine, i'll just have to rename it and burn it again....I removed the Cd from the drive and instead of pushing the "power-off" button, accidentally, pushed the "restart button"...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;My BIOS was detected !! &lt;br /&gt;&lt;br /&gt;"There is a CMOS checksum error :&lt;br /&gt;Press F1 to start recovery&lt;br /&gt;Press F2 to reset to default settings and continue " &lt;/span&gt;  ?_? &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;F2 pressed.&lt;br /&gt;The screen went blank and up came the familiar message &lt;br /&gt;"GRUB Loading  stage 1.5. "&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Wheeeee !! problem solved !!&lt;br /&gt;But WTH just happened ??? The computer was running fine until yesterday ...&lt;br /&gt;My guess is a faulty SMPS which isn't providing the required current at the required voltage to the mobo....&lt;br /&gt;Any pointers ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-4177544276790568479?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/4177544276790568479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/08/wth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/4177544276790568479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/4177544276790568479'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/08/wth.html' title='WTH just happened ?'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-2456492549607166820</id><published>2008-06-17T12:05:00.064+05:30</published><updated>2008-08-06T17:47:33.397+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Games'/><title type='text'>TrackManiac !!</title><content type='html'>&lt;a style="font-family: georgia;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Gqf_V5oaOhQ/SFd7CV1N5XI/AAAAAAAAAAs/AO1LS05GQp4/s1600-h/logo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_Gqf_V5oaOhQ/SFd7CV1N5XI/AAAAAAAAAAs/AO1LS05GQp4/s400/logo.jpg" alt="" id="BLOGGER_PHOTO_ID_5212770373854946674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahh ! Writing after many days...this post is guaranteed to be scratchy :P&lt;br /&gt;&lt;br /&gt;After playing TrackMania Nations , I just had to try this newest version of TrackMania, The TrackMania Forever !!&lt;br /&gt;For those who don't know what TrackMania is, here's the wiki topic link : &lt;a href="http://en.wikipedia.org/wiki/Trackmania"&gt;http://en.wikipedia.org/wiki/Trackmania&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The official website is : &lt;a href="http://www.trackmania.com/"&gt;http://www.trackmania.com&lt;/a&gt;&lt;br /&gt;The setup can be downloaded from the their site. This game is free to download and free to play :D&lt;br /&gt;&lt;br /&gt;TrackMania Forever was released on 17-18 April, 2008 ( when the PL had just started :D ) and it has around 1 million ( 980k , to be precise) registered online players.The Indian community is not-so-strong with just around 2,500 odd players....i'm currently ranked 254th among the 2.5k players :D&lt;br /&gt;TMForever lets you choose between online and offline play...i just love games which have both online and offline modes :).&lt;br /&gt;TrackMania in the offline (Solo) mode offers campaigns.The campaigns have been changed significantly. Their difficulty is now reflected by colors (White - easiest, Green, Blue, Red, Black - hardest), and progression to harder tracks is limited by requiring you to finish the previous track(s) with some medal first: You need bronze medal to proceed to next track in Green difficulty, silver for Blue, and gold medal in Red. The black tracks only unlock after you gain gold on ALL the previous tracks.Nice practice before you jump onto the online community :-)&lt;br /&gt;&lt;br /&gt;There are basically 2 types of tracks...Dirt tracks and Stadium tracks.There are more stadium tracks than dirt ones, but both the types are equally engaging.&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:courier new;"&gt;                             A stadium track :&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_Gqf_V5oaOhQ/SFdjl37LoII/AAAAAAAAAAU/os40lZlZpek/s1600-h/tm1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_Gqf_V5oaOhQ/SFdjl37LoII/AAAAAAAAAAU/os40lZlZpek/s320/tm1.jpg" alt="" id="BLOGGER_PHOTO_ID_5212744596023124098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-family:courier new;"&gt;                              Dirt track :&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_Gqf_V5oaOhQ/SFdvwCJdcnI/AAAAAAAAAAc/X_I0EJZnsbQ/s1600-h/tm3.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_Gqf_V5oaOhQ/SFdvwCJdcnI/AAAAAAAAAAc/X_I0EJZnsbQ/s320/tm3.jpg" alt="" id="BLOGGER_PHOTO_ID_5212757964705591922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;                            Online Action :&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a style="font-family: georgia;" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_Gqf_V5oaOhQ/SFdxAxew3II/AAAAAAAAAAk/gUUWBf5OgL4/s1600-h/tm2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_Gqf_V5oaOhQ/SFdxAxew3II/AAAAAAAAAAk/gUUWBf5OgL4/s320/tm2.jpg" alt="" id="BLOGGER_PHOTO_ID_5212759351800945794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Online mode lets you choose different servers from around the world. What I liked most is that it also provides a list of recommended servers, where the average player ranking is close to yours...&lt;br /&gt;Winning races or finishing in the top 5 ,gives LP points, which is the basis for the rankings.&lt;br /&gt;Online mode is madly addictive ( though MMORPGs are more addictive :P).&lt;br /&gt;The only downside to the Online play is that, in India, where bandwidth is metered, online play can cost  quite a lot of "MBs" ( thats the reason why i love MMORPGs :P).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The more thing that I haven't touched yet is the track editor ....which as the name suggests lets you edit tracks or create new ones !&lt;br /&gt;&lt;br /&gt;If you haven't played Trackmania yet, then this the game to start with.If you have been playing since the United version, this version really doesn't add much ( I read this on some other review :P).&lt;br /&gt;&lt;br /&gt;For : Good graphics, Addictive gameplay, Offline and Online modes, Track editor ,Its FREE !!&lt;br /&gt;Against : May cost you lots of "MBs" during online play.&lt;br /&gt;Rating : 9.5/10&lt;br /&gt;(- 0.5 less coz it really uses up too much "MBs" :-( )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-2456492549607166820?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/2456492549607166820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/06/trackmaniac.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2456492549607166820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/2456492549607166820'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/06/trackmaniac.html' title='TrackManiac !!'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_Gqf_V5oaOhQ/SFd7CV1N5XI/AAAAAAAAAAs/AO1LS05GQp4/s72-c/logo.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-6345035923029159118</id><published>2008-04-25T11:39:00.006+05:30</published><updated>2008-08-06T17:48:08.435+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Hardy Heron is finally out !!</title><content type='html'>The Heron is finally out, and i can't wait to install it on my box.&lt;br /&gt;Wait, why haven't i installed it yet ? Because i have an earlier installation of Gutsy, and I downloaded the Live CD instead of the Alternate CD  (sad)...so i'll have to wait one more day and my exams are around the corner so I won't be able to tinker much...&lt;br /&gt;&lt;br /&gt;Anyway, I did run the Live CD for about 10-15 minutes and though i didn't look around much, the first thing that came to my notice was the booting time....it booted in around a minute from the Live CD ,thats fast compared to the Gutsy Gibbon.&lt;br /&gt;The next thing that pleased me instantly was the native resolution of my monitor was detected flawlessly....something that didn't happen in either Gutsy Gibbon or Fedora 8...&lt;br /&gt;also,&lt;br /&gt;Internet was configured within 60 seconds...typical of Ubuntu...&lt;br /&gt;and the wallpaper is awesome.&lt;br /&gt;&lt;br /&gt;But one thing was amiss, I remember reading that Ubuntu was going to do away with the human theme in the Hardy Heron, but the default theme still happens to be the human theme.......whether the idea was dropped, i know not....but i was really excited to see a new theme.&lt;br /&gt;&lt;br /&gt;Overall the first impression was that the Heron does seem to be an improvement over 7.10,&lt;br /&gt;&lt;br /&gt;More later.&lt;br /&gt;&lt;br /&gt;Cheers !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-6345035923029159118?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/6345035923029159118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/04/hardy-heron-is-finally-out.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6345035923029159118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/6345035923029159118'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/04/hardy-heron-is-finally-out.html' title='Hardy Heron is finally out !!'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-8842466433393106924</id><published>2008-03-24T11:33:00.004+05:30</published><updated>2008-08-06T17:47:52.099+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>The Real reason why we use linux....</title><content type='html'>the REAL reason why we use Linux....&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.anamazingmind.com/2008/03/real-reason-we-use-linux.html"&gt;Why we use Linux&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I found the  article and the subsequent comments really interesting....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-8842466433393106924?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/8842466433393106924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/real-reason-why-we-use-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/8842466433393106924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/8842466433393106924'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/real-reason-why-we-use-linux.html' title='The Real reason why we use linux....'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-7536197072940871277</id><published>2008-03-24T00:25:00.001+05:30</published><updated>2008-08-06T17:46:48.076+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dev C++'/><title type='text'>Dev-C++ under Vista</title><content type='html'>For those having trouble using Dev-C++ under vista, follow &lt;a href ="http://opcode0x90.wordpress.com/2007/10/19/dev-c-bugs-under-windows-vista/"&gt; THIS &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It fixed my  " source file not compiled " error ...&lt;br /&gt;&lt;br /&gt; -cheers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-7536197072940871277?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/7536197072940871277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/dev-c-under-vista.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/7536197072940871277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/7536197072940871277'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/dev-c-under-vista.html' title='Dev-C++ under Vista'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-598725836737954245</id><published>2008-03-23T23:56:00.002+05:30</published><updated>2008-08-06T17:47:10.434+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dev C++'/><title type='text'>graphics.h without Turbo C/C++</title><content type='html'>hmm.........this first post took a long time coming..... :-D&lt;br /&gt;&lt;br /&gt;I personally hate using the Turbo C/C++ compiler, no, its not a bad compiler, but its well past its sell-by date. It was one the best compilers earlier, not anymore....&lt;br /&gt;&lt;br /&gt;When using Linux I obviously use the &lt;a href = "http://gcc.gnu.org/"&gt;gcc&lt;/a&gt;.&lt;br /&gt;When using Windows, i use the &lt;a href = "http://www.bloodshed.net/devcpp.html"&gt;Dev-C ++ IDE&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Many people ( mostly 2nd year comp. engg. students from Pune University :P) complain that one cannot use the "graphics.h" with any other IDE, well, u can..just follow these steps..&lt;br /&gt;&lt;br /&gt;1. Get &lt;a href = "http://www.bloodshed.net/devcpp.html"&gt;Dev-C ++&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;2. Install Dev-C++ ( i usually prefer following the default install path in case of       compilers ).&lt;br /&gt;&lt;br /&gt;3. Get the "graphics.h" and the "libbgi.a" files from &lt;a href= "http://www.esnips.com/web/amodjaltadesStuff"&gt; Here &lt;/a&gt;  ....credit for these files goes to Michael Serrano.&lt;br /&gt;&lt;br /&gt;Note: Copying  the files from the Turbo C directory may not work ( i haven't tried it ..).&lt;br /&gt;&lt;br /&gt;4. Copy the "grahpics.h" files to : C:\Dev-Cpp\include &lt;br /&gt;   and the "libbgi.a" file to :  C:\Dev-Cpp\lib&lt;br /&gt;&lt;br /&gt;Note : Your paths might be different, please check where Dev-C++ is installed on your system.&lt;br /&gt;&lt;br /&gt;5.Start Dev-C++ . now  &lt;span style="font-weight:bold;"&gt;Tools--&gt;Compiler Options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;6.Tick the "Add these commands to the linker...." and within the box , paste the following line :&lt;br /&gt;&lt;br /&gt;                 -lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32&lt;br /&gt; &lt;br /&gt;This tells your linker what all extra libraries it should link....&lt;br /&gt;&lt;br /&gt;Now its all done, enjoy the Turbo C++ graphics library on Dev- C++&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note: This is not the only place where you will find such a tutorial...i haven't devised this method, only the linker part is mine :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-598725836737954245?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/598725836737954245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/graphicsh-without-turbo-cc.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/598725836737954245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/598725836737954245'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/graphicsh-without-turbo-cc.html' title='graphics.h without Turbo C/C++'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4754969599447033629.post-7024811372848331559</id><published>2008-03-22T22:56:00.001+05:30</published><updated>2008-03-22T22:56:45.818+05:30</updated><title type='text'>Coming soon :)</title><content type='html'>More coming soon .....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4754969599447033629-7024811372848331559?l=amodjaltade.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://amodjaltade.blogspot.com/feeds/7024811372848331559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/coming-soon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/7024811372848331559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4754969599447033629/posts/default/7024811372848331559'/><link rel='alternate' type='text/html' href='http://amodjaltade.blogspot.com/2008/03/coming-soon.html' title='Coming soon :)'/><author><name>Amod Jaltade</name><uri>http://www.blogger.com/profile/01018272615061130102</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_Gqf_V5oaOhQ/SmxnziFWGgI/AAAAAAAAAHM/OjzY6j7UqUI/S220/IMG_0169_2.JPG'/></author><thr:total>0</thr:total></entry></feed>
