Linus Torvalds writes: (Summary) The "init_completion()" would be the original
owner (essentially the same as a "lock()"), then it has a transfer,
and then a receive, and then "complete()" is basically the unlock
elsewhere.
elsewhere.
Of course, right now that transfer and receive is entirely implicit, so you don't really see it anywhere. And for completions, the whole _point_ is that transfer, so ..
_point_ is that transfer, so ..
The "wait_for_completion()" is then a normal lock operation (no transfer there - it's just trying to get the lock again). transfer there - it's just trying to get the lock again).
elsewhere.
Of course, right now that transfer and receive is entirely implicit, so you don't really see it anywhere. And for completions, the whole _point_ is that transfer, so ..
_point_ is that transfer, so ..
The "wait_for_completion()" is then a normal lock operation (no transfer there - it's just trying to get the lock again). transfer there - it's just trying to get the lock again).