search for: __virtio_typecheck

Displaying 11 results from an estimated 11 matches for "__virtio_typecheck".

2020 Aug 05
2
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
..., __le64, \ > + __virtio_pick_endian(x, __u16, __u32, __u64, \ > + /* No other type allowed */ \ > + (void)0))))) > + > +#endif > + > +#define __virtio_native_type(structname, member) \ > + __virtio_native_typeof(((structname*)0)->member) > + > +#define __virtio_typecheck(structname, member, val) \ > + /* Must match the member's type, and be integer */ \ > + typecheck(__virtio_native_type(structname, member), (val)) > + > + > /* Config space accessors. */ > #define virtio_cread(vdev, structname, member, ptr) \ > do { \ >...
2020 Aug 05
2
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
..., __le64, \ > + __virtio_pick_endian(x, __u16, __u32, __u64, \ > + /* No other type allowed */ \ > + (void)0))))) > + > +#endif > + > +#define __virtio_native_type(structname, member) \ > + __virtio_native_typeof(((structname*)0)->member) > + > +#define __virtio_typecheck(structname, member, val) \ > + /* Must match the member's type, and be integer */ \ > + typecheck(__virtio_native_type(structname, member), (val)) > + > + > /* Config space accessors. */ > #define virtio_cread(vdev, structname, member, ptr) \ > do { \ >...
2020 Aug 03
0
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
...io64, \ + __virtio_pick_endian(x, __le16, __le32, __le64, \ + __virtio_pick_endian(x, __u16, __u32, __u64, \ + /* No other type allowed */ \ + (void)0))))) + +#endif + +#define __virtio_native_type(structname, member) \ + __virtio_native_typeof(((structname*)0)->member) + +#define __virtio_typecheck(structname, member, val) \ + /* Must match the member's type, and be integer */ \ + typecheck(__virtio_native_type(structname, member), (val)) + + /* Config space accessors. */ #define virtio_cread(vdev, structname, member, ptr) \ do { \ might_sleep(); \ /* Must match...
2020 Aug 05
0
[PATCH v3 03/38] virtio: allow __virtioXX, __leXX in config space
...io64, \ + __virtio_pick_endian(x, __le16, __le32, __le64, \ + __virtio_pick_endian(x, __u16, __u32, __u64, \ + /* No other type allowed */ \ + (void)0))))) + +#endif + +#define __virtio_native_type(structname, member) \ + __virtio_native_typeof(((structname*)0)->member) + +#define __virtio_typecheck(structname, member, val) \ + /* Must match the member's type, and be integer */ \ + typecheck(__virtio_native_type(structname, member), (val)) + + /* Config space accessors. */ #define virtio_cread(vdev, structname, member, ptr) \ do { \ might_sleep(); \ /* Must match...
2020 Aug 05
0
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
..., __u16, __u32, __u64, \ > > + /* No other type allowed */ \ > > + (void)0))))) > > + > > +#endif > > + > > +#define __virtio_native_type(structname, member) \ > > + __virtio_native_typeof(((structname*)0)->member) > > + > > +#define __virtio_typecheck(structname, member, val) \ > > + /* Must match the member's type, and be integer */ \ > > + typecheck(__virtio_native_type(structname, member), (val)) > > + > > + > > /* Config space accessors. */ > > #define virtio_cread(vdev, structname, member, ptr)...
2020 Aug 06
2
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
...ine virtio_cread(vdev, structname, member, ptr) \ >>> do { \ >>> might_sleep(); \ >>> /* Must match the member's type, and be integer */ \ >>> - if (!typecheck(typeof((((structname*)0)->member)), *(ptr))) \ >>> + if (!__virtio_typecheck(structname, member, *(ptr))) \ >>> (*ptr) = 1; \ >> A silly question,? compare to using set()/get() directly, what's the value >> of the accessors macro here? >> >> Thanks > get/set don't convert to the native endian, I guess that's why >...
2020 Aug 06
2
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
...ine virtio_cread(vdev, structname, member, ptr) \ >>> do { \ >>> might_sleep(); \ >>> /* Must match the member's type, and be integer */ \ >>> - if (!typecheck(typeof((((structname*)0)->member)), *(ptr))) \ >>> + if (!__virtio_typecheck(structname, member, *(ptr))) \ >>> (*ptr) = 1; \ >> A silly question,? compare to using set()/get() directly, what's the value >> of the accessors macro here? >> >> Thanks > get/set don't convert to the native endian, I guess that's why >...
2020 Aug 05
0
[PATCH v3 24/38] virtio_config: rewrite using _Generic
...to_virtio16((vdev), (x)), \ + __u32: (__force __u32)cpu_to_virtio32((vdev), (x)), \ + __u64: (__force __u64)cpu_to_virtio64((vdev), (x)) \ + ) \ + ) \ + ) #define __virtio_native_type(structname, member) \ - __virtio_native_typeof(((structname*)0)->member) - -#define __virtio_typecheck(structname, member, val) \ - /* Must match the member's type, and be integer */ \ - typecheck(__virtio_native_type(structname, member), (val)) - + typeof(virtio_to_cpu(NULL, ((structname*)0)->member)) /* Config space accessors. */ #define virtio_cread(vdev, structname, member, ptr) \...
2020 Aug 04
1
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
..., __le64, \ > + __virtio_pick_endian(x, __u16, __u32, __u64, \ > + /* No other type allowed */ \ > + (void)0))))) > + > +#endif > + > +#define __virtio_native_type(structname, member) \ > + __virtio_native_typeof(((structname*)0)->member) > + > +#define __virtio_typecheck(structname, member, val) \ > + /* Must match the member's type, and be integer */ \ > + typecheck(__virtio_native_type(structname, member), (val)) > + > + Acked-by: Cornelia Huck <cohuck at redhat.com>
2020 Aug 03
51
[PATCH v2 00/24] virtio: config space endian-ness cleanup
Config space endian-ness is currently a mess: fields are not tagged with the correct endian-ness so it's easy to make mistakes like instanciating config space in native endian-ness. The following patches adding sparse tagging are currently in my tree. Lightly tested. As a follow-up, I plan to add new APIs that handle modern config space in a more efficient way (bypassing the version check).
2020 Aug 06
0
[PATCH v2 03/24] virtio: allow __virtioXX, __leXX in config space
...member, ptr) \ > > > > do { \ > > > > might_sleep(); \ > > > > /* Must match the member's type, and be integer */ \ > > > > - if (!typecheck(typeof((((structname*)0)->member)), *(ptr))) \ > > > > + if (!__virtio_typecheck(structname, member, *(ptr))) \ > > > > (*ptr) = 1; \ > > > A silly question,? compare to using set()/get() directly, what's the value > > > of the accessors macro here? > > > > > > Thanks > > get/set don't convert to the nativ...