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