/* * BlockBackend RAM Registrar * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef BLOCK_RAM_REGISTRAR_H #define BLOCK_RAM_REGISTRAR_H #include "exec/ramlist.h" /** * struct BlockRAMRegistrar: * * Keeps RAMBlock memory registered with a BlockBackend using * blk_register_buf() including hotplugged memory. * * Emulated devices or other BlockBackend users initialize a BlockRAMRegistrar * with blk_ram_registrar_init() before submitting I/O requests with the * BDRV_REQ_REGISTERED_BUF flag set. */ typedef struct { BlockBackend *blk; RAMBlockNotifier notifier; bool ok; } BlockRAMRegistrar; void blk_ram_registrar_init(BlockRAMRegistrar *r, BlockBackend *blk); void blk_ram_registrar_destroy(BlockRAMRegistrar *r); /* Have all RAMBlocks been registered successfully? */ static inline bool blk_ram_registrar_ok(BlockRAMRegistrar *r) { return r->ok; } #endif /* BLOCK_RAM_REGISTRAR_H */