Linux is used in almost all system domains (Networking/Telecom) and also most of the RTOS are very similar to Linux.
So learning of Linux programming will help you in understanding and work easily in system domain as well as in embedded systems.
- The GNU C Library and System Calls:
- Program Arguments and Environment
- Building Libraries
- Time Functions
- Process Management
- Memory Operations
- Debugging
- Basic File Operations
- Communicating with Pipes
- Managing Signals
- Programming with Threads
- Advanced File Operations
- Interprocess Communication
Linux System programming
- Program, Process, Process IDs
- Processs Priorities,Process States, CPU Scheduling
- Process Management API ? fork, vfork, exec
- Zombie and Orphan Process
- Pthread Programming and Thread Attributes
- Process Synchronization Techniques
- Semaphores, Mutex, Spinlock, Memory Barriers
- Interprocess Communication Techniques
- Pipe, FIFO, Signals, Shared Memory
- Timer API ? Jiffies, kernel Timmers, wait queues, sleeps
- Interrupt and Exception API ? Tasklets, Workqueues
- Kernel Debugging ? kgdb, printk, jprobs, kprobs
Linux Device Drivers Programming
- Introduction to Device Drivers
- Device Number, Major and Minor Numbers
- Inbuild and Mudular Drivers
- User Space and Kernel Space Communication
- Dev directory and device files
- Character, Block and Network Driver
- Advanced Driver API ? fcntl, ioctl
- Unified Device Model (udev)
- Proc File System, sys file system
- usbfs file system
- Character Device Driver Programming
- Block Device Driver Programming
- Serial Port Driver Programming
- Parallel Port Driver Programming
- USB Device Driver Programming
- Network (Ethernet) Driver Programming
- Flash Drive Driver Programming
Linux Network Programming
- Networking Architecture in Linux
- TCP/IP defacto model and layer in kernel
- Client ? Server Programming API
- TCP, UDP, RAW, UNIX, FTP,TFTP
- VOIP Protocol Programming
- Arithmatic Server, Concurrent Server
- Broadcast Server Programming
- Wireless Architecture and Programming
ARM 9/ARM11? Linux Programming
- ARM Architecture and ARM Processor family
- ARM Microcontroller ICs in Market
- ARM Development Boards and features
- FriendlyARM Development Boards
- Mini2440, Mini6410, Mini210 Development Boards
- Raspberry Pi Development Board
- Beagle Bone Development Board
- Bootloader Configuration and Compilation for ARM
- Kernel Configuration and Compilation for ARM
- File System Configuration and Compilation for ARM
- Porting Linux / Android OS on Development Boards
- DNW Tools, USB Push, Hyper Terminal Tool