mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-24 23:52:40 +00:00
Bluetooth: Convert debug files to actually use debugfs instead of sysfs
Some of the debug files ended up wrongly in sysfs, because at that point of time, debugfs didn't exist. Convert these files to use debugfs and also seq_file. This patch converts all of these files at once and then removes the exported symbol for the Bluetooth sysfs class. Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
101545f6fe
commit
aef7d97cc6
6 changed files with 114 additions and 88 deletions
|
@ -40,6 +40,8 @@
|
|||
#include <linux/skbuff.h>
|
||||
#include <linux/list.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <net/sock.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
|
@ -1061,37 +1063,38 @@ done:
|
|||
return result;
|
||||
}
|
||||
|
||||
static ssize_t rfcomm_sock_sysfs_show(struct class *dev,
|
||||
struct class_attribute *attr,
|
||||
char *buf)
|
||||
static int rfcomm_sock_debugfs_show(struct seq_file *f, void *p)
|
||||
{
|
||||
struct sock *sk;
|
||||
struct hlist_node *node;
|
||||
char *str = buf;
|
||||
int size = PAGE_SIZE;
|
||||
|
||||
read_lock_bh(&rfcomm_sk_list.lock);
|
||||
|
||||
sk_for_each(sk, node, &rfcomm_sk_list.head) {
|
||||
int len;
|
||||
|
||||
len = snprintf(str, size, "%s %s %d %d\n",
|
||||
batostr(&bt_sk(sk)->src), batostr(&bt_sk(sk)->dst),
|
||||
seq_printf(f, "%s %s %d %d\n",
|
||||
batostr(&bt_sk(sk)->src),
|
||||
batostr(&bt_sk(sk)->dst),
|
||||
sk->sk_state, rfcomm_pi(sk)->channel);
|
||||
|
||||
size -= len;
|
||||
if (size <= 0)
|
||||
break;
|
||||
|
||||
str += len;
|
||||
}
|
||||
|
||||
read_unlock_bh(&rfcomm_sk_list.lock);
|
||||
|
||||
return (str - buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static CLASS_ATTR(rfcomm, S_IRUGO, rfcomm_sock_sysfs_show, NULL);
|
||||
static int rfcomm_sock_debugfs_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
return single_open(file, rfcomm_sock_debugfs_show, inode->i_private);
|
||||
}
|
||||
|
||||
static const struct file_operations rfcomm_sock_debugfs_fops = {
|
||||
.open = rfcomm_sock_debugfs_open,
|
||||
.read = seq_read,
|
||||
.llseek = seq_lseek,
|
||||
.release = single_release,
|
||||
};
|
||||
|
||||
static struct dentry *rfcomm_sock_debugfs;
|
||||
|
||||
static const struct proto_ops rfcomm_sock_ops = {
|
||||
.family = PF_BLUETOOTH,
|
||||
|
@ -1131,8 +1134,12 @@ int __init rfcomm_init_sockets(void)
|
|||
if (err < 0)
|
||||
goto error;
|
||||
|
||||
if (class_create_file(bt_class, &class_attr_rfcomm) < 0)
|
||||
BT_ERR("Failed to create RFCOMM info file");
|
||||
if (bt_debugfs) {
|
||||
rfcomm_sock_debugfs = debugfs_create_file("rfcomm", 0444,
|
||||
bt_debugfs, NULL, &rfcomm_sock_debugfs_fops);
|
||||
if (!rfcomm_sock_debugfs)
|
||||
BT_ERR("Failed to create RFCOMM debug file");
|
||||
}
|
||||
|
||||
BT_INFO("RFCOMM socket layer initialized");
|
||||
|
||||
|
@ -1146,7 +1153,7 @@ error:
|
|||
|
||||
void rfcomm_cleanup_sockets(void)
|
||||
{
|
||||
class_remove_file(bt_class, &class_attr_rfcomm);
|
||||
debugfs_remove(rfcomm_sock_debugfs);
|
||||
|
||||
if (bt_sock_unregister(BTPROTO_RFCOMM) < 0)
|
||||
BT_ERR("RFCOMM socket layer unregistration failed");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue