linux_dsm_epyc7002/tools/usb/usbip/libsrc/usbip_host_driver.c
Krzysztof Opasiak 3391ba0e27 usbip: tools: Extract generic code to be shared with vudc backend
Extract the code from current stub driver backend and a common
interface for both stub driver and vudc. This allows to share most
of the usbipd code for both of them.

Based on code created in cooperation with Open Operating Systems
Student Society at University of Warsaw (O2S3@UW) consisting of:

    Igor Kotrasinski <ikotrasinsk@gmail.com>
    Karol Kosik <karo9@interia.eu>
    Ewelina Kosmider <3w3lfin@gmail.com>
    Dawid Lazarczyk <lazarczyk.dawid@gmail.com>
    Piotr Szulc <ps347277@students.mimuw.edu.pl>

Tutor and project owner:
    Krzysztof Opasiak <k.opasiak@samsung.com>

Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-04-26 15:19:50 -07:00

66 lines
1.9 KiB
C

/*
* Copyright (C) 2011 matt mooney <mfm@muteddisk.com>
* 2005-2007 Takahiro Hirofuchi
* Copyright (C) 2015-2016 Samsung Electronics
* Igor Kotrasinski <i.kotrasinsk@samsung.com>
* Krzysztof Opasiak <k.opasiak@samsung.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, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <unistd.h>
#include <libudev.h>
#include "usbip_host_common.h"
#include "usbip_host_driver.h"
#undef PROGNAME
#define PROGNAME "libusbip"
static int is_my_device(struct udev_device *dev)
{
const char *driver;
driver = udev_device_get_driver(dev);
return driver != NULL && !strcmp(driver, USBIP_HOST_DRV_NAME);
}
static int usbip_host_driver_open(struct usbip_host_driver *hdriver)
{
int ret;
hdriver->ndevs = 0;
INIT_LIST_HEAD(&hdriver->edev_list);
ret = usbip_generic_driver_open(hdriver);
if (ret)
err("please load " USBIP_CORE_MOD_NAME ".ko and "
USBIP_HOST_DRV_NAME ".ko!");
return ret;
}
struct usbip_host_driver host_driver = {
.edev_list = LIST_HEAD_INIT(host_driver.edev_list),
.udev_subsystem = "usb",
.ops = {
.open = usbip_host_driver_open,
.close = usbip_generic_driver_close,
.refresh_device_list = usbip_generic_refresh_device_list,
.get_device = usbip_generic_get_device,
.read_device = read_usb_device,
.read_interface = read_usb_interface,
.is_my_device = is_my_device,
},
};