hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* SPDX-License-Identifier: MIT */
#ifndef __NVIF_UNPACK_H__
#define __NVIF_UNPACK_H__
 
#define nvif_unvers(r,d,s,m) ({                                                \
   void **_data = (d); __u32 *_size = (s); int _ret = (r);                \
   if (_ret == -ENOSYS && *_size == sizeof(m)) {                          \
       *_data = NULL;                                                 \
       *_size = _ret = 0;                                             \
   }                                                                      \
   _ret;                                                                  \
})
 
#define nvif_unpack(r,d,s,m,vl,vh,x) ({                                        \
   void **_data = (d); __u32 *_size = (s);                                \
   int _ret = (r), _vl = (vl), _vh = (vh);                                \
   if (_ret == -ENOSYS && *_size >= sizeof(m) &&                          \
       (m).version >= _vl && (m).version <= _vh) {                        \
       *_data = (__u8 *)*_data + sizeof(m);                           \
       *_size = *_size - sizeof(m);                                   \
       if (_ret = 0, !(x)) {                                          \
           _ret = *_size ? -E2BIG : 0;                            \
           *_data = NULL;                                         \
           *_size = 0;                                            \
       }                                                              \
   }                                                                      \
   _ret;                                                                  \
})
#endif