[PATCH v2 05/14] Export helpers for bitmap table handling

HATAYAMA Daisuke
2011-10-28T09:48:35Z

sadump-related formats and kdump-compressed format is similar in
structure. In particular, both have exactly the same in bitmap. So
reuse two helper functions, is_on() and is_dumpable(), in sadump
module.

Signed-off-by: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
---

makedumpfile.c | 22 ----------------------
makedumpfile.h | 24 ++++++++++++++++++++++++
2 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/makedumpfile.c b/makedumpfile.c
index 7057009..96faf60 100644
--- a/makedumpfile.c
+++ b/makedumpfile.c
@@ -2543,28 +2543,6 @@ clear_bit_on_2nd_bitmap_for_kernel(unsigned long long pfn)
}

static inline int
-is_on(char *bitmap, int i)
-{
- return bitmap[i>>3] & (1 << (i & 7));
-}
-
-static inline int
-is_dumpable(struct dump_bitmap *bitmap, unsigned long long pfn)
-{
- off_t offset;
- if (pfn == 0 || bitmap->no_block != pfn/PFN_BUFBITMAP) {
- offset = bitmap->offset + BUFSIZE_BITMAP*(pfn/PFN_BUFBITMAP);
- lseek(bitmap->fd, offset, SEEK_SET);
- read(bitmap->fd, bitmap->buf, BUFSIZE_BITMAP);
- if (pfn == 0)
- bitmap->no_block = 0;
- else
- bitmap->no_block = pfn/PFN_BUFBITMAP;
- }
- return is_on(bitmap->buf, pfn%PFN_BUFBITMAP);
-}
-
-static inline int
is_in_segs(unsigned long long paddr)
{
if (info->flag_refiltering) {
diff --git a/makedumpfile.h b/makedumpfile.h
index dee0a68..17ec590 100644
--- a/makedumpfile.h
+++ b/makedumpfile.h
@@ -56,6 +56,8 @@ enum {
FLATMEM
};

+int get_mem_type(void);
+
/*
* Page flags
*
@@ -1244,4 +1246,26 @@ int get_xen_info_ia64(void);
#define get_xen_info_arch(X) FALSE
#endif /* s390x */

+static inline int
+is_on(char *bitmap, int i)
+{
+ return bitmap[i>>3] & (1 << (i & 7));
+}
+
+static inline int
+is_dumpable(struct dump_bitmap *bitmap, unsigned long long pfn)
+{
+ off_t offset;
+ if (pfn == 0 || bitmap->no_block != pfn/PFN_BUFBITMAP) {
+ offset = bitmap->offset + BUFSIZE_BITMAP*(pfn/PFN_BUFBITMAP);
+ lseek(bitmap->fd, offset, SEEK_SET);
+ read(bitmap->fd, bitmap->buf, BUFSIZE_BITMAP);
+ if (pfn == 0)
+ bitmap->no_block = 0;
+ else
+ bitmap->no_block = pfn/PFN_BUFBITMAP;
+ }
+ return is_on(bitmap->buf, pfn%PFN_BUFBITMAP);
+}
+
#endif /* MAKEDUMPFILE_H */