On Wed, Oct 7, 2009 at 2:20 PM, er krishna <erkris...@gmail.com> wrote:

>
>
> On Wed, Oct 7, 2009 at 1:57 PM, er krishna <erkris...@gmail.com> wrote:
>
>>
>>
>> On Wed, Oct 7, 2009 at 12:45 PM, govind raj nayak <
>> govin...@rediffmail.com> wrote:
>>
>>> Yes, spinlock would automatically disable kernel preemption.
>>
>>
>> >>>>>>I don't think so, otherwise what is the use of spin_lock_irq_save
>> api, if spin_lock api does it  ?.  I mean if spin_lock api >>>>>>is
>> disabling the kernel preemption, then can a newly occured interrupt will
>> preempt currently executing process which >>>>>>has taken a spin lock by
>> spin_lock() api. Just confirm my understanding.
>>
>> >>>>>>>I don't think all the spinlock api will disable kernel preemption.
>> We must check in kernel code, that on which API >>>>>>>preemption is disable
>> or if anybody knows, please mention those ones.
>>
>>
>>
>>> I was just giving theeoritical overview. As far as I know not all
>>> synchronization constructs would disable the kernel preemption
>>
>>
>>
>> >>>>>>Yes, agreed.
>> >>>>>>Can we say if preemption is disable but interrupts are not, then
>> interrupt handler won't be able to preempt the currently executing process.
>>
>> >>>>>> I am just asking, if we have disable the interrupts on local
>> processor by some api, and suddenly if higher priority >>>>>> process/
>> interrupt comes (the first process  which is currently executing has
>> acquired a spin lock by >>>>>>spin_lock_irq_save() api).  I just want to
>> know weather the higher priority process/interrupt will preempt the lower
>> priority process or it will spin.
>>
>
>
> Sorry for this question, we can't apply spin locks in process context and
> interrupt won't be able to preempt as it is disabled.
>



Again sorry, we need to take care weather the process can sleep or not, then
only we can decide .

Just concentrate on above  first query which is as follows :

I don't think so, otherwise what is the use of spin_lock_irq_save api, if
spin_lock api does it  ?.  I mean if spin_lock api is disabling the kernel
preemption, then can a newly occured interrupt will preempt currently
executing process which has taken a spin lock by spin_lock() api. Just
confirm my understanding.

I don't think all the spinlock api will disable kernel preemption. We must
check in kernel code, that on which API preemption is disable or if anybody
knows, please mention those ones.




>
>
>
>
>
>> Just clear the confusion.
>>
>>
>> Regards,
>> Krishna
>>
>>
>>> automatically (for instance when acquiring a big kernel lock). In
>>> addition you could use preempt_enable() and preempt_disable() to explicitly
>>> enable or disable kernel preemption. Thanks.
>>>
>>> -Govindraj
>>>
>>> On Wed, 07 Oct 2009 11:15:06 +0530 wrote
>>> >Rajat San,Just asking (since i didn't see spinlock implementation in
>>> kernel src),On Tue, Oct 6, 2009 at 5:52 PM, Rajat Jain wrote:
>>>
>>> Hello Govind,
>>>
>>> > What happens when you go for spin locks without
>>> > disabling kernel preemption? Suppose you acquire
>>> > a spin lock in a system call handler (a service
>>> > routine on behalf of a user mode process) with
>>> > kernel preemption enabled.
>>>
>>> This is not possible. Spin lock APIs disable kernel preemption
>>> automatically.Spin lock APIs disables kernel preemption in all its api or
>>> some specific apis only. Please confirm and elaborate.
>>>
>>>
>>> Thanks,
>>>
>>> RajatBest regards,Krishna
>>>
>>>
>>> <http://sigads.rediff.com/RealMedia/ads/click_nx.ads/www.rediffmail.com/signatureline....@middle?>
>>>
>>
>>
>

Reply via email to