Valdis.Kletnieks@xxxxxx writes: > On Wed, 11 Mar 2015 18:37:32 -0000, Jeff Haran said: > >> I don't understand the problem here. The caller passes in a condition to be >> evaluated in a loop. Many times that condition is quite simple (e.g. a counter >> being non-zero). If it was a function the caller would have to pass in a >> pointer to a function that does the evaluation, as in: > > We do pointers to callback functions all the time. We try *really* hard > to avoid anonymous lambda functions (which is basically what we have here). > > The problem here is that there's about 3 zillion ways to screw up the inline > version, starting with the compiler optimizing the control variable into a > hoisted load outside the loop and causing the test to always fail - note that > the macro does *not* use any barriers or volatile or anything like that. We could go a couple of more rounds on this, but I don't think there is much point. It is sufficent to note that there are different views on the subject. None of them are "right" or "wrong". Use a function if you like. There are probably 3 zillion ways to screw up either way :-) Bjørn _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies