1 /*- 2 * BSD LICENSE 3 * 4 * Copyright (c) Intel Corporation. 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * * Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * * Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the 16 * distribution. 17 * * Neither the name of Intel Corporation nor the names of its 18 * contributors may be used to endorse or promote products derived 19 * from this software without specific prior written permission. 20 * 21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 24 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 25 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 27 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 29 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 30 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 */ 33 34 #include "spdk/stdinc.h" 35 #include "spdk/conf.h" 36 #include "spdk/event.h" 37 #include "spdk/vhost.h" 38 39 static void 40 interrupt_tgt_usage(void) 41 { 42 printf(" -E Set interrupt mode\n"); 43 printf(" -S <path> directory where to create vhost sockets (default: pwd)\n"); 44 } 45 46 static int 47 interrupt_tgt_parse_arg(int ch, char *arg) 48 { 49 switch (ch) { 50 case 'S': 51 spdk_vhost_set_socket_path(arg); 52 break; 53 case 'E': 54 spdk_interrupt_mode_enable(); 55 break; 56 default: 57 return -EINVAL; 58 } 59 return 0; 60 } 61 62 static void 63 interrupt_tgt_started(void *arg1) 64 { 65 } 66 67 int 68 main(int argc, char *argv[]) 69 { 70 struct spdk_app_opts opts = {}; 71 int rc; 72 73 spdk_app_opts_init(&opts, sizeof(opts)); 74 opts.name = "interrupt_tgt"; 75 76 if ((rc = spdk_app_parse_args(argc, argv, &opts, "S:E", NULL, 77 interrupt_tgt_parse_arg, interrupt_tgt_usage)) != 78 SPDK_APP_PARSE_ARGS_SUCCESS) { 79 exit(rc); 80 } 81 82 /* Blocks until the application is exiting */ 83 rc = spdk_app_start(&opts, interrupt_tgt_started, NULL); 84 85 spdk_app_fini(); 86 87 return rc; 88 } 89