1300906Sasomers/*- 2300906Sasomers * Copyright (c) 2012, 2013 Spectra Logic Corporation 3300906Sasomers * All rights reserved. 4300906Sasomers * 5300906Sasomers * Redistribution and use in source and binary forms, with or without 6300906Sasomers * modification, are permitted provided that the following conditions 7300906Sasomers * are met: 8300906Sasomers * 1. Redistributions of source code must retain the above copyright 9300906Sasomers * notice, this list of conditions, and the following disclaimer, 10300906Sasomers * without modification. 11300906Sasomers * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12300906Sasomers * substantially similar to the "NO WARRANTY" disclaimer below 13300906Sasomers * ("Disclaimer") and any redistribution must be conditioned upon 14300906Sasomers * including a substantially similar Disclaimer requirement for further 15300906Sasomers * binary redistribution. 16300906Sasomers * 17300906Sasomers * NO WARRANTY 18300906Sasomers * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19300906Sasomers * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20300906Sasomers * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 21300906Sasomers * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22300906Sasomers * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23300906Sasomers * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24300906Sasomers * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25300906Sasomers * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26300906Sasomers * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 27300906Sasomers * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28300906Sasomers * POSSIBILITY OF SUCH DAMAGES. 29300906Sasomers * 30300906Sasomers * Authors: Alan Somers (Spectra Logic Corporation) 31300906Sasomers */ 32300906Sasomers 33300906Sasomers/** 34300906Sasomers * \file zfsd_main.cc 35300906Sasomers * 36300906Sasomers * main function for the ZFS Daemon. Separated to facilitate testing. 37300906Sasomers * 38300906Sasomers */ 39300906Sasomers 40300906Sasomers#include <sys/cdefs.h> 41300906Sasomers 42300906Sasomers#include <cstdlib> 43300906Sasomers#include <cstdio> 44300906Sasomers#include <unistd.h> 45300906Sasomers 46300906Sasomers#include <list> 47300906Sasomers#include <map> 48300906Sasomers#include <string> 49300906Sasomers 50300906Sasomers#include <devdctl/guid.h> 51300906Sasomers#include <devdctl/event.h> 52300906Sasomers#include <devdctl/event_factory.h> 53300906Sasomers#include <devdctl/exception.h> 54300906Sasomers#include <devdctl/consumer.h> 55300906Sasomers 56300906Sasomers#include "vdev_iterator.h" 57300906Sasomers#include "zfsd.h" 58300906Sasomers 59300906Sasomers__FBSDID("$FreeBSD$"); 60300906Sasomers 61300906Sasomers/*=============================== Program Main ===============================*/ 62300906Sasomersstatic void 63300906Sasomersusage() 64300906Sasomers{ 65300906Sasomers fprintf(stderr, "usage: %s [-d]\n", getprogname()); 66300906Sasomers exit(1); 67300906Sasomers} 68300906Sasomers 69300906Sasomers/** 70300906Sasomers * Program entry point. 71300906Sasomers */ 72300906Sasomersint 73300906Sasomersmain(int argc, char **argv) 74300906Sasomers{ 75300906Sasomers int ch; 76300906Sasomers 77300906Sasomers while ((ch = getopt(argc, argv, "d")) != -1) { 78300906Sasomers switch (ch) { 79300906Sasomers case 'd': 80300906Sasomers g_debug++; 81300906Sasomers break; 82300906Sasomers default: 83300906Sasomers usage(); 84300906Sasomers } 85300906Sasomers } 86300906Sasomers 87300906Sasomers ZfsDaemon::Run(); 88300906Sasomers 89300906Sasomers return (0); 90300906Sasomers} 91