X-Git-Url: https://rtime.felk.cvut.cz/gitweb/l4.git/blobdiff_plain/5a0e6ead0fbfbb912cd817abad695c078e82481c..8d9e85aaae867f39cdd610261e3a4181c25add2d:/l4/pkg/io/server/src/vdevice.h diff --git a/l4/pkg/io/server/src/vdevice.h b/l4/pkg/io/server/src/vdevice.h index 73256d83b..d034aa11f 100644 --- a/l4/pkg/io/server/src/vdevice.h +++ b/l4/pkg/io/server/src/vdevice.h @@ -27,12 +27,16 @@ class Adr_resource; namespace Vi { +class Device; + class Dev_feature { public: virtual ~Dev_feature() {} virtual bool match_hw_feature(Hw::Dev_feature const *) const = 0; virtual int dispatch(l4_umword_t obj, l4_uint32_t func, L4::Ipc_iostream &ios) = 0; + virtual Device *host() const = 0; + virtual void set_host(Device *d) = 0; }; @@ -51,7 +55,10 @@ public: Feature_list const *features() const { return &_features; } void add_feature(Dev_feature *f) - { _features.push_back(f); } + { + f->set_host(this); + _features.push_back(f); + } template< typename FT > FT *find_feature()