看板 DFBSD_kernel 關於我們 聯絡資訊
Hello, I was actually using an older code. Now I updated my code, and it's okay. Thanks for the help. St廧hanie Le 02/06/11 06:26, Tim Bisson a 嶰rit : > On 5/31/11 1:05 PM, St廧hanie Ouillon wrote: >> Hello, >> >> I modified some parts of the code of the virtio block device driver >> that has been already ported from NetBSD. >> The code is available here : github.com/arroway/virtio_DragonFlyBSD >> >> The initially ported block device driver is available in the block/ >> direectory : it was working on its own. >> What I did is that I modified it so that it could work with a more >> general interface, virtio.c > Can you clarify what you mean by make it "work with a more general > interface, virtio.c"? The block driver as it was, would use virtio.c. > For example, virtio_negotiate_features() is in virtio.c and is called > from virtio-blk.c > > I'm referring to the last code written for the virtio-block: > http://gitorious.org/virtio-drivers/virtio-drivers/trees/master > >> First the virtio module is called, and it detects or not a virtio >> device. Then, according to the type of the virtio device ( here, a >> block device ), it calls the virtio_blk module. >> >> I've got some problems to attach my virtio device with virtio_blk. >> >> Here is what I did, as I told my mentor Pratyush Kshirsagar : >> >> Some functions were defined twice : in virtio_blk.c and in virtio.c. >> In virtio.c, their prototypes accepted a virtio_softc * structure, >> but in virtio_blk.c, they wanted a virtio_blk_softc * structure. >> Now, I only use the functions in virtio.c ( I deleted the >> corresponding functions in virtio_blk.c to keep ony the functions >> that were specific to the block device ). >> >> So I changed the definition of virtio_blk_softc * structure in >> virtio_blk.c. Now it looks like this : >> (like in the netbsd code) >> >> *struct virtio_blk_softc {* >> >> device_t sc_dev; >> >> *struct virtio_softc *sc_virtio;* >> struct virtqueue sc_vq[1]; >> >> struct virtio_blk_req *sc_reqs; >> int sc_readonly; >> uint32_t sc_features; >> int maxxfersize; >> >> / //added : what for ?/ >> bus_dma_segment_t sc_reqs_segs[1]; >> / //I don't use it at the moment ( virtio_blk_attach() )/ >> / kmutex_t sc_lock;/ >> >> /// Block stuff : for testing/ /with /devstat >> cdev_t cdev; >> struct devstat stats; >> struct disk disk; >> >> *};* > > I think you might be using an older version of the virtio block code? > In the gitorious tree I pointed to earlier, there is a pointer to > virtio_softc in virtio_blk_softc. > > Thanks, > Tim