Re: Question regarding kernel threads and userlevel

From: Anton Altaparmakov (
Date: Sat Apr 28 2001 - 02:40:53 EST

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.


>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> (replace at with @)
>Linux NTFS Maintainer / WWW:
>ICQ: 8561279 / WWW:
>To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>the body of a message to
>More majordomo info at
>Please read the FAQ at

Anton Altaparmakov <aia21 at> (replace at with @)
Linux NTFS Maintainer / WWW:
ICQ: 8561279 / WWW:

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to More majordomo info at Please read the FAQ at

This archive was generated by hypermail 2b29 : Mon Apr 30 2001 - 21:00:20 EST