Hi Philippe, >> It seems there is no need to keep the inuse field signed and end up with >> compiler warnings for sign-compare. >> CC libvhost-user.o >> libvhost-user.c: In function ‘vu_queue_pop’: >> libvhost-user.c:2763:19: error: comparison of integer expressions of >> different signedness: ‘int’ and ‘unsigned int’ [-Werror=sign-compare] >> 2763 | if (vq->inuse >= vq->vring.num) { >> | ^~ >> libvhost-user.c: In function ‘vu_queue_rewind’: >> libvhost-user.c:2808:13: error: comparison of integer expressions of >> different signedness: ‘unsigned int’ and ‘int’ [-Werror=sign-compare] >> 2808 | if (num > vq->inuse) { >> | ^ >> Instead of casting the comparision to unsigned int, just make the inuse >> field unsigned int in the fist place. >> Signed-off-by: Marcel Holtmann <mar...@holtmann.org> >> --- >> subprojects/libvhost-user/libvhost-user.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> diff --git a/subprojects/libvhost-user/libvhost-user.h >> b/subprojects/libvhost-user/libvhost-user.h >> index aea7ec5061d5..8cda9b8f577a 100644 >> --- a/subprojects/libvhost-user/libvhost-user.h >> +++ b/subprojects/libvhost-user/libvhost-user.h >> @@ -343,7 +343,7 @@ typedef struct VuVirtq { >> /* Notification enabled? */ >> bool notification; >> - int inuse; >> + unsigned int inuse; > > Another use in subprojects/libvduse/libvduse.c. > > Possibly both could be renamed refcount which is more meaningful.
I quickly tried libvduse.[ch] and it has clearly less warnings than libvhost-user, but some things could be applied there as well. I looks like only the _GNU_SOURCE and the unsigned int inuse are applicable, but there is a strict-aliasing issue that I first have to fully understand. If patches are acceptable, I send them as well for libvduse. Regards Marcel