11.1Skamil/* $NetBSD: cmd_mapper.c,v 1.1 2019/01/17 20:47:42 kamil Exp $ */ 21.1Skamil 31.1Skamil/*- 41.1Skamil * Copyright (c) 2019 The NetBSD Foundation, Inc. 51.1Skamil * All rights reserved. 61.1Skamil * 71.1Skamil * Redistribution and use in source and binary forms, with or without 81.1Skamil * modification, are permitted provided that the following conditions 91.1Skamil * are met: 101.1Skamil * 1. Redistributions of source code must retain the above copyright 111.1Skamil * notice, this list of conditions and the following disclaimer. 121.1Skamil * 2. Redistributions in binary form must reproduce the above copyright 131.1Skamil * notice, this list of conditions and the following disclaimer in the 141.1Skamil * documentation and/or other materials provided with the distribution. 151.1Skamil * 161.1Skamil * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 171.1Skamil * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 181.1Skamil * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 191.1Skamil * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 201.1Skamil * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 211.1Skamil * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 221.1Skamil * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 231.1Skamil * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 241.1Skamil * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 251.1Skamil * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 261.1Skamil * POSSIBILITY OF SUCH DAMAGE. 271.1Skamil */ 281.1Skamil 291.1Skamil#include <sys/cdefs.h> 301.1Skamil__RCSID("$NetBSD: cmd_mapper.c,v 1.1 2019/01/17 20:47:42 kamil Exp $"); 311.1Skamil 321.1Skamil#include <sys/mman.h> 331.1Skamil 341.1Skamil#include <err.h> 351.1Skamil#include <fcntl.h> 361.1Skamil#include <stdio.h> 371.1Skamil#include <stdlib.h> 381.1Skamil#include <unistd.h> 391.1Skamil 401.1Skamil#define _PATH_DEV_MAPPER "/dev/mapper" 411.1Skamil 421.1Skamilint main(int argc, char **argv) 431.1Skamil{ 441.1Skamil int devfd; 451.1Skamil char *map = NULL; 461.1Skamil 471.1Skamil if ((devfd = open(_PATH_DEV_MAPPER, O_RDONLY)) == -1) 481.1Skamil err(EXIT_FAILURE, "Cannot open %s", _PATH_DEV_MAPPER); 491.1Skamil 501.1Skamil map = (char *)(mmap(0, sysconf(_SC_PAGESIZE), PROT_READ, MAP_SHARED, 511.1Skamil devfd, 0)); 521.1Skamil if (map == MAP_FAILED) 531.1Skamil err(EXIT_FAILURE, "Mapping failed"); 541.1Skamil 551.1Skamil printf("Message from device: %s\n",map); 561.1Skamil 571.1Skamil if (munmap(map, sysconf(_SC_PAGESIZE)) == -1) 581.1Skamil err(EXIT_FAILURE, "Unmap failed"); 591.1Skamil 601.1Skamil if (close(devfd) == -1) 611.1Skamil err(EXIT_FAILURE, "Cannot close %s", _PATH_DEV_MAPPER); 621.1Skamil 631.1Skamil return EXIT_SUCCESS; 641.1Skamil} 65