usb_block_drv: keep driver instance between sessions

Fixes #2813
This commit is contained in:
Christian Prochaska
2018-05-07 15:02:04 +02:00
committed by Christian Helmuth
parent 505d30cc42
commit 2b75445ac1

View File

@ -808,23 +808,16 @@ struct Usb::Main
Env &env; Env &env;
Allocator &alloc; Allocator &alloc;
Signal_context_capability sigh; Signal_context_capability sigh;
Usb::Block_driver driver;
Usb::Block_driver *driver = nullptr;
Factory(Env &env, Allocator &alloc, Factory(Env &env, Allocator &alloc,
Signal_context_capability sigh) Signal_context_capability sigh)
: env(env), alloc(alloc), sigh(sigh) : env(env), alloc(alloc), sigh(sigh),
{ driver(env, alloc, sigh) { }
driver = new (&alloc) Usb::Block_driver(env, alloc, sigh);
}
Block::Driver *create() override { return driver; } Block::Driver *create() override { return &driver; }
void destroy(Block::Driver *driver) override void destroy(Block::Driver *) override { }
{
Genode::destroy(alloc, driver);
driver = nullptr;
}
private: private: