> And what about having one work for all three (reg, up, unreg) as I > suggested. As I wrote, IMO, you would need no lock then. Only flags to > see what to do there. I wasn't super keen on that because it felt like forcing three otherwise separate things into one, but it makes sense if I look at it as corsair_void's work function. Is there a guarantee that the same work item won't run twice at the same time? Do I need to make a work queue for that? I'm also not sure how to pass arguments to the work function. I'm sure all of that is answered by some documentation somewhere, but I couldn't find it myself when I looked previously. Thanks, Stuart