getdents: rewrite syscall handling completely

The inline asm has many problems, but rather than attempt to fix
them, just use syscall() for everyone.  This allows us to drop the
i386-specific checks and have the tests run on all arches.

Further, add a layer between the kernel and the dirent struct that
the tests uses.  The kernel packs the results, so we need to expand
the raw buffer returned by the kernel into the userland structs we
pass around.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
cpuid: add common header

Add a helper function for people to execute the cpuid asm code.
This takes care of all the ugly asm issues (such as PIC/ebx).

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
sched_getaffinity: cleanup format

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
get_mempolicy: cleanup format

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
sched_getaffinity: remove unused testcase

Garrett has added a case for testing non-existed pid parameter, so I'm
removing the old buggy one.

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
get_mempolicy: enable libnuma API == 2

This patch enables get_mempolicy01 test when libnuma API version is 2.

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
syscalls/mbind01: cleanup format

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
syscalls/mbind01: enable libnuma API == 2

this patch enables mbind01 test on systems with libnuma API version == 2

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
numa-related cleanup

1. remove get_mempolicy01 and mbind01 from TODO list
2. no one uses numa_helpers.h now, remove it.

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
mm/oom: add oom control check for memcg

upstream commit: 9490ff2 implements OOM notifier using cgroup
notification API, which allows applications to be notified when OOM
happens in memory cgroups. This patch adds oom control checking when
executing oom tests.

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
get_mempolicy: fix unexpected success in negative test

on ia64 platform, a negative testcase will success unexpectedly due to
addr 0 is not an invalid address. This patch fixes this issue.

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
move testfrmw to a common directory

testfrmw has many dups, so move it to a common directory.

Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
mm/swapping01: new testcase

swapping01 - first time swap use results in heavy swapping

This case is used for testing upstream commit: 50a1598.

The upstream commit fixed a issue on s390/x platform that heavy
swapping might occur in some condition, however since the patch
was quite general, this testcase will be run on all supported
platforms to ensure no regression been introduced.

Details of the upstream fix:
On x86 a page without a mapper is by definition not referenced / old.
The s390 architecture keeps the reference bit in the storage key and
the current code will check the storage key for page without a mapper.
This leads to an interesting effect: the first time an s390 system
needs to write pages to swap it only finds referenced pages. This
causes a lot of pages to get added and written to the swap device.
To avoid this behaviour change page_referenced to query the storage
key only if there is a mapper of the page.

Test Strategy:
Try to allocate memory which size is slightly larger than current
available memory. After allocation done, continue loop for a while
and calculate the used swap size. The used swap size should be small
enough, else it indicates that heavy swapping is occured unexpectedly.

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
Reviewed-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
mm: cleanup headers

This patch does some clean-ups under mem/ dir:

1) change #include "../include/mem.h" to #include "mem.h"
2) sort all headers properly

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
Tested-by: Caspar Zhang <caspar@casparzhang.com>
hugetlb/hugemmap04: check after hugepage allocated

This patch moves nr_hugepage check after hugepage allocated. Else the
test would never run due to init nr_hugepage == 0.

Signed-off-by: Caspar Zhang <caspar@casparzhang.com>
expand gitignore coverage

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
sched_getparam: code cleanups

Cleanup the coding style.

Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
sched_getscheduler: code cleanups

Cleanup the code.

Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
sched_getparam:sched_getscheduler: fix 6-1 and 7-1

POSIX:
[EPERM]
    The requesting process does not have permission to obtain the
scheduling parameters of the specified process.

But Linux doesn't check the PERM.
And it's no definition that WHO hasn't permission to get
the param or scheduler of which process.

So, if the operation succeeds , return UNRESOLVED
but not FAIL.

Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>
mmstress: make shared global variables volatile

Synchronization of threads depends on shared global variable.
With gcc version 4.6.2 this test spins forever on:
     while (wait_thread)
         sched_yield();

Make global shared variables volatile, so each thread
sees current value.

See also:
Bug 36081 - gcc optimizations and threads (pthread)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36081

Signed-off-by: Jan Stancek <jstancek@redhat.com>
Signed-off-by: Wanlong Gao <gaowanlong@cn.fujitsu.com>