Re: Queries on bottom halves
Hi Abhinav, On 09/02/2018 11:28 PM, Abhinav Misra wrote: Hi Larry, Based on your answers below are my further queries. 1. *Does softirq and tasklet will always runs in ksoftirqd thread context ?* As it is mentioned in the LKD (by robert love Pg-138) that there are multiple places where pending softirq's are checked. Out of that one is in return from hardware interrupt code path i.e in do_irq function. If that is the case then it will be running in the irq context with just ~~ --->> Sorry, does "it" mean softirq or somethine else?? do_irq just wake up softirq thread. That does not mean softirq runs in irq context. the interrupts enabled. Now I know LKD is old and based on linux kernel 2.6. *Is that above scenario is changed in new version of kernel ?* Even I tried one example mentioned in LDD by Jerry cooperstein and printing the pid of current task (current->pid) in the tasklet which is getting scheduled by the shared interrupt from n/w card. Every time it is printing the pid of the ksoftirqd thread. So does that mean, now in latest kernel, softirq and tasklet will always run in context of ksoftirqd thread ? Yes. 2. If we can sleep or use blocking calls in softirq's and tasklets then *what is the difference between softirq/tasklet and workqueue's ? That's another question, workqueue and tasklet is two machnisms provided for async operations. Generally I think workqueue is more powerful and flexible. You can get more info from kernel docs. *Because in old kernel, the main difference between softirq/tasklet and workqueue's (Wq's) is that Wq's runs in process context and hence sleep is allowed while the same is not the case with other counterparts. I refered to kernel 2.6 version, softirq and tasklet are still almost the same machnism with the latest version. Here is an explanation https://www.safaribooksonline.com/library/view/understanding-the-linux/0596005652/ch04s07.html But if in new kernel this implementation is changed then why we need so many options to defer the work as all of them are basically getting executed in almost the same way.*In that case code running softirq, tasklet, workqueue and kernel thread are all same ?* If this is true then why we just remove all these these option and keep one or two alternative. Emmm... tasklet and workqueue have something in common, but I think tasklet can satisfy simple scenarios, while workqueue, I think is more powerfull and flexible, does well in more complicated scenarios. Maybe when you make clear what's their difference, you'll understand more. BR, Larry ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: Queries on bottom halves
Hello Abhinav, On 09/01/2018 04:05 PM, Abhinav Misra wrote: Hi, Sorry for the delay in the reply. I think the question is not correctly framed. Will try to do it again. 1. Which stack does the tasklet, softriq and workqueue use for their execution ? Softirq actually is a group of N kernel threads(N equals to your cpu number), each thread is restricted to run on its corresponding cpu. A tasklet is a call-back function that runs on softirq thread. In the latest kernel version, a tasklet uses softirq thread stack. A workqueue is almost the same, a work is almost the same as the a tasklet, it runs on a worker thread and shares the stack with worker thread. 2. Why can't we sleep in tasklet and softriq ? Yes, you can. Tasklet runs on softirq thread, it has its own task_struct, you can sleep or call schedule in your tasklet. When you sleep in your tasklet, the softirq thread that the tasklet is running on will sleep, the sequential tasklet could not be executed until next schedule. BR, Larry ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: What will happen if I kill a process which is waiting for the retuan ioctl() syscall?
Hello Douglas, On 03/13/2018 07:56 PM, Douglas Su wrote: If I have these: 1. I have implemented a simple ioctl() system call which just delay a period and return. 2. Call this ioctl() from a userspace process, of course, this process will be blocked until ioctl() return. 3. Before ioctl() return, use `kill -9 ` command terminates the process. Question: 1. Can we instantly kill this process? Of course, you can. But whether your behavior will affect your process depends on your implementation. 2. If we can instantly kill this process, does ioctl() still keep delay after killing? It depends on your implementation of your ioctl. If your ioctl has some kind of mechanism to check whether there is a signal received, you can let your ioctl return. 3. If ioctl() still running even after we terminate this process, where does the return value ioctl() will return to? That sounds insane. 4. How to keep the device's state consistent when we kill a process when it is invoking a system call? Sorry, I did not get your point. Thanks, Larry Best regards. Douglas ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: Linux Kernel contains only C code?
Hi Sekar, Hi all, ... 1. May i know, other than C language, is there any other programming language is/are used inside Linux Kernel?!?! is there any c++, Perl, python programs are used for peculiar tasks inside Linux Kernel?!?! I have never seen c++, perl or python code in kernel source tree. Imagine that, if kernel relies on perl, python or other 3rd-party code, will it cause nested or mutual dependency issues? 3rd-party code bugs may also cause problems that make the kernel unstable. 2. I believe some assembly language and shell scripting also used.. how can I check them? Can you point me which part of the source code contains the assembly and shell scripting Sorry, I do not know what do you mean by "check them". Assembly code are mostly put within the arch directory. They are used to interact with your various arch CPUs. In addition to arch directory, there are also some embedded assembly code that could be found in C source code. Shell scripts are always within tools and script directory. By the way pure assembly codes files ends with ".S" extension, and shell scriptes with ".sh" extension. You could find them by find ${kernel_source_dir} -name "*.S" and find ${kernel_source_dir} -name "*.sh" Regards Larry ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: wiki & email upgrades
On 01/02/2018 02:44 AM, Rik van Riel wrote: Hello, As you may have noticed (if you weren't too busy celebrating the holidays), I have upgraded kernelnewbies.org to a new version of the wiki, and am also upgrading the email system. This email is both an announcement, and a test of the new email configuration. If you notice lingering problems, please contact me via email (if it works) or Facebook Messenger. kind regards, Rik ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies It looks great, and more fashion than old version. Regards, Larry ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: ReviewRequest of a booklet on System Concepts
Hi Rishi, Really great docs on glibc !!! I'm willing to read them all. Thanks, Larry Chen On 12/26/2017 12:50 PM, Rishi Agrawal wrote: Hi All, I have written this booklet http://sys.readthedocs.io/en/latest/ explaining some concepts related to "glibc and system calls ". This will be useful for the newbies who are learning Linux System Programming. I request the members of the group to kindly review it once and let me know if anything is incorrect or can be written and explained in a better way. If someone wants to add more contents he/she can surely do by raising a "pull request" in the github repo. My apologies if this is not the right group for it as I do not know of any other group with this level of expertise. -- Regards, Rishi Agrawal A simple act of caring creates an endless ripple. Be the change that you wish to see in the world. Be thoroughly used up when you die, for the harder you work, the more you live. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies