Move RAMBlock and ram_list to ram_addr.h
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Message-Id: <1439547914-18249-1-git-send-email-dgilbert@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
		
							parent
							
								
									e0c382113f
								
							
						
					
					
						commit
						3c9589e180
					
				| 
						 | 
				
			
			@ -266,44 +266,6 @@ CPUArchState *cpu_copy(CPUArchState *env);
 | 
			
		|||
 | 
			
		||||
#if !defined(CONFIG_USER_ONLY)
 | 
			
		||||
 | 
			
		||||
/* memory API */
 | 
			
		||||
 | 
			
		||||
typedef struct RAMBlock RAMBlock;
 | 
			
		||||
 | 
			
		||||
struct RAMBlock {
 | 
			
		||||
    struct rcu_head rcu;
 | 
			
		||||
    struct MemoryRegion *mr;
 | 
			
		||||
    uint8_t *host;
 | 
			
		||||
    ram_addr_t offset;
 | 
			
		||||
    ram_addr_t used_length;
 | 
			
		||||
    ram_addr_t max_length;
 | 
			
		||||
    void (*resized)(const char*, uint64_t length, void *host);
 | 
			
		||||
    uint32_t flags;
 | 
			
		||||
    /* Protected by iothread lock.  */
 | 
			
		||||
    char idstr[256];
 | 
			
		||||
    /* RCU-enabled, writes protected by the ramlist lock */
 | 
			
		||||
    QLIST_ENTRY(RAMBlock) next;
 | 
			
		||||
    int fd;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static inline void *ramblock_ptr(RAMBlock *block, ram_addr_t offset)
 | 
			
		||||
{
 | 
			
		||||
    assert(offset < block->used_length);
 | 
			
		||||
    assert(block->host);
 | 
			
		||||
    return (char *)block->host + offset;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
typedef struct RAMList {
 | 
			
		||||
    QemuMutex mutex;
 | 
			
		||||
    /* Protected by the iothread lock.  */
 | 
			
		||||
    unsigned long *dirty_memory[DIRTY_MEMORY_NUM];
 | 
			
		||||
    RAMBlock *mru_block;
 | 
			
		||||
    /* RCU-enabled, writes protected by the ramlist lock. */
 | 
			
		||||
    QLIST_HEAD(, RAMBlock) blocks;
 | 
			
		||||
    uint32_t version;
 | 
			
		||||
} RAMList;
 | 
			
		||||
extern RAMList ram_list;
 | 
			
		||||
 | 
			
		||||
/* Flags stored in the low bits of the TLB virtual address.  These are
 | 
			
		||||
   defined so that fast path ram access is all zeros.  */
 | 
			
		||||
/* Zero if TLB entry is valid.  */
 | 
			
		||||
| 
						 | 
				
			
			@ -316,9 +278,6 @@ extern RAMList ram_list;
 | 
			
		|||
 | 
			
		||||
void dump_exec_info(FILE *f, fprintf_function cpu_fprintf);
 | 
			
		||||
void dump_opcount_info(FILE *f, fprintf_function cpu_fprintf);
 | 
			
		||||
ram_addr_t last_ram_offset(void);
 | 
			
		||||
void qemu_mutex_lock_ramlist(void);
 | 
			
		||||
void qemu_mutex_unlock_ramlist(void);
 | 
			
		||||
#endif /* !CONFIG_USER_ONLY */
 | 
			
		||||
 | 
			
		||||
int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,46 @@
 | 
			
		|||
#ifndef CONFIG_USER_ONLY
 | 
			
		||||
#include "hw/xen/xen.h"
 | 
			
		||||
 | 
			
		||||
typedef struct RAMBlock RAMBlock;
 | 
			
		||||
 | 
			
		||||
struct RAMBlock {
 | 
			
		||||
    struct rcu_head rcu;
 | 
			
		||||
    struct MemoryRegion *mr;
 | 
			
		||||
    uint8_t *host;
 | 
			
		||||
    ram_addr_t offset;
 | 
			
		||||
    ram_addr_t used_length;
 | 
			
		||||
    ram_addr_t max_length;
 | 
			
		||||
    void (*resized)(const char*, uint64_t length, void *host);
 | 
			
		||||
    uint32_t flags;
 | 
			
		||||
    /* Protected by iothread lock.  */
 | 
			
		||||
    char idstr[256];
 | 
			
		||||
    /* RCU-enabled, writes protected by the ramlist lock */
 | 
			
		||||
    QLIST_ENTRY(RAMBlock) next;
 | 
			
		||||
    int fd;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static inline void *ramblock_ptr(RAMBlock *block, ram_addr_t offset)
 | 
			
		||||
{
 | 
			
		||||
    assert(offset < block->used_length);
 | 
			
		||||
    assert(block->host);
 | 
			
		||||
    return (char *)block->host + offset;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
typedef struct RAMList {
 | 
			
		||||
    QemuMutex mutex;
 | 
			
		||||
    /* Protected by the iothread lock.  */
 | 
			
		||||
    unsigned long *dirty_memory[DIRTY_MEMORY_NUM];
 | 
			
		||||
    RAMBlock *mru_block;
 | 
			
		||||
    /* RCU-enabled, writes protected by the ramlist lock. */
 | 
			
		||||
    QLIST_HEAD(, RAMBlock) blocks;
 | 
			
		||||
    uint32_t version;
 | 
			
		||||
} RAMList;
 | 
			
		||||
extern RAMList ram_list;
 | 
			
		||||
 | 
			
		||||
ram_addr_t last_ram_offset(void);
 | 
			
		||||
void qemu_mutex_lock_ramlist(void);
 | 
			
		||||
void qemu_mutex_unlock_ramlist(void);
 | 
			
		||||
 | 
			
		||||
ram_addr_t qemu_ram_alloc_from_file(ram_addr_t size, MemoryRegion *mr,
 | 
			
		||||
                                    bool share, const char *mem_path,
 | 
			
		||||
                                    Error **errp);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue