I can understand that you are doing this only for test and study purpose, rather than use this in real scenario. It is safe to sleep after you get a spinlock, although it is not reasonable to use spinlock if you need to sleep. Let's say you have two threads:a and b. a is running on CPU 0 and b is running on CPU 1, and both of them are requiring spinlock x, suppose thread a gets x first, and it sleeps for 5 seconds, then the thread b which is running on CPU 1 have to wait for at least 5 seconds for the spinlock x, which is meaningless waiting. The task schedule on both CPU 0 and 1 are normal, CPU 0 can schedule because thread a falls to sleep although it has spinlock; CPU 1 can schedule on my ARM platform also because thread b will enable schedule on CPU 1 before polling spinlock. Hi,
I wanted to verify/clarify if using schedule_timeout after acquiring a spinlock is safe?. So basically you have a situation where you are working on a critical code and you acquire a spin lock and you end up using a schedule_timeout after say setting the current task to Interruptible state 'cause you are waiting for some user space code to fill in some buffer from which you want to read.
So my doubt is simple, is it safe to acquire a spinlock and use schedule_timeout. I assume the task is put in the run queue and will "ALWAYS" be scheduled back after the specified delay in schedule_timeout. Regards, Santosh _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies |
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies