-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 I totally agree with you!
Stefan Hajnoczi (of QEMU) raised this concern and I wanted to do something like you just proposed! So, very glad you came up with that comment now! Let's do this ;) I'll resubmit soon Cheers David On 10-09-23 10:27 AM, Nils Carlson wrote: > Commente below... > > On Wed, 22 Sep 2010, David Goulet wrote: > >> On urcu commit 453629a9317adef5b96c3d55e4dcd98db680997a, the >> container_of macro was moved to urcu/compiler.h. Since, multiple >> warnings appear about redefinition >> > > I think we should consider things in a more general sense. This is a > little bit of what I think the Qemu/KVM people were complaining about. > > We are terrible namespace polluters. Ideally, when you make a library, > you want to provide a limited set of external api's that are well defined > and well maintained and consistent over versions. You then want to hide > EVERYTHING else. This means that we should put some effort into hiding > all the macros and functions that we don't want to explicity export. > > So I suggest we prefix all out internal-only macros which are visible in > global header files with __ust_. I would suggest Mathieu do the same with > urcu. If we don't want to support the macros, then they should have a > private namespace. I think container_of is an excellent example of this, > we use it, but it's not ours to export. > > So a NACK here. Instead, call it __ust_container_of and then fix all the > call sites. > > /Nils > > > > >> Signed-off-by: David Goulet <[email protected]> >> --- >> include/ust/core.h | 2 ++ >> include/ust/kcompat/simple.h | 3 ++- >> 2 files changed, 4 insertions(+), 1 deletions(-) >> >> diff --git a/include/ust/core.h b/include/ust/core.h >> index 0172614..d5a1f4d 100644 >> --- a/include/ust/core.h >> +++ b/include/ust/core.h >> @@ -141,8 +141,10 @@ static __inline__ int get_count_order(unsigned >> int count) >> return order; >> } >> >> +#ifndef container_of >> #define container_of(ptr, type, member) ({ \ >> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >> (type *)( (char *)__mptr - offsetof(type,member) );}) >> +#endif /* containter_of */ >> >> #endif /* UST_CORE_H */ >> diff --git a/include/ust/kcompat/simple.h b/include/ust/kcompat/simple.h >> index 762d802..586b2ed 100644 >> --- a/include/ust/kcompat/simple.h >> +++ b/include/ust/kcompat/simple.h >> @@ -28,10 +28,11 @@ >> * @member: the name of the member within the struct. >> * >> */ >> +#ifndef container_of >> #define container_of(ptr, type, member) ({ \ >> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >> (type *)( (char *)__mptr - offsetof(type,member) );}) >> - >> +#endif /* container_of */ >> >> /* libkcompat: from rcupdate.h */ >> >> -- >> 1.7.3 >> >> >> _______________________________________________ >> ltt-dev mailing list >> [email protected] >> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev >> - -- David Goulet LTTng project, DORSAL Lab. 1024D/16BD8563 BE3C 672B 9331 9796 291A 14C6 4AF7 C14B 16BD 8563 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) iEYEARECAAYFAkybZvMACgkQSvfBSxa9hWPy1gCfdA9KZag2rLL3IkPtprE31DXT hEEAn3OglxXOTbs0kLIGRPHFAsNY4JFo =afmW -----END PGP SIGNATURE----- _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
