1*32cad1ffSPhilippe Mathieu-Daudé /* 2*32cad1ffSPhilippe Mathieu-Daudé * BlockBackend RAM Registrar 3*32cad1ffSPhilippe Mathieu-Daudé * 4*32cad1ffSPhilippe Mathieu-Daudé * SPDX-License-Identifier: GPL-2.0-or-later 5*32cad1ffSPhilippe Mathieu-Daudé */ 6*32cad1ffSPhilippe Mathieu-Daudé 7*32cad1ffSPhilippe Mathieu-Daudé #ifndef BLOCK_RAM_REGISTRAR_H 8*32cad1ffSPhilippe Mathieu-Daudé #define BLOCK_RAM_REGISTRAR_H 9*32cad1ffSPhilippe Mathieu-Daudé 10*32cad1ffSPhilippe Mathieu-Daudé #include "exec/ramlist.h" 11*32cad1ffSPhilippe Mathieu-Daudé 12*32cad1ffSPhilippe Mathieu-Daudé /** 13*32cad1ffSPhilippe Mathieu-Daudé * struct BlockRAMRegistrar: 14*32cad1ffSPhilippe Mathieu-Daudé * 15*32cad1ffSPhilippe Mathieu-Daudé * Keeps RAMBlock memory registered with a BlockBackend using 16*32cad1ffSPhilippe Mathieu-Daudé * blk_register_buf() including hotplugged memory. 17*32cad1ffSPhilippe Mathieu-Daudé * 18*32cad1ffSPhilippe Mathieu-Daudé * Emulated devices or other BlockBackend users initialize a BlockRAMRegistrar 19*32cad1ffSPhilippe Mathieu-Daudé * with blk_ram_registrar_init() before submitting I/O requests with the 20*32cad1ffSPhilippe Mathieu-Daudé * BDRV_REQ_REGISTERED_BUF flag set. 21*32cad1ffSPhilippe Mathieu-Daudé */ 22*32cad1ffSPhilippe Mathieu-Daudé typedef struct { 23*32cad1ffSPhilippe Mathieu-Daudé BlockBackend *blk; 24*32cad1ffSPhilippe Mathieu-Daudé RAMBlockNotifier notifier; 25*32cad1ffSPhilippe Mathieu-Daudé bool ok; 26*32cad1ffSPhilippe Mathieu-Daudé } BlockRAMRegistrar; 27*32cad1ffSPhilippe Mathieu-Daudé 28*32cad1ffSPhilippe Mathieu-Daudé void blk_ram_registrar_init(BlockRAMRegistrar *r, BlockBackend *blk); 29*32cad1ffSPhilippe Mathieu-Daudé void blk_ram_registrar_destroy(BlockRAMRegistrar *r); 30*32cad1ffSPhilippe Mathieu-Daudé 31*32cad1ffSPhilippe Mathieu-Daudé /* Have all RAMBlocks been registered successfully? */ blk_ram_registrar_ok(BlockRAMRegistrar * r)32*32cad1ffSPhilippe Mathieu-Daudéstatic inline bool blk_ram_registrar_ok(BlockRAMRegistrar *r) 33*32cad1ffSPhilippe Mathieu-Daudé { 34*32cad1ffSPhilippe Mathieu-Daudé return r->ok; 35*32cad1ffSPhilippe Mathieu-Daudé } 36*32cad1ffSPhilippe Mathieu-Daudé 37*32cad1ffSPhilippe Mathieu-Daudé #endif /* BLOCK_RAM_REGISTRAR_H */ 38