Bluetooth: Create HCI device debugfs directory in hci_register_dev
Create the debugfs directory for each HCI device directly in hci_register_dev function and remove it during hci_unregister_dev. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
committed by
Johan Hedberg
parent
1120e4bfa5
commit
0153e2ecab
@@ -2479,6 +2479,9 @@ int hci_register_dev(struct hci_dev *hdev)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!IS_ERR_OR_NULL(bt_debugfs))
|
||||||
|
hdev->debugfs = debugfs_create_dir(hdev->name, bt_debugfs);
|
||||||
|
|
||||||
error = hci_add_sysfs(hdev);
|
error = hci_add_sysfs(hdev);
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
goto err_wqueue;
|
goto err_wqueue;
|
||||||
@@ -2569,6 +2572,8 @@ void hci_unregister_dev(struct hci_dev *hdev)
|
|||||||
|
|
||||||
hci_del_sysfs(hdev);
|
hci_del_sysfs(hdev);
|
||||||
|
|
||||||
|
debugfs_remove_recursive(hdev->debugfs);
|
||||||
|
|
||||||
destroy_workqueue(hdev->workqueue);
|
destroy_workqueue(hdev->workqueue);
|
||||||
destroy_workqueue(hdev->req_workqueue);
|
destroy_workqueue(hdev->req_workqueue);
|
||||||
|
|
||||||
|
@@ -409,32 +409,18 @@ void hci_init_sysfs(struct hci_dev *hdev)
|
|||||||
int hci_add_sysfs(struct hci_dev *hdev)
|
int hci_add_sysfs(struct hci_dev *hdev)
|
||||||
{
|
{
|
||||||
struct device *dev = &hdev->dev;
|
struct device *dev = &hdev->dev;
|
||||||
int err;
|
|
||||||
|
|
||||||
BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
|
BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
|
||||||
|
|
||||||
dev_set_name(dev, "%s", hdev->name);
|
dev_set_name(dev, "%s", hdev->name);
|
||||||
|
|
||||||
err = device_add(dev);
|
return device_add(dev);
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
if (!bt_debugfs)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
hdev->debugfs = debugfs_create_dir(hdev->name, bt_debugfs);
|
|
||||||
if (!hdev->debugfs)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void hci_del_sysfs(struct hci_dev *hdev)
|
void hci_del_sysfs(struct hci_dev *hdev)
|
||||||
{
|
{
|
||||||
BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
|
BT_DBG("%p name %s bus %d", hdev, hdev->name, hdev->bus);
|
||||||
|
|
||||||
debugfs_remove_recursive(hdev->debugfs);
|
|
||||||
|
|
||||||
device_del(&hdev->dev);
|
device_del(&hdev->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user