cregit-Linux how code gets into the kernel

Release 4.18 drivers/bluetooth/btmrvl_debugfs.c

/**
 * Marvell Bluetooth driver: debugfs related functions
 *
 * Copyright (C) 2009, Marvell International Ltd.
 *
 * This software file (the "File") is distributed by Marvell International
 * Ltd. under the terms of the GNU General Public License Version 2, June 1991
 * (the "License").  You may use, redistribute and/or modify this File in
 * accordance with the terms and conditions of the License, a copy of which
 * is available by writing to the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
 * worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
 *
 *
 * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
 * ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
 * this warranty disclaimer.
 **/

#include <linux/debugfs.h>
#include <linux/slab.h>

#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>

#include "btmrvl_drv.h"


struct btmrvl_debugfs_data {
	
struct dentry *config_dir;
	
struct dentry *status_dir;
};


static ssize_t btmrvl_hscfgcmd_write(struct file *file, const char __user *ubuf, size_t count, loff_t *ppos) { struct btmrvl_private *priv = file->private_data; long result, ret; ret = kstrtol_from_user(ubuf, count, 10, &result); if (ret) return ret; priv->btmrvl_dev.hscfgcmd = result; if (priv->btmrvl_dev.hscfgcmd) { btmrvl_prepare_command(priv); wake_up_interruptible(&priv->main_thread.wait_q); } return count; }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao8084.21%125.00%
David S. Miller77.37%125.00%
Marcel Holtmann55.26%125.00%
Andy Shevchenko33.16%125.00%
Total95100.00%4100.00%


static ssize_t btmrvl_hscfgcmd_read(struct file *file, char __user *userbuf, size_t count, loff_t *ppos) { struct btmrvl_private *priv = file->private_data; char buf[16]; int ret; ret = snprintf(buf, sizeof(buf) - 1, "%d\n", priv->btmrvl_dev.hscfgcmd); return simple_read_from_buffer(userbuf, count, ppos, buf, ret); }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao7496.10%150.00%
Marcel Holtmann33.90%150.00%
Total77100.00%2100.00%

static const struct file_operations btmrvl_hscfgcmd_fops = { .read = btmrvl_hscfgcmd_read, .write = btmrvl_hscfgcmd_write, .open = simple_open, .llseek = default_llseek, };
static ssize_t btmrvl_pscmd_write(struct file *file, const char __user *ubuf, size_t count, loff_t *ppos) { struct btmrvl_private *priv = file->private_data; long result, ret; ret = kstrtol_from_user(ubuf, count, 10, &result); if (ret) return ret; priv->btmrvl_dev.pscmd = result; if (priv->btmrvl_dev.pscmd) { btmrvl_prepare_command(priv); wake_up_interruptible(&priv->main_thread.wait_q); } return count; }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao5355.79%120.00%
Andy Shevchenko3031.58%240.00%
David S. Miller77.37%120.00%
Marcel Holtmann55.26%120.00%
Total95100.00%5100.00%


static ssize_t btmrvl_pscmd_read(struct file *file, char __user *userbuf, size_t count, loff_t *ppos) { struct btmrvl_private *priv = file->private_data; char buf[16]; int ret; ret = snprintf(buf, sizeof(buf) - 1, "%d\n", priv->btmrvl_dev.pscmd); return simple_read_from_buffer(userbuf, count, ppos, buf, ret); }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao7293.51%133.33%
Marcel Holtmann33.90%133.33%
Andy Shevchenko22.60%133.33%
Total77100.00%3100.00%

static const struct file_operations btmrvl_pscmd_fops = { .read = btmrvl_pscmd_read, .write = btmrvl_pscmd_write, .open = simple_open, .llseek = default_llseek, };
static ssize_t btmrvl_hscmd_write(struct file *file, const char __user *ubuf, size_t count, loff_t *ppos) { struct btmrvl_private *priv = file->private_data; long result, ret; ret = kstrtol_from_user(ubuf, count, 10, &result); if (ret) return ret; priv->btmrvl_dev.hscmd = result; if (priv->btmrvl_dev.hscmd) { btmrvl_prepare_command(priv); wake_up_interruptible(&priv->main_thread.wait_q); } return count; }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao7781.05%120.00%
David S. Miller77.37%120.00%
Andy Shevchenko66.32%240.00%
Marcel Holtmann55.26%120.00%
Total95100.00%5100.00%


static ssize_t btmrvl_hscmd_read(struct file *file, char __user *userbuf, size_t count, loff_t *ppos) { struct btmrvl_private *priv = file->private_data; char buf[16]; int ret; ret = snprintf(buf, sizeof(buf) - 1, "%d\n", priv->btmrvl_dev.hscmd); return simple_read_from_buffer(userbuf, count, ppos, buf, ret); }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao7293.51%133.33%
Marcel Holtmann33.90%133.33%
Andy Shevchenko22.60%133.33%
Total77100.00%3100.00%

static const struct file_operations btmrvl_hscmd_fops = { .read = btmrvl_hscmd_read, .write = btmrvl_hscmd_write, .open = simple_open, .llseek = default_llseek, };
void btmrvl_debugfs_init(struct hci_dev *hdev) { struct btmrvl_private *priv = hci_get_drvdata(hdev); struct btmrvl_debugfs_data *dbg; if (!hdev->debugfs) return; dbg = kzalloc(sizeof(*dbg), GFP_KERNEL); priv->debugfs_data = dbg; if (!dbg) { BT_ERR("Can not allocate memory for btmrvl_debugfs_data."); return; } dbg->config_dir = debugfs_create_dir("config", hdev->debugfs); debugfs_create_u8("psmode", 0644, dbg->config_dir, &priv->btmrvl_dev.psmode); debugfs_create_file("pscmd", 0644, dbg->config_dir, priv, &btmrvl_pscmd_fops); debugfs_create_x16("gpiogap", 0644, dbg->config_dir, &priv->btmrvl_dev.gpio_gap); debugfs_create_u8("hsmode", 0644, dbg->config_dir, &priv->btmrvl_dev.hsmode); debugfs_create_file("hscmd", 0644, dbg->config_dir, priv, &btmrvl_hscmd_fops); debugfs_create_file("hscfgcmd", 0644, dbg->config_dir, priv, &btmrvl_hscfgcmd_fops); dbg->status_dir = debugfs_create_dir("status", hdev->debugfs); debugfs_create_u8("curpsmode", 0444, dbg->status_dir, &priv->adapter->psmode); debugfs_create_u8("psstate", 0444, dbg->status_dir, &priv->adapter->ps_state); debugfs_create_u8("hsstate", 0444, dbg->status_dir, &priv->adapter->hs_state); debugfs_create_u8("txdnldready", 0444, dbg->status_dir, &priv->btmrvl_dev.tx_dnld_rdy); }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao16160.75%120.00%
Andy Shevchenko9836.98%120.00%
Marcel Holtmann31.13%240.00%
David Herrmann31.13%120.00%
Total265100.00%5100.00%


void btmrvl_debugfs_remove(struct hci_dev *hdev) { struct btmrvl_private *priv = hci_get_drvdata(hdev); struct btmrvl_debugfs_data *dbg = priv->debugfs_data; if (!dbg) return; debugfs_remove_recursive(dbg->config_dir); debugfs_remove_recursive(dbg->status_dir); kfree(dbg); }

Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao4990.74%133.33%
David Herrmann35.56%133.33%
Andy Shevchenko23.70%133.33%
Total54100.00%3100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Bing Zhao72376.11%110.00%
Andy Shevchenko14915.68%220.00%
Marcel Holtmann303.16%220.00%
David S. Miller212.21%110.00%
Arnd Bergmann151.58%110.00%
David Herrmann60.63%110.00%
Stephen Boyd30.32%110.00%
Tejun Heo30.32%110.00%
Total950100.00%10100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.