What is the in-line assembly code for kernel preemption and disable interrupts?

227 Views Asked by At

I know that in kernel I can call get_cpu() to disable kernel preemption and local_irq_save(flags) to disable interrupt. I'm curious how can I still achieve the same goal without calling these functions. I have three questions,

  1. I found that cli instruction is the one responsible for disabling interrupts. Therefore, I was wondering if the following in-line assembly,

    asm volatile("cli": : :"memory");
    

is enough to disable interrupts. If It works, how can I check if it actually disables interrupts?

  1. Is there any inline assembly instruction that I can use to disable kernel preemption?

  2. I know it is not possible to disable interrupts from the userspace. I just wondering if somehow someone manages to run that cli instruction from the userspace. Will it still be able to disable the interrupts? If the answer is no then why?

0

There are 0 best solutions below