All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] libext2fs: use statement-expression for container_of only on GNU-compatible compilers
@ 2021-04-14  7:41 Michael Forney
  2021-04-14  7:41 ` [PATCH 2/2] libext2fs: use offsetof() from stddef.h Michael Forney
  2021-07-06  0:28 ` [PATCH 1/2] libext2fs: use statement-expression for container_of only on GNU-compatible compilers Theodore Ts'o
  0 siblings, 2 replies; 4+ messages in thread
From: Michael Forney @ 2021-04-14  7:41 UTC (permalink / raw)
  To: linux-ext4

Functionally, the statement-expression is not necessary here; it
just gives a bit of type-safety to make sure the pointer really
does have a compatible type with the specified member of the struct.

When statement expressions are not available, we can just use a
portable fallback macro that skips this member type check.

Signed-off-by: Michael Forney <mforney@mforney.org>
---
 lib/ext2fs/compiler.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/lib/ext2fs/compiler.h b/lib/ext2fs/compiler.h
index 9aa9b4ec..03c35ab8 100644
--- a/lib/ext2fs/compiler.h
+++ b/lib/ext2fs/compiler.h
@@ -14,9 +14,14 @@
 #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
 #endif
 
+#ifdef __GNUC__
 #define container_of(ptr, type, member) ({			\
 	const __typeof__( ((type *)0)->member ) *__mptr = (ptr);	\
 	(type *)( (char *)__mptr - offsetof(type,member) );})
+#else
+#define container_of(ptr, type, member)				\
+	((type *)((char *)(ptr) - offsetof(type, member)))
+#endif
 
 
 #endif /* _EXT2FS_COMPILER_H */
-- 
2.30.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-07-06  2:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-04-14  7:41 [PATCH 1/2] libext2fs: use statement-expression for container_of only on GNU-compatible compilers Michael Forney
2021-04-14  7:41 ` [PATCH 2/2] libext2fs: use offsetof() from stddef.h Michael Forney
2021-07-06  2:55   ` Theodore Ts'o
2021-07-06  0:28 ` [PATCH 1/2] libext2fs: use statement-expression for container_of only on GNU-compatible compilers Theodore Ts'o

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.