Git Talk

It is no surprise that Git took the world of source control management by storm since its inception in 2005. For people wondering about what I am talking here, Let me give some context first. Generally, Any reasonably sized source code project needs some sort of ‘change tracking software’ about all the changes/modifications made to it by its authors/programmers. This is where the concept of Source Control Management(SCM) comes in to picture. The idea is nothing new at all. Git is just one such SCM but with some radical ideas built from the grounds up. Ofcourse, These ideas sets it apart from its predecessors.
Read on →

Where is Home Directory? Where is My Computer?

Post LogoI heard from many people who regularly use Linux/Mac naturally hating Windows and I find a similar response from first time Linux/Mac OS X users. Even though there are many other factors to this love/hate relationship, Here I would like to consider the most basic use case i.e., accessing files/folders in your new OS. For a newcomer to Windows the only gateway into their computer is My Computer (or the renamed “This PC”) which unfortunately does not quite resemble his/her Home Directory in the Linux/OS X Finder. This happens the other side as well. A newcomer to Linux/Mac will be surprised to see the Home Directory for the first time and finds his My Computer missing. But trust me the dissimilarities here are skin deep.
Read on →

How do Linux kernel’s build system work?

Linux kernel is one of the worlds largest open source project. So to play with it, We would be first able to customize and then build(compile) it  to our will and wish. Because of its sheer volume, The end developers or kernel hackers mandates an automated tool to ease the customization and build process. This is where Linux kernel build system comes into picture and our today’s topic of discussion. The following video will kick start this article by giving excellent perspective with mind boggling numbers about Linux kernel.

Read on →

How to configure QEMU and Linaro toolchain for ARM development?

qemu-logo-thumbFundamental to any kind of development are compilers and the underlying platform. Compiler  transforms our code into underlying platform and the platform itself is to run the compiled executables. This is also true in case of embedded development. But unlike normal desktop environment we cannot develop a program on an embedded development device because of various limitations of the device. Instead, What we do is write the program on our desktop(X86) and cross compile it for the required target platform. This effectively accomplishes the job of first component, But to run the cross compiled binary we do need the second component, that is, the target platform itself. Earlier, embedded developers had no choice other than using the real developement devices to test their cross compiled binaries. But with the help of QEMU, now we can emulate, most of todays popular target platforms.  The main theme of this post is to set up the above said components for ARM developement.   

Read on →

How to redirect Linux(guest) kernel log to windows(host) in virtualbox via serial port?

This article is mainly helpful for kernel developers who would like to access Linux (guest) kernel logs using some tool from windows(host) PC. This is one way to see what is happening to the guest OS when the kernel is booting. Usually this information is passed to and from guest and host via a RS232 serial port. This is most commonly seen in linux embedded systems. So, In real world, guest could be an embedded platform like Beaglebone or Raspberry Pi.
Read on →

How Linked Lists Are Implemented in Linux Kernel?

Linux kernel has one of the finest and unique implementations of linked list data structure. Today I am going to explain the basics of how a linked list is defined in the linux kernel and two of its most important functions list_add & list_add_tail. The moto of this article is to demonstrate how to create stacks and queues with above functions and a demonstration of their practical use.

  1. Basic definition of the linked list node
  2. Initialization of the node
  3. Construction of Stacks & Queues using list_add & list_add_tail
  4. Practical usage scenario
Linux Kernel Linked List
Linux Kernel Linked List
Traditional vs Linux Kernel Linked List
Traditional vs Linux Kernel Linked List
Initializing and using list_add function
initializing and using list_add function
usage of list_add and list_add_tail functions
usage of list_add and list_add_tail functions
Linked list as Stack & Queue
Linked list as Stack & Queue

 

Usage of kernel linked list
Usage of kernel linked list
Usage of kernel linked list
Usage of kernel linked list