Will spending time on learning C and Linux kernel programming be a waste if you are not going to pursue it as your career ? I have some 6-7 months in hand to prepare for big tech interviews and has to start learning everything like data structures from ground up (My engineering education was a disaster) .I view kernel programmers as my super heros ;) . I really want to do kernel programming but only as a hobby. Will giving some time for it do any good for me in tech Interviews ??
This course provides an introduction to Kernel programming for the Linux operating system, and the development of Linux kernel drivers for Embedded devices. The Yocto build system is introduced, which students use to build their own custom Embedded Linux system through programming assignments.
In this module, you will learn about the different types of Linux Kernel drivers and the kernel support for character device drivers. You will learn about fundamental driver data structures and functions for interacting with user space. You will understand the basics of Kernel debugging and how this differs from application debugging. You will implement a unit-tested circular buffer which will be used in future assignments. Finally, you will build a Yocto embedded device image with support for an out of tree kernel module.
In this module, you will learn the basics of concurrency in the Linux kernel, and how to use semaphore and mutex in your device driver to design for concurrent access. You will learn the difference between atomic and non atomic context and strategies for locking in each context. You will modify your socket application to interact with a custom character device based on your tested circular buffer implementation using the concurrency concepts discussed in the module.
In this module, you will learn the purpose and use of the ioctl command for Linux drivers and how the ioctl command is implemented in a driver. You will learn the basics of sleeping and waking up in the Linux kernel and how to handle blocking and non-blocking IO. You will modify your custom Linux kernel driver and Linux application to include ioctl support.
As it is customary to write a hello world example while learning programming, I am not going to break that rule. Type following code into a file called hello.c inside /test/hello_first directory. You can use vim or nano to type the following code.
In this program, students will approach problems and situations using the C programming language and the Linux kernel interface. Our students will expand their knowledge and application of the C programming language and dig into operating systems. They will also work with data structures and algorithms while uncovering the mechanisms behind blockchain technology.
760c119bf3