Re: [PATCH] remove BKL from drivers' release functions

From: Rick Lindsley (ricklind@us.ibm.com)
Date: Sat Dec 01 2001 - 05:06:59 EST


    This is why we have a development tree. Its moving things in the
    right direction which is important. I suspect many drivers will
    want to use semaphores rather than atomic counts however, to ensure
    that an open doesn't complete while a previous release is still
    shutting down hardware

Yes, the only successful application for atomic counts that I've seen
(in this context) is for exclusive open code that looks like

    if (count++) {
        count--;
        return -EBUSY;
    }

in the open routine and

    count--;

in the release. If you want to do anything else as a result of that
count, you'll need additional locking because it could have changed a
nanosecond after it was (safely) incremented or decremented. You can't
count on it remaining that value after you check it.

release()s that want to shutdown the device, free memory, or take other
actions will want to employ either a spinlock (plain or r/w as
appropriate) or a sleeping semaphore to insure things remain stable
until those actions are complete.

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



This archive was generated by hypermail 2b29 : Fri Dec 07 2001 - 21:00:15 EST