static ssize_t hsic_sysmon_char_write(struct file *file, const char __user *ubuf, size_t count, loff_t *ppos) { struct sysmon_char_dev *dev = sysmon_dev; int ret; int i = 0; if (!dev) return -ENODEV; if (copy_from_user(dev->buf, ubuf, count)) { pr_err("error copying for writing"); return 0; } for (i = 0 ; i < count; i++) pr_err("%c", dev->buf[i]); ret = hsic_sysmon_write(HSIC_SYSMON_DEV_EXT_MODEM, dev->buf, count, 1000); if (ret < 0) { pr_err("error writing to hsic_sysmon"); return ret; } return count; }
static ssize_t sysmon_test_write(struct file *file, const char __user *ubuf, size_t count, loff_t *ppos) { struct sysmon_test_dev *dev = sysmon_dev; enum hsic_sysmon_device_id id = (enum hsic_sysmon_device_id)file->private_data; int ret; if (!dev) return -ENODEV; /* */ if (count > RD_BUF_SIZE) count = RD_BUF_SIZE; if (copy_from_user(dev->buf, ubuf, count)) { pr_err("error copying for writing"); return -EFAULT; } ret = hsic_sysmon_write(id, dev->buf, count, 1000); if (ret < 0) { pr_err("error writing to hsic_sysmon"); return ret; } return count; }