packed_section_start.h 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*
  2. * Declare directives for structure packing. No padding will be provided
  3. * between the members of packed structures, and therefore, there is no
  4. * guarantee that structure members will be aligned.
  5. *
  6. * Declaring packed structures is compiler specific. In order to handle all
  7. * cases, packed structures should be delared as:
  8. *
  9. * #include <packed_section_start.h>
  10. *
  11. * typedef BWL_PRE_PACKED_STRUCT struct foobar_t {
  12. * some_struct_members;
  13. * } BWL_POST_PACKED_STRUCT foobar_t;
  14. *
  15. * #include <packed_section_end.h>
  16. *
  17. *
  18. * Copyright (C) 1999-2011, Broadcom Corporation
  19. *
  20. * Unless you and Broadcom execute a separate written software license
  21. * agreement governing use of this software, this software is licensed to you
  22. * under the terms of the GNU General Public License version 2 (the "GPL"),
  23. * available at http://www.broadcom.com/licenses/GPLv2.php, with the
  24. * following added to such license:
  25. *
  26. * As a special exception, the copyright holders of this software give you
  27. * permission to link this software with independent modules, and to copy and
  28. * distribute the resulting executable under terms of your choice, provided that
  29. * you also meet, for each linked independent module, the terms and conditions of
  30. * the license of that module. An independent module is a module which is not
  31. * derived from this software. The special exception does not apply to any
  32. * modifications of the software.
  33. *
  34. * Notwithstanding the above, under no circumstances may you combine this
  35. * software in any way with any other Broadcom software provided under a license
  36. * other than the GPL, without Broadcom's express prior written consent.
  37. * $Id: packed_section_start.h 277737 2011-08-16 17:54:59Z $
  38. */
  39. #ifdef BWL_PACKED_SECTION
  40. #error "BWL_PACKED_SECTION is already defined!"
  41. #else
  42. #define BWL_PACKED_SECTION
  43. #endif
  44. #if defined(__GNUC__)
  45. #define BWL_PRE_PACKED_STRUCT
  46. #define BWL_POST_PACKED_STRUCT __attribute__ ((packed))
  47. #elif defined(__CC_ARM)
  48. #define BWL_PRE_PACKED_STRUCT __packed
  49. #define BWL_POST_PACKED_STRUCT
  50. #else
  51. #error "Unknown compiler!"
  52. #endif