mbed-events equeue_clampdiff()の実装について
https://github.com/ARMmbed/mbed-events/blob/master/equeue/equeue.c
のequeue_clampdiff()という関数に、下記のコードがあるのですが、
return ~(diff >> (8*sizeof(int)-1)) & diff;
この処理の意図していることがわかりません。sizeof(int) == 4の環境が前提だと思うので、diffは常に31ビット右シフトすることになります。それを反転して&。何が何やら・・・。