Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Copyright © 2020 Alexey Gladkov <gladkov.alexey@gmail.com>
0003  *
0004  * Permission to use, copy, modify, and distribute this software for any
0005  * purpose with or without fee is hereby granted, provided that the above
0006  * copyright notice and this permission notice appear in all copies.
0007  *
0008  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
0009  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
0010  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
0011  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
0012  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
0013  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
0014  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0015  */
0016 #include <assert.h>
0017 #include <stdlib.h>
0018 #include <stdio.h>
0019 #include <sys/mount.h>
0020 #include <sys/types.h>
0021 #include <sys/stat.h>
0022 
0023 int main(void)
0024 {
0025     struct stat proc_st1, proc_st2;
0026     char procbuff[] = "/tmp/proc.XXXXXX/meminfo";
0027     char procdir1[] = "/tmp/proc.XXXXXX";
0028     char procdir2[] = "/tmp/proc.XXXXXX";
0029 
0030     assert(mkdtemp(procdir1) != NULL);
0031     assert(mkdtemp(procdir2) != NULL);
0032 
0033     assert(!mount("proc", procdir1, "proc", 0, "hidepid=1"));
0034     assert(!mount("proc", procdir2, "proc", 0, "hidepid=2"));
0035 
0036     snprintf(procbuff, sizeof(procbuff), "%s/meminfo", procdir1);
0037     assert(!stat(procbuff, &proc_st1));
0038 
0039     snprintf(procbuff, sizeof(procbuff), "%s/meminfo", procdir2);
0040     assert(!stat(procbuff, &proc_st2));
0041 
0042     umount(procdir1);
0043     umount(procdir2);
0044 
0045     assert(proc_st1.st_dev != proc_st2.st_dev);
0046 
0047     return 0;
0048 }