cppcheck-2.19.1 pointed out that an initialiser like:
union epoll_ref foo = { 0 };
doesn't necessarily zero the whole union, because the first variant listed
may not be the full length. I don't think this is actually broken in
practice, but I'm not 100% certain about that.
In any case, make it more clearly correct, and stop cppcheck complaining
by moving the @u64 variant to be the first one.
Signed-off-by: David Gibson
---
epoll_ctl.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/epoll_ctl.h b/epoll_ctl.h
index 3f802e76..2c103cde 100644
--- a/epoll_ctl.h
+++ b/epoll_ctl.h
@@ -17,6 +17,7 @@
/**
* union epoll_ref - Breakdown of reference for epoll fd bookkeeping
+ * @u64: Opaque reference for epoll_ctl() and epoll_wait()
* @type: Type of fd (tells us what to do with events)
* @fd: File descriptor number (implies < 2^24 total descriptors)
* @flow: Index of the flow this fd is linked to
@@ -25,9 +26,9 @@
* @data: Data handled by protocol handlers
* @nsdir_fd: netns dirfd for fallback timer checking if namespace is gone
* @queue: vhost-user queue index for this fd
- * @u64: Opaque reference for epoll_ctl() and epoll_wait()
*/
union epoll_ref {
+ uint64_t u64;
struct {
enum epoll_type type:8;
int32_t fd:FD_REF_BITS;
@@ -40,7 +41,6 @@ union epoll_ref {
int queue;
};
};
- uint64_t u64;
};
static_assert(sizeof(union epoll_ref) <= sizeof(union epoll_data),
"epoll_ref must have same size as epoll_data");
--
2.52.0