diff --git a/drivers/virtio-blk.cc b/drivers/virtio-blk.cc index 47ef7e16743882d82fe20b4e816178cde8cff66a..ac228541bd8055bb08db526900f2023ff4b86393 100644 --- a/drivers/virtio-blk.cc +++ b/drivers/virtio-blk.cc @@ -153,22 +153,6 @@ bool virtio_blk::read_config() return true; } -struct virtio_blk_req { - virtio_blk_req(void* req = nullptr, virtio_blk::virtio_blk_res* res = nullptr, struct bio* b=nullptr) - :req_header(req), status(res), bio(b) {}; - ~virtio_blk_req() { - if (req_header) delete reinterpret_cast<virtio_blk::virtio_blk_outhdr*>(req_header); - if (status) delete status; - } - - - void* req_header; - virtio_blk::virtio_blk_res* status; - struct bio* bio; -}; - - - void virtio_blk::response_worker() { vring* queue = get_virt_queue(0); virtio_blk_req* req; diff --git a/drivers/virtio-blk.hh b/drivers/virtio-blk.hh index 1cec6fa405473031cd2a333d800ee6c87308a808..f61ca948bc12e5f8daaa82f7c3a197eaf05088e0 100644 --- a/drivers/virtio-blk.hh +++ b/drivers/virtio-blk.hh @@ -159,6 +159,19 @@ namespace virtio { static hw_driver* probe(hw_device* dev); private: + struct virtio_blk_req { + virtio_blk_req(void* req = nullptr, virtio_blk_res* res = nullptr, struct bio* b=nullptr) + :req_header(req), status(res), bio(b) {}; + ~virtio_blk_req() { + if (req_header) delete reinterpret_cast<virtio_blk_outhdr*>(req_header); + if (status) delete status; + } + + void* req_header; + virtio_blk_res* status; + struct bio* bio; + }; + std::string _driver_name; virtio_blk_config _config; diff --git a/drivers/virtio-net.cc b/drivers/virtio-net.cc index 1c26325a234584085482b7299c134527f01c600c..5cac3f7c6e8065cae56f48b3b66a565483fece6c 100644 --- a/drivers/virtio-net.cc +++ b/drivers/virtio-net.cc @@ -196,17 +196,6 @@ namespace virtio { return true; } - struct virtio_net_req { - struct virtio_net::virtio_net_hdr_mrg_rxbuf mhdr; - struct free_deleter { - void operator()(struct mbuf *m) {m_freem(m);} - }; - - std::unique_ptr<struct mbuf, free_deleter> um; - - virtio_net_req() {memset(&mhdr,0,sizeof(mhdr));}; - }; - void virtio_net::receiver() { while (1) { diff --git a/drivers/virtio-net.hh b/drivers/virtio-net.hh index 166baedbb3f84ab01bfdf63cd1b6a0a34ed6b2b2..7a1bf9b52d75f71640019c41bf35775094c10e01 100644 --- a/drivers/virtio-net.hh +++ b/drivers/virtio-net.hh @@ -30,6 +30,8 @@ #include <bsd/porting/netport.h> #include <bsd/sys/net/if_var.h> #include <bsd/sys/net/if.h> +#define _KERNEL +#include <bsd/sys/sys/mbuf.h> #include "drivers/virtio.hh" #include "drivers/pci-device.hh" @@ -234,6 +236,17 @@ namespace virtio { private: + struct virtio_net_req { + struct virtio_net::virtio_net_hdr_mrg_rxbuf mhdr; + struct free_deleter { + void operator()(struct mbuf *m) {m_freem(m);} + }; + + std::unique_ptr<struct mbuf, free_deleter> um; + + virtio_net_req() {memset(&mhdr,0,sizeof(mhdr));}; + }; + std::string _driver_name; virtio_net_config _config; bool _mergeable_bufs;