aesystem

Linux Application Programming and Linux Device Drivers Development

Linux System Programming

Introduction to Linux

  • Compiler Stages gcc
  • Building using the Makefile
  • Binutils to decode the executable file formats – nm, readelf, objdump etc
  • Writing a simple Makefile to compile the program
  •  Examine the symbols in executable
  •  Need for System Calls
  •  Overview of files in linux
  • Linux File structures
  • File related functions
  • Relationship Between File Descriptors and Open Files
  •  Seeking a file and Changing the File Offset: lseek()
  •  Fd table and Inode strcutures
  •  Duplicating File Descriptors
  • Opening a file & performing a read/write operations
  • Opening a file in different modes
  •  Program to copy a file
  • Program to Duplicating File Descriptors in different ways
  •  Program to repositioning the File Offset
  •  Need for Process
  •  Process ID and Parent Process ID
  • Memory Layout of a Process
  •  Creating & Exec’ing the process
  •  Waiting for the process termination
  •  Zombie & Orphan process
  •  Creating a Process
  • Creating multiple processes
  •  Distinguishing between the child & parent processes
  •  Waiting & getting the child process status
    Creating a zombie & Orphan processes
  •  Program to parent process to wait for child process
  • Need for Threads
  • Process Vs Thread
  • Creating thread with pthread APIs
  • Waiting for thread termination
  • Creating a detached thread
  •  Cancelling the threads
  •  Creating a thread
  •  Passing arguments to the thread
  •  Waiting for threads & examining the return value
  •  Modifying the thread attributes to create the detached thread
  •  Cancelling the threads
  • Need for memory management
  • Memory Partitioning – Paging & Segmentation
  •  Virtual Addressing & its need
  • Page Tables
  • Memory Manipulating Calls
  •  Programs on Memory Manipulating Calls
  • Program increments the process data space
  • Need for Libraries
  •  Types of Libraries – Static & Shared(dynamic)
  •  Examples on using the shared & static libraries
  •  Creating the Static library & using the same in the applicaton
  •  Creating the shared library & dyamically linking with the same
  •  Need for Signals
  • Overview of Signals in Linux
  • Handling the signal
  • Blocking/Masking the signals with signal sets
  • Registering a signal handler
  • Restoring the signal disposition
  •  signal to notify the parent process
  • Examine the signal mask for the proces
  •  Blocking the signal
  • Need for IPCs
  • Using Pipes & FIFOs
  •  Message Queues
  • Shared Memory & Semaphores
  •  Pipes to communicate amount the related processes
  •  Using popen function for the pipes
  • Pipe Communication among unrelated processes
  •  Using Message Queues
  •  Communication using Shared Memory
  •  Synchronizing the access to Shared Memory
  •  Need for Synchronization
  • Using Mutex
  • Using Semaphores
  • Reader / Writer Lock
  •  Conditional Variables
  •  Example for mutex usage
  •  Example for semaphore usage
  •  Case study on Synchronizing threads
  •  Example on reader/writer Lock

Linux Network Programming

  • TCP/IP Protocol Layers
  • Types of Networks – LAN, WAN
  • Internet Addressing concepts
  • IP Address Vs H/W Address
  • Unicast, Broadcast & Multicast addresses
  • Subnettting/Supernetting
  •  Internet Protocol
  •  IP Concepts, Routing concepts
  • UDP & TCP
  • Introduction to Sockets Socket APIsClient & Server
  • Connectionless &
  • Connection oriend Sockects
  • Creating UDP/TCP server/Client
  • Iteravite & Concurrent servers
  •  Iterative Connectionless & Conection oriented servers
  • Concurrent server implementation using multiple processes
  • Creating local Client & Server
  •  Creating networked Client & Server
  •  Creating a connectionless sockets
  •  Implement concurrent & Iterative servers
  • Using Wireshark to examine the packets

Linux kernel Programming and Character Device Driver Programming

  • Monolithic Kernels
  • Micro Kernels
  • The User space & Kernel space
  •  The HelloWorld Module
  • Module Stacking
    ‘Module Parameters
  •  Common Filesystem Interface
  • Filesystem Abstraction Layer
  • VFS Objects and Their Data Structures
      super block
      inode block
      data block
      boot block
  • Kernel High level MMU
  • Kernel Low level MMU
  • Kernel Memory Allocators
      slab allocator
      page allocator
      fragment allocator
      pool allocator
  • Critical Sections, Race Conditions
  • Concurrency and its Sources
  • Semaphores
  • Reader/ Writer Semaphores
  • Spinlocks
  • Reader/ Writer Spinlocks
  • Atomic Operations
  • virtual file systems.
  • information about processes
  • communication between kernel space and user space
  • Enumeration of the devices and busses attached to the system
    file system hierarchy
  • Registering a System Call
  • System Call Handler
  • Service Routines
  • Character Drivers
  • Synchronous Driver model
  • Major and Minor Numbers
  • Registering and Unregistering
  • Static and Dynamic allocations
  • Important Structures
  •  File
  • Inode
  • Character Devices
  •  Adding, Allocating, Initializing and Deleting
  • User Space Applications and
  • Device Driver mapping
  • Device file operations
  • Access methods within the driver, open, read, write and close
  • Advanced Character Drivers
  • Ioctl implementations
  • Wait queues and pollings
  •  Accessing I/O Ports
  • Accessing I/O Memory

Advance Linux Device Drivers

  • USB Architecture & Protocol
  • Types of Descriptors
  • USB structure creation
  • USB subsystems
  • USB Driver Layered Architecture
  • USB Device Drivers
  • Understanding the USB framework.
  • Programming the Control Endpoint Zero.
  • Fundamentals of Block Device Driver
  • Block drivers Definitions.
  • Block drivers Registration.
  • Block device operations.
  • Linux Block I/O Layer
How can I help you?