1*fa10fed3SAlexey Gladkov /*
2*fa10fed3SAlexey Gladkov * Copyright © 2020 Alexey Gladkov <gladkov.alexey@gmail.com>
3*fa10fed3SAlexey Gladkov *
4*fa10fed3SAlexey Gladkov * Permission to use, copy, modify, and distribute this software for any
5*fa10fed3SAlexey Gladkov * purpose with or without fee is hereby granted, provided that the above
6*fa10fed3SAlexey Gladkov * copyright notice and this permission notice appear in all copies.
7*fa10fed3SAlexey Gladkov *
8*fa10fed3SAlexey Gladkov * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9*fa10fed3SAlexey Gladkov * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10*fa10fed3SAlexey Gladkov * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11*fa10fed3SAlexey Gladkov * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12*fa10fed3SAlexey Gladkov * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13*fa10fed3SAlexey Gladkov * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14*fa10fed3SAlexey Gladkov * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15*fa10fed3SAlexey Gladkov */
16*fa10fed3SAlexey Gladkov #include <assert.h>
17*fa10fed3SAlexey Gladkov #include <stdlib.h>
18*fa10fed3SAlexey Gladkov #include <stdio.h>
19*fa10fed3SAlexey Gladkov #include <sys/mount.h>
20*fa10fed3SAlexey Gladkov #include <sys/types.h>
21*fa10fed3SAlexey Gladkov #include <sys/stat.h>
22*fa10fed3SAlexey Gladkov
main(void)23*fa10fed3SAlexey Gladkov int main(void)
24*fa10fed3SAlexey Gladkov {
25*fa10fed3SAlexey Gladkov struct stat proc_st1, proc_st2;
26*fa10fed3SAlexey Gladkov char procbuff[] = "/tmp/proc.XXXXXX/meminfo";
27*fa10fed3SAlexey Gladkov char procdir1[] = "/tmp/proc.XXXXXX";
28*fa10fed3SAlexey Gladkov char procdir2[] = "/tmp/proc.XXXXXX";
29*fa10fed3SAlexey Gladkov
30*fa10fed3SAlexey Gladkov assert(mkdtemp(procdir1) != NULL);
31*fa10fed3SAlexey Gladkov assert(mkdtemp(procdir2) != NULL);
32*fa10fed3SAlexey Gladkov
33*fa10fed3SAlexey Gladkov assert(!mount("proc", procdir1, "proc", 0, "hidepid=1"));
34*fa10fed3SAlexey Gladkov assert(!mount("proc", procdir2, "proc", 0, "hidepid=2"));
35*fa10fed3SAlexey Gladkov
36*fa10fed3SAlexey Gladkov snprintf(procbuff, sizeof(procbuff), "%s/meminfo", procdir1);
37*fa10fed3SAlexey Gladkov assert(!stat(procbuff, &proc_st1));
38*fa10fed3SAlexey Gladkov
39*fa10fed3SAlexey Gladkov snprintf(procbuff, sizeof(procbuff), "%s/meminfo", procdir2);
40*fa10fed3SAlexey Gladkov assert(!stat(procbuff, &proc_st2));
41*fa10fed3SAlexey Gladkov
42*fa10fed3SAlexey Gladkov umount(procdir1);
43*fa10fed3SAlexey Gladkov umount(procdir2);
44*fa10fed3SAlexey Gladkov
45*fa10fed3SAlexey Gladkov assert(proc_st1.st_dev != proc_st2.st_dev);
46*fa10fed3SAlexey Gladkov
47*fa10fed3SAlexey Gladkov return 0;
48*fa10fed3SAlexey Gladkov }
49