kexec-tools: Use generic /proc/iomem code (x86_64)

This patch modifies the x86_64-specific code to use the new generic code.

Signed-off-by: Magnus Damm <[EMAIL PROTECTED]>
---

 kexec/arch/x86_64/crashdump-x86_64.c |   63 ++++------------------------------
 1 file changed, 8 insertions(+), 55 deletions(-)

--- 0006/kexec/arch/x86_64/crashdump-x86_64.c
+++ work/kexec/arch/x86_64/crashdump-x86_64.c   2006-11-17 16:42:01.000000000 
+0900
@@ -58,41 +58,16 @@ static int exclude_crash_reserve_region(
  * store in kexec_info */
 static int get_kernel_paddr(struct kexec_info *info)
 {
-       const char iomem[]= "/proc/iomem";
-       char line[MAX_LINE];
-       FILE *fp;
-       unsigned long long start, end;
-
-       fp = fopen(iomem, "r");
-       if (!fp) {
-               fprintf(stderr, "Cannot open %s: %s\n", iomem, strerror(errno));
-               return -1;
-       }
-       while(fgets(line, sizeof(line), fp) != 0) {
-               char *str;
-               int consumed, count;
-               count = sscanf(line, "%Lx-%Lx : %n",
-                       &start, &end, &consumed);
-               if (count != 2)
-                       continue;
-               str = line + consumed;
-#ifdef DEBUG
-               printf("%016Lx-%016Lx : %s",
-                       start, end, str);
-#endif
-               if (memcmp(str, "Kernel code\n", 12) == 0) {
-                       info->kern_paddr_start = start;
+       uint64_t start;
 
+       if (kexec_iomem_single("Kernel code\n", &start, NULL) == 0) {
+               info->kern_paddr_start = start;
 #ifdef DEBUG
-                       printf("kernel load physical addr start = 0x%016Lx\n",
-                                       start);
+               printf("kernel load physical addr start = 0x%016Lx\n", start);
 #endif
-                       fclose(fp);
-                       return 0;
-               }
        }
+
        fprintf(stderr, "Cannot determine kernel physical load addr\n");
-       fclose(fp);
        return -1;
 }
 
@@ -678,30 +653,8 @@ int load_crashdump_segments(struct kexec
 
 int is_crashkernel_mem_reserved(void)
 {
-       const char iomem[]= "/proc/iomem";
-       char line[MAX_LINE];
-       FILE *fp;
-       unsigned long long start, end;
-       char *str;
-       int consumed;
-       int count;
-
-       fp = fopen(iomem, "r");
-       if (!fp)
-               die("Cannot open /proc/iomem");
+       uint64_t start, end;
 
-       while(fgets(line, sizeof(line), fp) != 0) {
-               count = sscanf(line, "%Lx-%Lx : %n", &start, &end, &consumed);
-               if (count != 2)
-                       continue;
-               str = line + consumed;
-               if (memcmp(str, "Crash kernel\n", 13) == 0)
-                       break;
-       }
-
-       fclose(fp);
-       if (!memcmp(str, "Crash kernel\n", 13) == 0 || (start == end))
-               return 0;
-       else
-               return 1;
+       return kexec_iomem_single("Crash kernel\n", &start, &end) == 0 ?
+         (start != end) : 0;
 }
_______________________________________________
fastboot mailing list
fastboot@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/fastboot

Reply via email to