aesystem
Home
About Us
Trainings
Courses
Placements
Blogs
Services
Products
Menu
Home
About Us
Trainings
Courses
Placements
Blogs
Services
Products
Contact Us
Linux Application Programming and Linux Device Drivers Development
Linux System Programming
Introduction to Linux
Linux Architecture & Components
Linux Filesystem overview
Memory Layout of a C Program
Development Tools & Utilities
Compiler Stages gcc
Building using the Makefile
Binutils to decode the executable file formats – nm, readelf, objdump etc
Exercises
Writing a simple Makefile to compile the program
Examine the symbols in executable
System Calls in Linux
Need for System Calls
Working with Files
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
Exercises
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
Linux Processes
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
Exercises
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
Threads
Need for Threads
Process Vs Thread
Creating thread with pthread APIs
Waiting for thread termination
Creating a detached thread
Cancelling the threads
Exercises
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
Memory Management
Need for memory management
Memory Partitioning – Paging & Segmentation
Virtual Addressing & its need
Page Tables
Memory Manipulating Calls
Exercises
Programs on Memory Manipulating Calls
Program increments the process data space
Libraries
Need for Libraries
Types of Libraries – Static & Shared(dynamic)
Examples on using the shared & static libraries
Exercises
Creating the Static library & using the same in the applicaton
Creating the shared library & dyamically linking with the same
Managing the signals
Need for Signals
Overview of Signals in Linux
Handling the signal
Blocking/Masking the signals with signal sets
Exercises
Registering a signal handler
Restoring the signal disposition
signal to notify the parent process
Examine the signal mask for the proces
Blocking the signal
Inter-Process Communication Mechanisms
Need for IPCs
Using Pipes & FIFOs
Message Queues
Shared Memory & Semaphores
Exercises
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
Thread Synchronization
Need for Synchronization
Using Mutex
Using Semaphores
Reader / Writer Lock
Conditional Variables
Exercises
Example for mutex usage
Example for semaphore usage
Case study on Synchronizing threads
Example on reader/writer Lock
Linux Network Programming
Introduction to Networking
TCP/IP Protocol Layers
Types of Networks – LAN, WAN
TCP/IP Stack Internals
Internet Addressing concepts
IP Address Vs H/W Address
Unicast, Broadcast & Multicast addresses
Subnettting/Supernetting
Internet Protocol
IP Concepts, Routing concepts
UDP & TCP
Socket Programming
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
Exercises
Creating local Client & Server
Creating networked Client & Server
Creating a connectionless sockets
Implement concurrent & Iterative servers
WireShark Network Packet Analyzer Tool Exercises
Using Wireshark to examine the packets
Linux kernel Programming and Character Device Driver Programming
Kernel Classifications
Monolithic Kernels
Micro Kernels
The User space & Kernel space
Module Programming
The HelloWorld Module
Module Stacking
‘Module Parameters
The Virtual Filesystem
Common Filesystem Interface
Filesystem Abstraction Layer
VFS Objects and Their Data Structures
super block
inode block
data block
boot block
Memory Management
Kernel High level MMU
Kernel Low level MMU
Kernel Memory Allocators
slab allocator
page allocator
fragment allocator
pool allocator
Kernel Synchronization
Critical Sections, Race Conditions
Concurrency and its Sources
Mechanisms for Kernel Synchronization
Semaphores
Reader/ Writer Semaphores
Spinlocks
Reader/ Writer Spinlocks
Atomic Operations
Memory Allocation in the kernel Kernel Timers and Time Management
HZ & Jiffies, Delays
Kernel Timers
Porc FS
virtual file systems.
information about processes
communication between kernel space and user space
Sys FS
Enumeration of the devices and busses attached to the system
file system hierarchy
Character Drivers and Operations
Registering a System Call
System Call Handler
Service Routines
Character Drivers
Synchronous Driver model
Device Numbers
Major and Minor Numbers
Registering and Unregistering
Static and Dynamic allocations
Important Structures
File Operations
File
Inode
Character Devices
Cdev structure
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 Hardware
Accessing I/O Ports
Accessing I/O Memory
Advance Linux Device Drivers
USB Driver
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.
Block Device Driver
Fundamentals of Block Device Driver
Block drivers Definitions.
Block drivers Registration.
Block device operations.
Linux Block I/O Layer
How can I help you?