#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