#ifndef __NVIF_UNPACK_H__ | |
#define __NVIF_UNPACK_H__ | |
#define nvif_unvers(d) ({ \ | |
ret = (size == sizeof(d)) ? 0 : -ENOSYS; \ | |
(ret == 0); \ | |
}) | |
#define nvif_unpack(d,vl,vh,m) ({ \ | |
if ((vl) == 0 || ret == -ENOSYS) { \ | |
int _size = sizeof(d); \ | |
if (_size <= size && (d).version >= (vl) && \ | |
(d).version <= (vh)) { \ | |
data = (u8 *)data + _size; \ | |
size = size - _size; \ | |
ret = ((m) || !size) ? 0 : -E2BIG; \ | |
} else { \ | |
ret = -ENOSYS; \ | |
} \ | |
} \ | |
(ret == 0); \ | |
}) | |
#endif |