|
@@ -416,6 +416,26 @@ definitions instead of typedefs in headers and function prototypes; this
|
|
avoids problems with duplicated typedefs and reduces the need to include
|
|
avoids problems with duplicated typedefs and reduces the need to include
|
|
headers from other headers.
|
|
headers from other headers.
|
|
|
|
|
|
|
|
+Bitfields
|
|
|
|
+---------
|
|
|
|
+
|
|
|
|
+C bitfields can be a cause of non-portability issues, especially under windows
|
|
|
|
+where `MSVC has a different way to lay them out than GCC
|
|
|
|
+<https://gcc.gnu.org/onlinedocs/gcc/x86-Type-Attributes.html>`_, or where
|
|
|
|
+endianness matters.
|
|
|
|
+
|
|
|
|
+For this reason, we disallow usage of bitfields in packed structures and in any
|
|
|
|
+structures which are supposed to exactly match a specific layout in guest
|
|
|
|
+memory. Some existing code may use it, and we carefully ensured the layout was
|
|
|
|
+the one expected.
|
|
|
|
+
|
|
|
|
+We also suggest avoiding bitfields even in structures where the exact
|
|
|
|
+layout does not matter, unless you can show that they provide a significant
|
|
|
|
+usability benefit.
|
|
|
|
+
|
|
|
|
+We encourage the usage of ``include/hw/registerfields.h`` as a safe replacement
|
|
|
|
+for bitfields.
|
|
|
|
+
|
|
Reserved namespaces in C and POSIX
|
|
Reserved namespaces in C and POSIX
|
|
----------------------------------
|
|
----------------------------------
|
|
|
|
|