lfs_util.h 726 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * lfs utility functions
  3. *
  4. * Copyright (c) 2017 Christopher Haster
  5. * Distributed under the MIT license
  6. */
  7. #ifndef LFS_UTIL_H
  8. #define LFS_UTIL_H
  9. #include "lfs_config.h"
  10. #include <stdlib.h>
  11. // Builtin functions
  12. static inline uint32_t lfs_max(uint32_t a, uint32_t b) {
  13. return (a > b) ? a : b;
  14. }
  15. static inline uint32_t lfs_min(uint32_t a, uint32_t b) {
  16. return (a < b) ? a : b;
  17. }
  18. static inline uint32_t lfs_ctz(uint32_t a) {
  19. return __builtin_ctz(a);
  20. }
  21. static inline uint32_t lfs_npw2(uint32_t a) {
  22. return 32 - __builtin_clz(a-1);
  23. }
  24. static inline int lfs_scmp(uint32_t a, uint32_t b) {
  25. return (int)(unsigned)(a - b);
  26. }
  27. uint32_t lfs_crc(uint32_t crc, lfs_size_t size, const void *buffer);
  28. #endif