Skip to content

Commit

Permalink
selftest: move seek_to_smaps_entry() out of mlock2-tests.c
Browse files Browse the repository at this point in the history
Function seek_to_smaps_entry() can be useful for other selftest
functionalities, so move it out to header file.

Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Simon Guo <[email protected]>
Cc: Shuah Khan <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: "Kirill A. Shutemov" <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Eric B Munson <[email protected]>
Cc: Simon Guo <[email protected]>
Cc: Mel Gorman <[email protected]>
Cc: Alexey Klimov <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Thierry Reding <[email protected]>
Cc: Mike Kravetz <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
justdoitqd authored and torvalds committed Oct 8, 2016
1 parent 1448d4d commit d5aed9c
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 42 deletions.
42 changes: 0 additions & 42 deletions tools/testing/selftests/vm/mlock2-tests.c
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
#define _GNU_SOURCE
#include <sys/mman.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>
Expand Down Expand Up @@ -119,46 +117,6 @@ static uint64_t get_kpageflags(unsigned long pfn)
return flags;
}

static FILE *seek_to_smaps_entry(unsigned long addr)
{
FILE *file;
char *line = NULL;
size_t size = 0;
unsigned long start, end;
char perms[5];
unsigned long offset;
char dev[32];
unsigned long inode;
char path[BUFSIZ];

file = fopen("/proc/self/smaps", "r");
if (!file) {
perror("fopen smaps");
_exit(1);
}

while (getline(&line, &size, file) > 0) {
if (sscanf(line, "%lx-%lx %s %lx %s %lu %s\n",
&start, &end, perms, &offset, dev, &inode, path) < 6)
goto next;

if (start <= addr && addr < end)
goto out;

next:
free(line);
line = NULL;
size = 0;
}

fclose(file);
file = NULL;

out:
free(line);
return file;
}

#define VMFLAGS "VmFlags:"

static bool is_vmflag_set(unsigned long addr, const char *vmflag)
Expand Down
42 changes: 42 additions & 0 deletions tools/testing/selftests/vm/mlock2.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#include <syscall.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>

#ifndef MLOCK_ONFAULT
#define MLOCK_ONFAULT 1
Expand All @@ -18,3 +20,43 @@ static int mlock2_(void *start, size_t len, int flags)
return -1;
#endif
}

static FILE *seek_to_smaps_entry(unsigned long addr)
{
FILE *file;
char *line = NULL;
size_t size = 0;
unsigned long start, end;
char perms[5];
unsigned long offset;
char dev[32];
unsigned long inode;
char path[BUFSIZ];

file = fopen("/proc/self/smaps", "r");
if (!file) {
perror("fopen smaps");
_exit(1);
}

while (getline(&line, &size, file) > 0) {
if (sscanf(line, "%lx-%lx %s %lx %s %lu %s\n",
&start, &end, perms, &offset, dev, &inode, path) < 6)
goto next;

if (start <= addr && addr < end)
goto out;

next:
free(line);
line = NULL;
size = 0;
}

fclose(file);
file = NULL;

out:
free(line);
return file;
}

0 comments on commit d5aed9c

Please sign in to comment.