2#ifndef _LINUX_VIRTIO_CONFIG_H
3#define _LINUX_VIRTIO_CONFIG_H
71static inline bool __virtio_test_bit(
const struct virtio_device* vdev,
80 return (features >> fbit) & 1ULL;
91static inline bool virtio_has_feature(
const struct virtio_device* vdev,
94 return __virtio_test_bit(vdev, fbit);
109static inline bool virtio_has_dma_quirk(
const struct virtio_device* vdev)
133static inline bool virtio_get_shm_region(
struct virtio_device* vdev,
157#define virtio_cread_le(vdev, structname, member, ptr) \
158 virtio_cread((vdev), structname, member, ptr)
160#define virtio_cwrite(vdev, structname, member, ptr) \
162 typeof(((structname*)0)->member) _dcl_cw = \
163 (typeof(((structname*)0)->member))(*(ptr)); \
164 (vdev)->config->set((vdev), offsetof(structname, member), \
165 &_dcl_cw, sizeof(_dcl_cw)); \
168#define virtio_cwrite_le(vdev, structname, member, ptr) \
169 virtio_cwrite((vdev), structname, member, ptr)
186#define virtio_cread_feature(vdev, fbit, structname, member, ptr) \
189 if (!virtio_has_feature(vdev, fbit)) \
192 virtio_cread((vdev), structname, member, ptr); \
215#define virtio_device_for_each_vq(vdev, vq) \
216 list_for_each_entry(vq, &(vdev)->vqs, list)
231static inline bool virtio_is_little_endian(
struct virtio_device* vdev)
234 return virtio_legacy_is_little_endian();
253 return __virtio16_to_cpu(virtio_is_little_endian(vdev), val);
258 return __cpu_to_virtio16(virtio_is_little_endian(vdev), val);
263 return __virtio32_to_cpu(virtio_is_little_endian(vdev), val);
268 return __cpu_to_virtio32(virtio_is_little_endian(vdev), val);
uint64_t u64
Definition kernel.h:17
uint8_t u8
Definition kernel.h:14
uint16_t u16
Definition kernel.h:15
uint32_t u32
Definition kernel.h:16
__u32 __bitwise __virtio32
Definition virtio_types.h:43
__u16 __bitwise __virtio16
Definition virtio_types.h:42
u64(* get_features)(struct virtio_device *vdev)
Definition virtio.h:129
bool(* get_shm_region)(struct virtio_device *vdev, void *region, u8 id)
Definition virtio.h:135
struct virtio_config_ops * config
Definition virtio.h:161
Definition virtio_config.h:119
u64 len
Definition virtio_config.h:121
u64 addr
Definition virtio_config.h:120
#define VIRTIO_F_ACCESS_PLATFORM
Definition virtio_config.h:76