Hello guys, welcome to the course on Linux kernel programming.
In this course we will going to understand the concept behind Netlink sockets and Netlink socket is
a kernel feature which is provided in the Linux kernel and it is a feature which is used to do IPC between
userspace and kernel space.
So Netlink Sockets is a special feature that has been designed for this purpose.
Many times a userspace application needs to send data to the kernel space for processing.
We accomplish this interaction between userspace and kernel space using netlink sockets.
So now let us discuss the agenda of this course.
In the next lecture video I will tell you how to do this course.
This lecture video will be important for absolute beginners who will be doing kernel programming for
the first time.
We will discuss how to get started with writing Linux kernel modules.
This is also a important lecture video for absolute beginners.
Then we will start with the introduction to Netlink sockets.
We will discuss the theory, architecture and design behind the Netlink sockets and then we will discuss
the Netlink message structures and types.
So if we are looking to facilitate data communication between user space and kernel space using netlink
sockets, then we need to reformat the data into particular structures and types.
We will discuss that.
What are those netlink message structures and types?
In this course, we will learn how userspace application can send data to kernel space application and
vice versa.
That is how kernel space can send data back to the userspace.
We will also discuss a technique that how kernel can send data to multiple userspace applications.
Right.
And finally, we will discuss how kernel space can send data to userspace based on certain events happening
on the kernel side.
All the quotes that we were going to discuss as a part of this course can be found on this GitHub repository.
You are requested to fork this GitHub repository and as we discussed source code in this course, I
will tell you how to browse and navigate the source code.
The prerequisite of this course is that I assume that the audience of this course is good enough with
C programming, and when I say good enough with C programming, it means that you are good enough with
basic data structures such as linked lists, trees, queues.
ET cetera.
If you are still struggling with these basic data structures, then probably it's too early for you
to enroll in this course.
I assume that the audience of this course is not absolute no voice or beginner, so it simply means
that audience is not novice or beginner when it comes to programming in C or C plus plus.
But I assume that the audience of this course may be absolute beginner in terms of writing kernel programming.
Therefore, this course will be a fast paced course and without loss of information, we will cover
the netlink sockets in this course.
I also assume that you have a very basic experience with socket programming.
That is, at least you have written a program to write any type of socket such as UDP or TCP or etcetera.
The assumption of this course is that I assume that the audience of this course may have zero kernel
programming knowledge, so it might be possible that it is the first time for you that you have enrolled
in this course to start up with the kernel programming.
So I will start this course with absolute basics.
Those who are already familiar with some of the kernel programming I will mention right in the lecture
video that.
Those who have some experience with kernel programming can skip what section of the course.
I assume that you have the ability to google write questions and write doubts.
Right.
So I assume that the audience is a little bit mature and the most important assumption to do any online
course is that you must have a zeal to learn and axle.
So best of luck, guys.
See you in the next lecture video.