Message ID | 20241114011310.3615-23-philmd@linaro.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | exec: Build up 'cputlb.h' and 'ram_addr.h' headers | expand |
On 11/13/24 17:13, Philippe Mathieu-Daudé wrote: > Move methods related to the ram_addr_t type to > the specific "exec/ram_addr.h" header. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > --- > include/exec/cpu-common.h | 56 +------------------------------- > include/exec/ram_addr.h | 56 ++++++++++++++++++++++++++++++++ > include/exec/translation-block.h | 2 +- > 3 files changed, 58 insertions(+), 56 deletions(-) > > diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h > index 638dc806a5..b790202c56 100644 > --- a/include/exec/cpu-common.h > +++ b/include/exec/cpu-common.h > @@ -54,61 +54,7 @@ enum device_endian { > #define DEVICE_HOST_ENDIAN DEVICE_LITTLE_ENDIAN > #endif > > -/* address in the RAM (different from a physical address) */ > -#if defined(CONFIG_XEN_BACKEND) > -typedef uint64_t ram_addr_t; > -# define RAM_ADDR_MAX UINT64_MAX > -# define RAM_ADDR_FMT "%" PRIx64 > -#else > -typedef uintptr_t ram_addr_t; > -# define RAM_ADDR_MAX UINTPTR_MAX > -# define RAM_ADDR_FMT "%" PRIxPTR > -#endif > - > -/* memory API */ > - > -void qemu_ram_remap(ram_addr_t addr, ram_addr_t length); > -/* This should not be used by devices. */ > -ram_addr_t qemu_ram_addr_from_host(void *ptr); > -ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); > -RAMBlock *qemu_ram_block_by_name(const char *name); > - > -/* > - * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock. > - * > - * @ptr: The host pointer to translate. > - * @round_offset: Whether to round the result offset down to a target page > - * @offset: Will be set to the offset within the returned RAMBlock. > - * > - * Returns: RAMBlock (or NULL if not found) > - * > - * By the time this function returns, the returned pointer is not protected > - * by RCU anymore. If the caller is not within an RCU critical section and > - * does not hold the BQL, it must have other means of protecting the > - * pointer, such as a reference to the memory region that owns the RAMBlock. > - */ > -RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset, > - ram_addr_t *offset); > -ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host); > -void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *dev); > -void qemu_ram_unset_idstr(RAMBlock *block); > -const char *qemu_ram_get_idstr(RAMBlock *rb); > -void *qemu_ram_get_host_addr(RAMBlock *rb); > -ram_addr_t qemu_ram_get_offset(RAMBlock *rb); > -ram_addr_t qemu_ram_get_used_length(RAMBlock *rb); > -ram_addr_t qemu_ram_get_max_length(RAMBlock *rb); > -bool qemu_ram_is_shared(RAMBlock *rb); > -bool qemu_ram_is_noreserve(RAMBlock *rb); > -bool qemu_ram_is_uf_zeroable(RAMBlock *rb); > -void qemu_ram_set_uf_zeroable(RAMBlock *rb); > -bool qemu_ram_is_migratable(RAMBlock *rb); > -void qemu_ram_set_migratable(RAMBlock *rb); > -void qemu_ram_unset_migratable(RAMBlock *rb); > -bool qemu_ram_is_named_file(RAMBlock *rb); > -int qemu_ram_get_fd(RAMBlock *rb); > - > -size_t qemu_ram_pagesize(RAMBlock *block); > -size_t qemu_ram_pagesize_largest(void); > +#include "exec/ram_addr.h" > > /** > * cpu_address_space_init: > diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h > index 80f6dc7564..e0620ddb03 100644 > --- a/include/exec/ram_addr.h > +++ b/include/exec/ram_addr.h > @@ -21,6 +21,62 @@ > > #ifndef CONFIG_USER_ONLY > > +/* address in the RAM (different from a physical address) */ > +#if defined(CONFIG_XEN_BACKEND) > +typedef uint64_t ram_addr_t; > +# define RAM_ADDR_MAX UINT64_MAX > +# define RAM_ADDR_FMT "%" PRIx64 > +#else > +typedef uintptr_t ram_addr_t; > +# define RAM_ADDR_MAX UINTPTR_MAX > +# define RAM_ADDR_FMT "%" PRIxPTR > +#endif > + > +/* memory API */ > + > +void qemu_ram_remap(ram_addr_t addr, ram_addr_t length); > +/* This should not be used by devices. */ > +ram_addr_t qemu_ram_addr_from_host(void *ptr); > +ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); > +RAMBlock *qemu_ram_block_by_name(const char *name); > + > +/* > + * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock. > + * > + * @ptr: The host pointer to translate. > + * @round_offset: Whether to round the result offset down to a target page > + * @offset: Will be set to the offset within the returned RAMBlock. > + * > + * Returns: RAMBlock (or NULL if not found) > + * > + * By the time this function returns, the returned pointer is not protected > + * by RCU anymore. If the caller is not within an RCU critical section and > + * does not hold the BQL, it must have other means of protecting the > + * pointer, such as a reference to the memory region that owns the RAMBlock. > + */ > +RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset, > + ram_addr_t *offset); > +ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host); > +void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *dev); > +void qemu_ram_unset_idstr(RAMBlock *block); > +const char *qemu_ram_get_idstr(RAMBlock *rb); > +void *qemu_ram_get_host_addr(RAMBlock *rb); > +ram_addr_t qemu_ram_get_offset(RAMBlock *rb); > +ram_addr_t qemu_ram_get_used_length(RAMBlock *rb); > +ram_addr_t qemu_ram_get_max_length(RAMBlock *rb); > +bool qemu_ram_is_shared(RAMBlock *rb); > +bool qemu_ram_is_noreserve(RAMBlock *rb); > +bool qemu_ram_is_uf_zeroable(RAMBlock *rb); > +void qemu_ram_set_uf_zeroable(RAMBlock *rb); > +bool qemu_ram_is_migratable(RAMBlock *rb); > +void qemu_ram_set_migratable(RAMBlock *rb); > +void qemu_ram_unset_migratable(RAMBlock *rb); > +bool qemu_ram_is_named_file(RAMBlock *rb); > +int qemu_ram_get_fd(RAMBlock *rb); > + > +size_t qemu_ram_pagesize(RAMBlock *block); > +size_t qemu_ram_pagesize_largest(void); > + > bool ramblock_is_pmem(RAMBlock *rb); > > long qemu_minrampagesize(void); > diff --git a/include/exec/translation-block.h b/include/exec/translation-block.h > index b99afb0077..9c4757882c 100644 > --- a/include/exec/translation-block.h > +++ b/include/exec/translation-block.h > @@ -8,7 +8,7 @@ > #define EXEC_TRANSLATION_BLOCK_H > > #include "qemu/thread.h" > -#include "exec/cpu-common.h" > +#include "exec/ram_addr.h" > #include "exec/vaddr.h" > #ifdef CONFIG_USER_ONLY > #include "qemu/interval-tree.h" Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index 638dc806a5..b790202c56 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -54,61 +54,7 @@ enum device_endian { #define DEVICE_HOST_ENDIAN DEVICE_LITTLE_ENDIAN #endif -/* address in the RAM (different from a physical address) */ -#if defined(CONFIG_XEN_BACKEND) -typedef uint64_t ram_addr_t; -# define RAM_ADDR_MAX UINT64_MAX -# define RAM_ADDR_FMT "%" PRIx64 -#else -typedef uintptr_t ram_addr_t; -# define RAM_ADDR_MAX UINTPTR_MAX -# define RAM_ADDR_FMT "%" PRIxPTR -#endif - -/* memory API */ - -void qemu_ram_remap(ram_addr_t addr, ram_addr_t length); -/* This should not be used by devices. */ -ram_addr_t qemu_ram_addr_from_host(void *ptr); -ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); -RAMBlock *qemu_ram_block_by_name(const char *name); - -/* - * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock. - * - * @ptr: The host pointer to translate. - * @round_offset: Whether to round the result offset down to a target page - * @offset: Will be set to the offset within the returned RAMBlock. - * - * Returns: RAMBlock (or NULL if not found) - * - * By the time this function returns, the returned pointer is not protected - * by RCU anymore. If the caller is not within an RCU critical section and - * does not hold the BQL, it must have other means of protecting the - * pointer, such as a reference to the memory region that owns the RAMBlock. - */ -RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset, - ram_addr_t *offset); -ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host); -void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *dev); -void qemu_ram_unset_idstr(RAMBlock *block); -const char *qemu_ram_get_idstr(RAMBlock *rb); -void *qemu_ram_get_host_addr(RAMBlock *rb); -ram_addr_t qemu_ram_get_offset(RAMBlock *rb); -ram_addr_t qemu_ram_get_used_length(RAMBlock *rb); -ram_addr_t qemu_ram_get_max_length(RAMBlock *rb); -bool qemu_ram_is_shared(RAMBlock *rb); -bool qemu_ram_is_noreserve(RAMBlock *rb); -bool qemu_ram_is_uf_zeroable(RAMBlock *rb); -void qemu_ram_set_uf_zeroable(RAMBlock *rb); -bool qemu_ram_is_migratable(RAMBlock *rb); -void qemu_ram_set_migratable(RAMBlock *rb); -void qemu_ram_unset_migratable(RAMBlock *rb); -bool qemu_ram_is_named_file(RAMBlock *rb); -int qemu_ram_get_fd(RAMBlock *rb); - -size_t qemu_ram_pagesize(RAMBlock *block); -size_t qemu_ram_pagesize_largest(void); +#include "exec/ram_addr.h" /** * cpu_address_space_init: diff --git a/include/exec/ram_addr.h b/include/exec/ram_addr.h index 80f6dc7564..e0620ddb03 100644 --- a/include/exec/ram_addr.h +++ b/include/exec/ram_addr.h @@ -21,6 +21,62 @@ #ifndef CONFIG_USER_ONLY +/* address in the RAM (different from a physical address) */ +#if defined(CONFIG_XEN_BACKEND) +typedef uint64_t ram_addr_t; +# define RAM_ADDR_MAX UINT64_MAX +# define RAM_ADDR_FMT "%" PRIx64 +#else +typedef uintptr_t ram_addr_t; +# define RAM_ADDR_MAX UINTPTR_MAX +# define RAM_ADDR_FMT "%" PRIxPTR +#endif + +/* memory API */ + +void qemu_ram_remap(ram_addr_t addr, ram_addr_t length); +/* This should not be used by devices. */ +ram_addr_t qemu_ram_addr_from_host(void *ptr); +ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); +RAMBlock *qemu_ram_block_by_name(const char *name); + +/* + * Translates a host ptr back to a RAMBlock and an offset in that RAMBlock. + * + * @ptr: The host pointer to translate. + * @round_offset: Whether to round the result offset down to a target page + * @offset: Will be set to the offset within the returned RAMBlock. + * + * Returns: RAMBlock (or NULL if not found) + * + * By the time this function returns, the returned pointer is not protected + * by RCU anymore. If the caller is not within an RCU critical section and + * does not hold the BQL, it must have other means of protecting the + * pointer, such as a reference to the memory region that owns the RAMBlock. + */ +RAMBlock *qemu_ram_block_from_host(void *ptr, bool round_offset, + ram_addr_t *offset); +ram_addr_t qemu_ram_block_host_offset(RAMBlock *rb, void *host); +void qemu_ram_set_idstr(RAMBlock *block, const char *name, DeviceState *dev); +void qemu_ram_unset_idstr(RAMBlock *block); +const char *qemu_ram_get_idstr(RAMBlock *rb); +void *qemu_ram_get_host_addr(RAMBlock *rb); +ram_addr_t qemu_ram_get_offset(RAMBlock *rb); +ram_addr_t qemu_ram_get_used_length(RAMBlock *rb); +ram_addr_t qemu_ram_get_max_length(RAMBlock *rb); +bool qemu_ram_is_shared(RAMBlock *rb); +bool qemu_ram_is_noreserve(RAMBlock *rb); +bool qemu_ram_is_uf_zeroable(RAMBlock *rb); +void qemu_ram_set_uf_zeroable(RAMBlock *rb); +bool qemu_ram_is_migratable(RAMBlock *rb); +void qemu_ram_set_migratable(RAMBlock *rb); +void qemu_ram_unset_migratable(RAMBlock *rb); +bool qemu_ram_is_named_file(RAMBlock *rb); +int qemu_ram_get_fd(RAMBlock *rb); + +size_t qemu_ram_pagesize(RAMBlock *block); +size_t qemu_ram_pagesize_largest(void); + bool ramblock_is_pmem(RAMBlock *rb); long qemu_minrampagesize(void); diff --git a/include/exec/translation-block.h b/include/exec/translation-block.h index b99afb0077..9c4757882c 100644 --- a/include/exec/translation-block.h +++ b/include/exec/translation-block.h @@ -8,7 +8,7 @@ #define EXEC_TRANSLATION_BLOCK_H #include "qemu/thread.h" -#include "exec/cpu-common.h" +#include "exec/ram_addr.h" #include "exec/vaddr.h" #ifdef CONFIG_USER_ONLY #include "qemu/interval-tree.h"
Move methods related to the ram_addr_t type to the specific "exec/ram_addr.h" header. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- include/exec/cpu-common.h | 56 +------------------------------- include/exec/ram_addr.h | 56 ++++++++++++++++++++++++++++++++ include/exec/translation-block.h | 2 +- 3 files changed, 58 insertions(+), 56 deletions(-)