From: Ammar Faizi <[email protected]>
To: Jens Axboe <[email protected]>
Cc: Ammar Faizi <[email protected]>,
Pavel Begunkov <[email protected]>,
"Fernanda Ma'rouf" <[email protected]>,
Hao Xu <[email protected]>,
Alviro Iskandar Setiawan <[email protected]>,
io-uring Mailing List <[email protected]>,
GNU/Weeb Mailing List <[email protected]>
Subject: [RFC PATCH v1 3/5] lib: Add `sizeof_field()` macro
Date: Mon, 6 Jun 2022 13:12:07 +0700 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
The first use case of this macro is for data structure assertion at
compile time. It's like what we do in the io_uring.c in the kernel.
Signed-off-by: Ammar Faizi <[email protected]>
---
src/lib.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/lib.h b/src/lib.h
index 40e2817..0db7499 100644
--- a/src/lib.h
+++ b/src/lib.h
@@ -26,6 +26,10 @@
#define BUILD_BUG_ON(EXPR) static_assert(!(EXPR), "!(" #EXPR ") failed")
#endif
+#ifndef sizeof_field
+#define sizeof_field(TYPE, MEMBER) sizeof((((TYPE *)0)->MEMBER))
+#endif
+
#ifndef offsetof
#define offsetof(TYPE, FIELD) ((size_t) &((TYPE *)0)->FIELD)
#endif
--
Ammar Faizi
next prev parent reply other threads:[~2022-06-06 6:12 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-06 6:12 [RFC PATCH v1 0/5] Ensure io_uring data structure consistentcy in liburing Ammar Faizi
2022-06-06 6:12 ` [RFC PATCH v1 1/5] lib: Don't indent in `#ifdef -> #define -> #endif` block Ammar Faizi
2022-06-06 6:12 ` [RFC PATCH v1 2/5] lib: Add `BUILD_BUG_ON()` macro Ammar Faizi
2022-06-06 6:12 ` Ammar Faizi [this message]
2022-06-06 6:12 ` [RFC PATCH v1 4/5] Avoid macro redefinition warnings Ammar Faizi
2022-06-06 6:12 ` [RFC PATCH v1 5/5] Add io_uring data structure build assertion Ammar Faizi
2022-06-06 11:51 ` Pavel Begunkov
2022-06-06 8:03 ` [RFC PATCH v1 0/5] Ensure io_uring data structure consistentcy in liburing Hao Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox