/** A fuqueue, a prioritized wait queue usable from
kernel space. */
struct fuqueue {
spinlock_t lock; struct plist wlist;
struct fuqueue_ops *ops;
};
Would the above spinlock_t be a raw_spinlock_t? This goes
back to my first question. I'm not sure how familiar you are with Ingo's work, but he has turned all spinlocks into mutexes, and when you really need an original spinlock, you declare it with raw_spinlock_t.
This one probably should be a raw_spinlock. This lock is only held to protect access to the queues.
Since the queues are already priority ordered, there is
little benefit to ordering -the order of insertion-
in case of contention on a queue, compared with the complexity.