unpack.h 1.1 KB

123456789101112131415161718192021222324
  1. #ifndef __NVIF_UNPACK_H__
  2. #define __NVIF_UNPACK_H__
  3. #define nvif_unvers(d) ({ \
  4. ret = (size == sizeof(d)) ? 0 : -ENOSYS; \
  5. (ret == 0); \
  6. })
  7. #define nvif_unpack(d,vl,vh,m) ({ \
  8. if ((vl) == 0 || ret == -ENOSYS) { \
  9. int _size = sizeof(d); \
  10. if (_size <= size && (d).version >= (vl) && \
  11. (d).version <= (vh)) { \
  12. data = (u8 *)data + _size; \
  13. size = size - _size; \
  14. ret = ((m) || !size) ? 0 : -E2BIG; \
  15. } else { \
  16. ret = -ENOSYS; \
  17. } \
  18. } \
  19. (ret == 0); \
  20. })
  21. #endif