Kexec Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "bhe@redhat.com" <bhe@redhat.com>
To: Atsushi Kumagai <kumagai-atsushi@mxc.nes.nec.co.jp>
Cc: "kexec@lists.infradead.org" <kexec@lists.infradead.org>,
	"vgoyal@redhat.com" <vgoyal@redhat.com>
Subject: Re: [Patch v3 2/7] functions to get crashkernel memory range
Date: Tue, 12 Aug 2014 17:25:30 +0800	[thread overview]
Message-ID: <20140812092530.GA4887@dhcp-16-105.nay.redhat.com> (raw)
In-Reply-To: <0910DD04CBD6DE4193FCF86B9C00BE97246701@BPXM01GP.gisp.nec.co.jp>

On 08/01/14 at 07:32am, Atsushi Kumagai wrote:
> >+ */
> >+int iomem_for_each_line(char *match,
> >+			      int (*callback)(void *data,
> >+					      int nr,
> >+					      char *str,
> >+					      unsigned long base,
> >+					      unsigned long length),
> >+			      void *data)
> >+{
> >+	const char iomem[] = "/proc/iomem";
> >+	char line[BUFSIZE_FGETS];
> >+	FILE *fp;
> >+	unsigned long long start, end, size;
> >+	char *str;
> >+	int consumed;
> >+	int count;
> >+	int nr = 0;
> >+
> >+	fp = fopen(iomem, "r");
> >+	if (!fp) {
> >+		ERRMSG("Cannot open %s\n", iomem);
> >+		exit(1);
> >+	}
> 
> Could you change this to return ERROR and handle it in the
> caller side? It's a coding style of makedumpfile.

Yes, sure. I plan to return nr since nr is initialized to 0. Then it
will cause show_mem_usage() to return FALSE and print the related
failure message.

	fp = fopen(iomem, "r");
        if (!fp) {
                ERRMSG("Cannot open %s\n", iomem);
                return nr;
        } 

> > static struct option longopts[] = {
> > 	{"split", no_argument, NULL, OPT_SPLIT},
> > 	{"reassemble", no_argument, NULL, OPT_REASSEMBLE},
> >diff --git a/makedumpfile.h b/makedumpfile.h
> >index 9402f05..7ffa1ee 100644
> >--- a/makedumpfile.h
> >+++ b/makedumpfile.h
> >@@ -1452,6 +1452,13 @@ extern struct array_table	array_table;
> > extern struct number_table	number_table;
> > extern struct srcfile_table	srcfile_table;
> >
> >+struct memory_range {
> >+        unsigned long long start, end;
> >+};
> >+
> >+#define CRASH_RESERVED_MEM_NR   8
> >+struct memory_range crash_reserved_mem[CRASH_RESERVED_MEM_NR];
> >+int crash_reserved_mem_nr;
> >
> > int readmem(int type_addr, unsigned long long addr, void *bufptr, size_t size);
> > int get_str_osrelease_from_vmlinux(void);
> >--
> >1.8.5.3
> 
> 
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
> 
> 
> Thanks
> Atsushi Kumagai
> 
> >+
> >+	while(fgets(line, sizeof(line), fp) != 0) {
> >+		count = sscanf(line, "%Lx-%Lx : %n", &start, &end, &consumed);
> >+		if (count != 2)
> >+			continue;
> >+		str = line + consumed;
> >+		size = end - start + 1;
> >+		if (!match || memcmp(str, match, strlen(match)) == 0) {
> >+			if (callback
> >+			    && callback(data, nr, str, start, size) < 0) {
> >+				break;
> >+			}
> >+			nr++;
> >+		}
> >+	}
> >+
> >+	fclose(fp);
> >+
> >+	return nr;
> >+}
> >+
> >+static int crashkernel_mem_callback(void *data, int nr,
> >+                                          char *str,
> >+                                          unsigned long base,
> >+                                          unsigned long length)
> >+{
> >+        if (nr >= CRASH_RESERVED_MEM_NR)
> >+                return 1;
> >+
> >+        crash_reserved_mem[nr].start = base;
> >+        crash_reserved_mem[nr].end   = base + length - 1;
> >+        return 0;
> >+}
> >+
> >+int is_crashkernel_mem_reserved(void)
> >+{
> >+        int ret;
> >+
> >+        ret = iomem_for_each_line("Crash kernel\n",
> >+                                        crashkernel_mem_callback, NULL);
> >+        crash_reserved_mem_nr = ret;
> >+
> >+        return !!crash_reserved_mem_nr;
> >+}
> >+

_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  reply	other threads:[~2014-08-12  9:27 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-28  8:19 [Patch v3 0/7] add a new interface to show the memory usage of 1st kernel Baoquan He
2014-07-28  8:20 ` [Patch v3 1/7] initialize pfn_memhole in get_num_dumpable_cyclic Baoquan He
2014-07-28  8:20 ` [Patch v3 2/7] functions to get crashkernel memory range Baoquan He
2014-08-01  7:32   ` Atsushi Kumagai
2014-08-12  9:25     ` bhe [this message]
2014-07-28  8:20 ` [Patch v3 3/7] preparation functions for parsing vmcoreinfo Baoquan He
2014-08-01  7:12   ` Atsushi Kumagai
2014-08-12  9:46     ` bhe
2014-08-12 10:01       ` bhe
2014-08-14  7:37         ` Atsushi Kumagai
2014-08-14  8:15           ` bhe
2014-07-28  8:20 ` [Patch v3 4/7] set vmcoreinfo for kcore Baoquan He
2014-08-01  7:12   ` Atsushi Kumagai
2014-08-12 10:08     ` bhe
2014-07-28  8:20 ` [Patch v3 5/7] prepare the dump loads for kcore analysis Baoquan He
2014-08-01  7:12   ` Atsushi Kumagai
2014-08-12 10:10     ` bhe
2014-07-28  8:20 ` [Patch v3 6/7] implement a function to print the memory usage Baoquan He
2014-07-28  8:20 ` [Patch v3 7/7] add a new interface to show the memory usage of 1st kernel Baoquan He
2014-07-29 12:43   ` Vivek Goyal
2014-07-31  2:32     ` Baoquan He
2014-08-01  7:12   ` Atsushi Kumagai
2014-08-12 10:14     ` bhe
2014-08-21 10:31     ` bhe
2014-08-26  2:28       ` Atsushi Kumagai
2014-08-26  3:22         ` bhe
2014-08-26  6:25           ` Petr Tesarik
2014-08-26 14:12             ` bhe
2014-09-02  6:20               ` Atsushi Kumagai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140812092530.GA4887@dhcp-16-105.nay.redhat.com \
    --to=bhe@redhat.com \
    --cc=kexec@lists.infradead.org \
    --cc=kumagai-atsushi@mxc.nes.nec.co.jp \
    --cc=vgoyal@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox