Re: local_irq_save vs raw_local_irq_save

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
I have gone through the code.

Please correct / provide your insights on my understanding.
1. There is no difference between local_irq_save and raw_local_irq_save with ARM architecture.  ?


2. As per the below code,
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 13 static inline unsigned long arch_local_irq_save(void)
 14 {
 15         unsigned long flags;
 16
 17         asm volatile(
 18                 "       mrs     %0, cpsr        @ arch_local_irq_save\n"
 19                 "       cpsid   i"
 20                 : "=r" (flags) : : "memory", "cc");
 21         return flags;
 22 }
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Here, Flags contain the result of PRIMASK register. before interrupts are disabled ??

References:
About CPSID instruction :
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0662b/BABHBAAB.html
CPSID i ; Disable all interrupts except NMI (set PRIMASK.PM)
Registers overview :
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0662b/CHDBIBGJ.html
About PRIMASK register:
http://infocenter.arm.com/help/topic/com.arm.doc.dui0662b/CHDBIBGJ.html#BABBBGEA
ARM GCC inline assembly:
http://www.ethernut.de/en/documents/arm-inline-asm.html

Please provide your insights.

Thanks !
Kavi


On Thu, Jul 4, 2013 at 4:38 PM, anish singh <anish198519851985@xxxxxxxxx> wrote:
On Thu, Jul 4, 2013 at 3:19 PM, Raj Ravi <mekaviraj@xxxxxxxxx> wrote:
> Thanks Anish.
>
> As for  local_irq_save  and raw_local_irq_save, it seems
> local_irq_save - called at many different places while raw_local_irq_save is
> called in fewer places.
>
>                              local_irq_save - does not disable Hardware
> interrupts.
>     Whereas,raw_local_irq_save - does DISABLE hardware interrupts.
>
> As per code, raw_local_irq_save is related with timer interrupts.
> Please provide your insights on this.
http://lxr.free-electrons.com/source/include/linux/irqflags.h#L61
read this please.
>
> Also, in local_irq_save - how exactly disabling interrupts is achieved ( in
> spite of " NOT DISABLING " hardware interrupts) ?
>
>
>
>
>
> On Thu, Jul 4, 2013 at 2:45 PM, anish singh <anish198519851985@xxxxxxxxx>
> wrote:
>>
>> On Thu, Jul 4, 2013 at 1:55 PM, Raj Ravi <mekaviraj@xxxxxxxxx> wrote:
>> > Hi,
>> >
>> > Please let me know the difference between
>> > local_irq_save  and raw_local_irq_save ?
>>
>> did you check who calls this raw_local_irq_save?
>> similarly who calls local_irq_save?
>> finding out these will answer your questions
>> > At which situation one should use raw_local_irq_save?
>> >
>> >
>> > Also, I read "flags"  is where interrupt state is saved while disabling
>> > interrupts in local cpu (for local_irq_save).
>> >
>> > What EXACTLY this  flags contains?  What do you mean by interrupt state
>> > here?
>>
>> interrupt state meaning: which all interrupts are enabled or disabled at
>> this
>> instant.If a particular interrupt was enabled at that instant then we
>> don't
>> do any thing with our locking mechanism which causes it be be disabled.
>> What we are doing with those flags is nothing but maintaining the state.
>> >
>> > Thanks!
>> > Kavi
>> >
>> > _______________________________________________
>> > Kernelnewbies mailing list
>> > Kernelnewbies@xxxxxxxxxxxxxxxxx
>> > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>> >
>
>

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux