Linux Kernel Programming
Total Pageviews
Tuesday, December 25, 2012
Steps to add Linux Character Device Driver
Tuesday, December 18, 2012
The Apache Hadoop software library is a framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models. It is designed to scale up from single servers to thousands of machines, each offering local computation and storage. Rather than rely on hardware to deliver high-avaiability, the library itself is designed to detect and handle failures at the application layer, so delivering a highly-availabile service on top of a cluster of computers, each of which may be prone to failures.
Plagiarism Checker for Free - http://plagiarisma.net
Saturday, April 7, 2012
mmap to implement copy command
Thursday, April 5, 2012
Description of fget_light and fput_light
Hi friends
Description of fget_light, which is currently incorrect
about needing a prior refcnt (judging by the way it is actually used).
/*
- * Lightweight file lookup - no refcnt increment if fd table isn't shared.
- * You can use this only if it is guranteed that the current task already
- * holds a refcnt to that file. That check has to be done at fget() only
- * and a flag is returned to be passed to the corresponding fput_light().
- * There must not be a cloning between an fget_light/fput_light pair.
+ * Lightweight file lookup - no refcnt increment if fd table isn't shared.
+ *
+ * You can use this instead of fget if you satisfy all of the following
+ * conditions:
+ * 1) You must call fput_light before exiting the syscall and returning control
+ * to userspace (i.e. you cannot remember the returned struct file * after
+ * returning to userspace).
+ * 2) You must not call filp_close on the returned struct file * in between
+ * calls to fget_light and fput_light.
+ * 3) You must not clone the current task in between the calls to fget_light
+ * and fput_light.
+ *
+ * The fput_needed flag returned by fget_light should be passed to the
+ * corresponding fput_light.
Friday, March 30, 2012
Test Cases for read system call
Friday, March 23, 2012
Adding System Call
Hi
These are the steps to add system call to the linux kernel 2.6.39.4
Download source code http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.4.tar.bz2
Open file linux-2.6.39/arch/x86/kernel/syscall_table_32.S
add line
.long sys_add2
Open linux-2.6.39/
arch/x86/include/asm/unistd_32.h
After Line
#define __NR_syncfs 344
Add line
#define __NR_add2 345
and also change NR_syscalls to
#define NR_syscalls 346
Now edit linux-2.6.39/
arch/x86/include/asm/unistd_64.h
Find Lines
#define __NR_syncfs 306
__SYSCALL(__NR_syncfs, sys_syncfs)
Add Line
#define __NR_add2 307
__SYSCALL(__NR_add2,sys_add2)
open file
linux-2.6.39/include/linux/syscalls.hbefore #endif add
asmlinkage
long
sys_add2(
int
i,
int
j);
Now create add2.c
linux-2.6.39/kernel/add2.c
#include
asmlinkage long sys_add2(int i,int j)
{
return i+j;
}
Now open the Makefile in this folder(l
inux-2.6.39/kernel/Makefile) and find out
obj-y += groups.o
Add a new line before this line :
obj-y += add2.o
Now its Time to compile kernel
Go to linux-2.6.39/
$make
Start compiling to kernel modules:
$make modules
Install kernel modules
su -
$make modules_install
It is time to install kernel itself
$make install
$update-grub