Home | History | Annotate | Download | only in src
      1 /*
      2  * Copyright (c) International Business Machines  Corp., 2009
      3  *
      4  * Authors:
      5  * Mimi Zohar <zohar (at) us.ibm.com>
      6  *
      7  * This program is free software; you can redistribute it and/or
      8  * modify it under the terms of the GNU General Public License as
      9  * published by the Free Software Foundation, version 2 of the
     10  * License.
     11  *
     12  * File: ima_mmap.c
     13  *
     14  * Open and mmap a file and sleep. Another process will open the
     15  * mmapped file in read mode, resulting in a open_writer violation.
     16  */
     17 #include <stdio.h>
     18 #include <string.h>
     19 #include <unistd.h>
     20 #include <sys/stat.h>
     21 #include <sys/mman.h>
     22 #include <fcntl.h>
     23 #include "test.h"
     24 
     25 char *TCID = "ima_mmap";
     26 int TST_TOTAL = 1;
     27 
     28 int main(int argc, char *argv[])
     29 {
     30 	int fd;
     31 	void *file;
     32 	char *filename;
     33 
     34 	if (argc != 2)
     35 		printf("%s: filename\n", argv[1]);
     36 	filename = argv[1];
     37 
     38 	fd = open(filename, O_CREAT | O_RDWR, S_IRWXU);
     39 	if (fd < 0) {
     40 		perror("open");
     41 		return (-1);
     42 	}
     43 
     44 	file = mmap(NULL, 1024, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
     45 	if (file == (void *)-1) {
     46 		perror("mmap");
     47 		return (-1);
     48 	}
     49 	close(fd);
     50 	sleep(30);
     51 	if (munmap(file, 1024) < 0) {
     52 		perror("unmap");
     53 		return (-1);
     54 	}
     55 	tst_exit();
     56 }
     57