Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/usb/usbip/src/utils.c
26288 views
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*
3
* Copyright (C) 2011 matt mooney <[email protected]>
4
* 2005-2007 Takahiro Hirofuchi
5
*/
6
7
#include <errno.h>
8
#include <stdio.h>
9
#include <string.h>
10
11
#include "usbip_common.h"
12
#include "utils.h"
13
#include "sysfs_utils.h"
14
15
int modify_match_busid(char *busid, int add)
16
{
17
char attr_name[] = "match_busid";
18
char command[SYSFS_BUS_ID_SIZE + 4];
19
char match_busid_attr_path[SYSFS_PATH_MAX];
20
int rc;
21
int cmd_size;
22
23
snprintf(match_busid_attr_path, sizeof(match_busid_attr_path),
24
"%s/%s/%s/%s/%s/%s", SYSFS_MNT_PATH, SYSFS_BUS_NAME,
25
SYSFS_BUS_TYPE, SYSFS_DRIVERS_NAME, USBIP_HOST_DRV_NAME,
26
attr_name);
27
28
if (add)
29
cmd_size = snprintf(command, SYSFS_BUS_ID_SIZE + 4, "add %s",
30
busid);
31
else
32
cmd_size = snprintf(command, SYSFS_BUS_ID_SIZE + 4, "del %s",
33
busid);
34
35
rc = write_sysfs_attribute(match_busid_attr_path, command,
36
cmd_size);
37
if (rc < 0) {
38
dbg("failed to write match_busid: %s", strerror(errno));
39
return -1;
40
}
41
42
return 0;
43
}
44
45