[lkml]   [2001]   [Apr]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: Question regarding kernel threads and userlevel
    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())

    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 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

     \ /
      Last update: 2005-03-22 12:52    [W:0.020 / U:93.580 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site