[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC][PATCH 08/16 v6] target-i386: add API to get dump
From: |
Jan Kiszka |
Subject: |
Re: [Qemu-devel] [RFC][PATCH 08/16 v6] target-i386: add API to get dump info |
Date: |
Tue, 14 Feb 2012 18:39:29 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666 |
On 2012-02-09 04:26, Wen Congyang wrote:
> Dump info contains: endian, class and architecture. The next
> patch will use these information to create vmcore.
>
> Signed-off-by: Wen Congyang <address@hidden>
> ---
> cpu-all.h | 3 +++
> dump.h | 10 ++++++++++
> target-i386/arch-dump.c | 34 ++++++++++++++++++++++++++++++++++
> 3 files changed, 47 insertions(+), 0 deletions(-)
> create mode 100644 dump.h
>
> diff --git a/cpu-all.h b/cpu-all.h
> index 290c43a..268d1f6 100644
> --- a/cpu-all.h
> +++ b/cpu-all.h
> @@ -23,6 +23,7 @@
> #include "qemu-tls.h"
> #include "cpu-common.h"
> #include "memory_mapping.h"
> +#include "dump.h"
>
> /* some important defines:
> *
> @@ -531,11 +532,13 @@ int cpu_write_elf64_note(int fd, CPUState *env, int
> cpuid,
> int cpu_write_elf32_note(int fd, CPUState *env, int cpuid,
> target_phys_addr_t *offset);
> int cpu_add_extra_memory_mapping(MemoryMappingList *list);
> +int cpu_get_dump_info(ArchDumpInfo *info);
> #else
> #define cpu_get_memory_mapping(list, env)
> #define cpu_write_elf64_note(fd, env, cpuid, offset) ({ -1; })
> #define cpu_write_elf32_note(fd, env, cpuid, offset) ({ -1; })
> #define cpu_add_extra_memory_mapping(list) ({ 0; })
> +#define cpu_get_dump_info(info) ({ -1; })
Please use static inlines where possible (applies to earlier patches as
well).
> #endif
>
> #endif /* CPU_ALL_H */
> diff --git a/dump.h b/dump.h
> new file mode 100644
> index 0000000..a36468b
> --- /dev/null
> +++ b/dump.h
> @@ -0,0 +1,10 @@
License header missing.
> +#ifndef DUMP_H
> +#define DUMP_H
> +
> +typedef struct ArchDumpInfo {
> + int d_machine; /* Architecture */
> + int d_endian; /* ELFDATA2LSB or ELFDATA2MSB */
> + int d_class; /* ELFCLASS32 or ELFCLASS64 */
> +} ArchDumpInfo;
> +
> +#endif
> diff --git a/target-i386/arch-dump.c b/target-i386/arch-dump.c
> index d96f6ae..92a53bc 100644
> --- a/target-i386/arch-dump.c
> +++ b/target-i386/arch-dump.c
> @@ -15,6 +15,7 @@
>
> #include "cpu.h"
> #include "cpu-all.h"
> +#include "dump.h"
> #include "monitor.h"
>
> /* PAE Paging or IA-32e Paging */
> @@ -538,3 +539,36 @@ int cpu_add_extra_memory_mapping(MemoryMappingList *list)
> #endif
> return 0;
> }
> +
> +int cpu_get_dump_info(ArchDumpInfo *info)
> +{
> + bool lma = false;
> + RAMBlock *block;
> +
> +#ifdef TARGET_X86_64
> + lma = !!(first_cpu->hflags & HF_LMA_MASK);
> +#endif
> +
> + if (lma) {
> + info->d_machine = EM_X86_64;
> + } else {
> + info->d_machine = EM_386;
> + }
> + info->d_endian = ELFDATA2LSB;
> +
> + if (lma) {
> + info->d_class = ELFCLASS64;
> + } else {
> + info->d_class = ELFCLASS32;
> + }
> +
> + QLIST_FOREACH(block, &ram_list.blocks, next) {
> + if (!lma && (block->offset + block->length > UINT_MAX)) {
> + /* The memory size is greater than 4G */
> + info->d_class = ELFCLASS32;
Is that correct, or did you rather mean ELFCLASS64?
> + break;
> + }
> + }
> +
> + return 0;
> +}
Jan
--
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux
- Re: [Qemu-devel] [RFC][PATCH 06/16 v6] target-i386: Add API to write elf notes to core file, (continued)
- [Qemu-devel] [RFC][PATCH 07/16 v6] target-i386: Add API to add extra memory mapping, Wen Congyang, 2012/02/08
- Re: [Qemu-devel] [RFC][PATCH 07/16 v6] target-i386: Add API to add extra memory mapping, Jan Kiszka, 2012/02/14
- Re: [Qemu-devel] [RFC][PATCH 07/16 v6] target-i386: Add API to add extra memory mapping, Wen Congyang, 2012/02/15
- Re: [Qemu-devel] [RFC][PATCH 07/16 v6] target-i386: Add API to add extra memory mapping, Jan Kiszka, 2012/02/15
- Re: [Qemu-devel] [RFC][PATCH 07/16 v6] target-i386: Add API to add extra memory mapping, Wen Congyang, 2012/02/15
- Re: [Qemu-devel] [RFC][PATCH 07/16 v6] target-i386: Add API to add extra memory mapping, Jan Kiszka, 2012/02/15
- Re: [Qemu-devel] [RFC][PATCH 07/16 v6] target-i386: Add API to add extra memory mapping, Wen Congyang, 2012/02/17
[Qemu-devel] [RFC][PATCH 08/16 v6] target-i386: add API to get dump info, Wen Congyang, 2012/02/08
- Re: [Qemu-devel] [RFC][PATCH 08/16 v6] target-i386: add API to get dump info,
Jan Kiszka <=
Re: [Qemu-devel] [RFC][PATCH 08/16 v6] target-i386: add API to get dump info, Peter Maydell, 2012/02/15
[Qemu-devel] [RFC][PATCH 09/16 v6] introduce a new monitor command 'dump' to dump guest's memory, Wen Congyang, 2012/02/08