Skip to content

Commit 2d7ce0e

Browse files
committed
tools/virtio: more stubs
As usual, add more stubs to fix test build after main codebase changes. Signed-off-by: Michael S. Tsirkin <[email protected]>
1 parent d71de9e commit 2d7ce0e

File tree

5 files changed

+79
-2
lines changed

5 files changed

+79
-2
lines changed

tools/virtio/linux/virtio.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
/* TODO: empty stubs for now. Broken but enough for virtio_ring.c */
77
#define list_add_tail(a, b) do {} while (0)
88
#define list_del(a) do {} while (0)
9+
#define list_for_each_entry(a, b, c) while (0)
910
/* end of stubs */
1011

1112
struct virtio_device {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#ifndef _LINUX_VIRTIO_BYTEORDER_STUB_H
2+
#define _LINUX_VIRTIO_BYTEORDER_STUB_H
3+
4+
#include <asm/byteorder.h>
5+
#include "../../include/linux/byteorder/generic.h"
6+
#include "../../include/linux/virtio_byteorder.h"
7+
8+
#endif

tools/virtio/linux/virtio_config.h

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,72 @@
1-
#define VIRTIO_TRANSPORT_F_START 28
2-
#define VIRTIO_TRANSPORT_F_END 32
1+
#include <linux/virtio_byteorder.h>
2+
#include <linux/virtio.h>
3+
#include <uapi/linux/virtio_config.h>
4+
5+
/*
6+
* __virtio_test_bit - helper to test feature bits. For use by transports.
7+
* Devices should normally use virtio_has_feature,
8+
* which includes more checks.
9+
* @vdev: the device
10+
* @fbit: the feature bit
11+
*/
12+
static inline bool __virtio_test_bit(const struct virtio_device *vdev,
13+
unsigned int fbit)
14+
{
15+
return vdev->features & (1ULL << fbit);
16+
}
17+
18+
/**
19+
* __virtio_set_bit - helper to set feature bits. For use by transports.
20+
* @vdev: the device
21+
* @fbit: the feature bit
22+
*/
23+
static inline void __virtio_set_bit(struct virtio_device *vdev,
24+
unsigned int fbit)
25+
{
26+
vdev->features |= (1ULL << fbit);
27+
}
28+
29+
/**
30+
* __virtio_clear_bit - helper to clear feature bits. For use by transports.
31+
* @vdev: the device
32+
* @fbit: the feature bit
33+
*/
34+
static inline void __virtio_clear_bit(struct virtio_device *vdev,
35+
unsigned int fbit)
36+
{
37+
vdev->features &= ~(1ULL << fbit);
38+
}
339

440
#define virtio_has_feature(dev, feature) \
541
(__virtio_test_bit((dev), feature))
642

43+
static inline u16 virtio16_to_cpu(struct virtio_device *vdev, __virtio16 val)
44+
{
45+
return __virtio16_to_cpu(virtio_has_feature(vdev, VIRTIO_F_VERSION_1), val);
46+
}
47+
48+
static inline __virtio16 cpu_to_virtio16(struct virtio_device *vdev, u16 val)
49+
{
50+
return __cpu_to_virtio16(virtio_has_feature(vdev, VIRTIO_F_VERSION_1), val);
51+
}
52+
53+
static inline u32 virtio32_to_cpu(struct virtio_device *vdev, __virtio32 val)
54+
{
55+
return __virtio32_to_cpu(virtio_has_feature(vdev, VIRTIO_F_VERSION_1), val);
56+
}
57+
58+
static inline __virtio32 cpu_to_virtio32(struct virtio_device *vdev, u32 val)
59+
{
60+
return __cpu_to_virtio32(virtio_has_feature(vdev, VIRTIO_F_VERSION_1), val);
61+
}
62+
63+
static inline u64 virtio64_to_cpu(struct virtio_device *vdev, __virtio64 val)
64+
{
65+
return __virtio64_to_cpu(virtio_has_feature(vdev, VIRTIO_F_VERSION_1), val);
66+
}
67+
68+
static inline __virtio64 cpu_to_virtio64(struct virtio_device *vdev, u64 val)
69+
{
70+
return __cpu_to_virtio64(virtio_has_feature(vdev, VIRTIO_F_VERSION_1), val);
71+
}
72+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include "../../include/uapi/linux/virtio_types.h"

tools/virtio/virtio_test.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <sys/types.h>
1212
#include <fcntl.h>
1313
#include <stdbool.h>
14+
#include <linux/virtio_types.h>
1415
#include <linux/vhost.h>
1516
#include <linux/virtio.h>
1617
#include <linux/virtio_ring.h>

0 commit comments

Comments
 (0)