On Fri, Apr 08, 2016 at 03:59:17PM +0800, Fei Jie wrote: > * tests/mlockall.c: New file. > * tests/mlockall.test: New test. > * tests/.gitignore: Add mlockall. > * tests/Makefile.am (check_PROGRAMS): Likewise. > (DECODER_TESTS): Add mlockall.test. > --- > tests/.gitignore | 1 + > tests/Makefile.am | 2 ++ > tests/mlockall.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > tests/mlockall.test | 6 ++++++ > 4 files changed, 57 insertions(+) > create mode 100644 tests/mlockall.c > create mode 100755 tests/mlockall.test > > diff --git a/tests/.gitignore b/tests/.gitignore > index 9ef0c03..d3ff1de 100644 > --- a/tests/.gitignore > +++ b/tests/.gitignore > @@ -79,6 +79,7 @@ mincore > mkdirat > mknod > mlock2 > +mlockall > mmap > mmap64 > mmsg > diff --git a/tests/Makefile.am b/tests/Makefile.am > index 7cd3991..9f4371f 100644 > --- a/tests/Makefile.am > +++ b/tests/Makefile.am > @@ -128,6 +128,7 @@ check_PROGRAMS = \ > mkdirat \ > mknod \ > mlock2 \ > + mlockall \ > mmap \ > mmap64 \ > mmsg \ > @@ -327,6 +328,7 @@ DECODER_TESTS = \ > mkdirat.test \ > mknod.test \ > mlock2.test \ > + mlockall.test \ > mmap.test \ > mmap64.test \ > mmsg.test \ > diff --git a/tests/mlockall.c b/tests/mlockall.c > new file mode 100644 > index 0000000..8d0c0a3 > --- /dev/null > +++ b/tests/mlockall.c > @@ -0,0 +1,48 @@ > +#include "tests.h" > +#include <sys/syscall.h> > + > +#ifdef __NR_mlockall > + > +# include <errno.h> > +# include <stdio.h> > +# include <sys/mman.h> > +# include <errno.h> > +# include <unistd.h> > + > +# define UNKNOWN_FLAG 0 > + > +int > +main(void) > +{ > + int rc = syscall(__NR_mlockall, UNKNOWN_FLAG); > + printf("mlockall(%d) = %d EINVAL (%m)\n", > + UNKNOWN_FLAG, rc); > + > + const char *errno_text; > + if((syscall(__NR_mlockall, MCL_CURRENT)) == -1) { > + switch (errno) { > + case ENOSYS: > + errno_text = "ENOSYS"; > + break; > + case ENOMEM: > + errno_text = "ENOMEM"; > + break; > + default: > + errno_text = "EPERM"; > + } > + printf("mlockall(MCL_CURRENT) = -1 %s (%m)\n", > + errno_text); > + } else { > + puts("mlockall(MCL_CURRENT) = 0"); > + munlockall(); > + } > + > + puts("+++ exited with 0 +++"); > + return 0; > +} > + > +#else > + > +SKIP_MAIN_UNDEFINED("__NR_mlockall") > + > +#endif
No need to use syscall wrapper, mlockall wrapper from libc is OK. mlockall is not expected to fail with ENOSYS. I've committed a simpler test instead. -- ldv
pgpPXNWZ40K5l.pgp
Description: PGP signature
------------------------------------------------------------------------------ Find and fix application performance issues faster with Applications Manager Applications Manager provides deep performance insights into multiple tiers of your business applications. It resolves application problems quickly and reduces your MTTR. Get your free trial! http://pubads.g.doubleclick.net/ gampad/clk?id=1444514301&iu=/ca-pub-7940484522588532
_______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel