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