At 09:32 28/04/2001, Anton Altaparmakov wrote:
>At 01:42 28/04/2001, Steffen Persvold wrote:
>>I have a question regarding kernel threads : Are kernel threads treated 
>>equally in terms of scheduling as normal userlevel processes ??
>
>I'm sure someone will correct me if I am wrong but I would think that 
>kernel threads are treated the same as the kernel, i.e. they are not 
>pre-emptied unless you call schedule yourself or you sleep.
>
>>kernel thread gets scheduled and tries to get the same lock it will 
>>deadlock because the userlevel process never gets back control and 
>>releases the lock.
>
>It never gets pre-emptied according to the above so it would spin for 
>ever. You would need a SMP system which would be running the user space 
>code on a second CPU to unlock again. (And if your kernel thread is 
>holding any other locks which the user mode thread will take along it's 
>kernel code path you will deadlock, too.)
>
>If my suggestion above is correct then you can fix this by doing:
>
>while (!spin_trylock())
>         schedule();

Obviously dropping any other locks you hold onto before the schedule() and 
reacquiring them afterwards... Or you will probably deadlock anyway.

Anton


>Which will forcefully schedule to allow your processes to run and you know 
>that as soon as you drop out of the loop you are holding the lock. If you 
>want you could also add in a counter a display a warning or something if 
>you don't manage to acquire a lock after several tries, perhaps just for 
>debugging purposes.
>
>Best regards,
>
>         Anton
>
>
>--
>Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
>Linux NTFS Maintainer / WWW: http://sourceforge.net/projects/linux-ntfs/
>ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/
>
>-
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to [EMAIL PROTECTED]
>More majordomo info at  http://vger.kernel.org/majordomo-info.html
>Please read the FAQ at  http://www.tux.org/lkml/

-- 
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Linux NTFS Maintainer / WWW: http://sourceforge.net/projects/linux-ntfs/
ICQ: 8561279 / WWW: http://www-stu.christs.cam.ac.uk/~aia21/

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to