/* * Copyright (c) International Business Machines Corp., 2009 * * Authors: * Mimi Zohar * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation, version 2 of the * License. * * File: ima_mmap.c * * Open and mmap a file and sleep. Another process will open the * mmapped file in read mode, resulting in a open_writer violation. */ #include "tst_test.h" #define SLEEP_AFTER_CLOSE 3 #define MMAPSIZE 1024 static char *filename; static void *file; static int fd; static struct tst_option options[] = { {"f:", &filename, "-f file File to mmap"}, {NULL, NULL, NULL} }; static void cleanup(void) { if (file) SAFE_MUNMAP(file, MMAPSIZE); if (fd > 0) SAFE_CLOSE(fd); } static void run(void) { if (!filename) tst_brk(TBROK, "Usage: %s -f filename", TCID); fd = SAFE_OPEN(filename, O_CREAT | O_RDWR, S_IRWXU); file = SAFE_MMAP(NULL, MMAPSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); SAFE_CLOSE(fd); tst_res(TINFO, "sleep %ds", SLEEP_AFTER_CLOSE); sleep(SLEEP_AFTER_CLOSE); tst_res(TPASS, "test completed"); } static struct tst_test test = { .options = options, .test_all = run, .cleanup = cleanup, };