1 /* $NetBSD: unpack.h,v 1.1.1.1 2018/08/27 01:34:55 riastradh Exp $ */ 2 3 #ifndef __NVIF_UNPACK_H__ 4 #define __NVIF_UNPACK_H__ 5 6 #define nvif_unvers(d) ({ \ 7 ret = (size == sizeof(d)) ? 0 : -ENOSYS; \ 8 (ret == 0); \ 9 }) 10 11 #define nvif_unpack(d,vl,vh,m) ({ \ 12 if ((vl) == 0 || ret == -ENOSYS) { \ 13 int _size = sizeof(d); \ 14 if (_size <= size && (d).version >= (vl) && \ 15 (d).version <= (vh)) { \ 16 data = (u8 *)data + _size; \ 17 size = size - _size; \ 18 ret = ((m) || !size) ? 0 : -E2BIG; \ 19 } else { \ 20 ret = -ENOSYS; \ 21 } \ 22 } \ 23 (ret == 0); \ 24 }) 25 26 #endif 27