blob: 5bc688bd4bda2ac570e90fbabbd8f3420632023f [file] [log] [blame]
/*
* Copyright (c) International Business Machines Corp., 2009
*
* Authors:
* Mimi Zohar <zohar@us.ibm.com>
*
* 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,
};