1d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#include "tests.h"
2d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#include <asm/unistd.h>
3d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
4d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#if defined __NR_swapon && defined __NR_swapoff
5d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
6d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# include <stdio.h>
7d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# include <sys/swap.h>
8d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes# include <unistd.h>
9d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
10d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesint
11d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughesmain(void)
12d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes{
13d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	static const char sample[] = "swap.sample";
14d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	long rc;
15d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
16d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	rc = syscall(__NR_swapon, sample, 0);
17d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	printf("swapon(\"%s\", %s) = %ld %s (%m)\n",
18d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       sample, "0", rc, errno2name());
19d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
20d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	rc = syscall(__NR_swapon, sample, 42);
21d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	printf("swapon(\"%s\", %s) = %ld %s (%m)\n",
22d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       sample, "42", rc, errno2name());
23d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
24d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	rc = syscall(__NR_swapon, sample, SWAP_FLAG_PREFER);
25d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	printf("swapon(\"%s\", %s) = %ld %s (%m)\n",
26d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       sample, "SWAP_FLAG_PREFER|0", rc, errno2name());
27d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
28d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	rc = syscall(__NR_swapon, sample, SWAP_FLAG_PREFER | 42);
29d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	printf("swapon(\"%s\", %s) = %ld %s (%m)\n",
30d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       sample, "SWAP_FLAG_PREFER|42", rc, errno2name());
31d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
32d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	rc = syscall(__NR_swapon, sample, -1L);
33d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	printf("swapon(\"%s\", %s) = %ld %s (%m)\n",
34d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       sample,
35d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       "SWAP_FLAG_PREFER|SWAP_FLAG_DISCARD|SWAP_FLAG_DISCARD_ONCE"
36d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       "|SWAP_FLAG_DISCARD_PAGES|0xfff80000|32767",
37d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       rc, errno2name());
38d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
39d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	rc = syscall(__NR_swapoff, sample);
40d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	printf("swapoff(\"%s\") = %ld %s (%m)\n",
41d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	       sample, rc, errno2name());
42d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
43d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	puts("+++ exited with 0 +++");
44d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes	return 0;
45d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes}
46d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
47d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#else
48d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
49d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott HughesSKIP_MAIN_UNDEFINED("__NR_swapon && __NR_swapoff")
50d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes
51d35df493b4e7684c50d2d2fa032ee3a7ac228009Elliott Hughes#endif
52