diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2009-10-07 16:32:29 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-08 07:36:39 -0700 |
commit | 31bbf66eaaaf50ba79e50ab7d3c89531b31c0614 (patch) | |
tree | bb96b311a4293649f2f0c9e0870330a94ee7e419 | |
parent | 0c57effe27eb6544eb44d5fac563b7334e3bc771 (diff) |
page-types: introduce checked_open()
This helps merge duplicate code (now and future) and outstand the main
logic.
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
Cc: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | Documentation/vm/page-types.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/Documentation/vm/page-types.c b/Documentation/vm/page-types.c index e46fb5b2107..6bdcc0632c2 100644 --- a/Documentation/vm/page-types.c +++ b/Documentation/vm/page-types.c @@ -214,6 +214,18 @@ static void fatal(const char *x, ...) exit(EXIT_FAILURE); } +int checked_open(const char *pathname, int flags) +{ + int fd = open(pathname, flags); + + if (fd < 0) { + perror(pathname); + exit(EXIT_FAILURE); + } + + return fd; +} + /* * page flag names @@ -534,11 +546,7 @@ static void walk_addr_ranges(void) { int i; - kpageflags_fd = open(PROC_KPAGEFLAGS, O_RDONLY); - if (kpageflags_fd < 0) { - perror(PROC_KPAGEFLAGS); - exit(EXIT_FAILURE); - } + kpageflags_fd = checked_open(PROC_KPAGEFLAGS, O_RDONLY); if (!nr_addr_ranges) add_addr_range(0, ULONG_MAX); @@ -631,11 +639,7 @@ static void parse_pid(const char *str) opt_pid = parse_number(str); sprintf(buf, "/proc/%d/pagemap", opt_pid); - pagemap_fd = open(buf, O_RDONLY); - if (pagemap_fd < 0) { - perror(buf); - exit(EXIT_FAILURE); - } + pagemap_fd = checked_open(buf, O_RDONLY); sprintf(buf, "/proc/%d/maps", opt_pid); file = fopen(buf, "r"); |