anchao commented on PR #15705:
URL: https://github.com/apache/nuttx/pull/15705#issuecomment-2623693610

   > > > so, you don't read my reply carefully, let me copy the example again:
   > > > 
   > > > 1. thread0 on CPU0 hold a spinlock without hold sched lock
   > > > 2. thread1 on CPU1 wake up thread2
   > > > 3. OS decide suspend thread0 and resume thread2 on CPU0
   > > > 4. thread1 on CPU1 want to hold the spinlock hold by thread0
   > > > 
   > > > but thread1 is ver hard to know when it can finish the busy wait loop 
since thread0 is already in the suspend state. so, it's VERY VERY dangerous to 
schedule a thread which hold a spinlock.
   > > > and the issue @patacongo mention before: [#9531 
(comment)](https://github.com/apache/nuttx/issues/9531#issue-1755306015) spin 
lock can't use standalone without sched lock.
   > > 
   > > 
   > > You should use **spin_lock_nopreempt()** instead of **spin_lock()** I 
have answered this question many times, I will not answer this question 
again!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! You should use 
**spin_lock_nopreempt()** instead of **spin_lock()** I have answered this 
question many times, I will not answer this question 
again!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   > 
   > Ok, could you give me an example, when can you use spin_lock API? the 
interrupt can be happened without your control, which mean spin_lock CAN'T BE 
CALLED in any thread context.
   
   if your code does not enable the interrupt controller and schedler at boot 
time, why does spin_lock require sched_lock and irq_save?
   
   bringup phase and ISR and scheduler is not enabled


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to