Problem with writing from kernel to user space - linux device driver December 17, 2018 05:26PM |
static ssize_t gpio_driver_read(struct file *filp, char *buf, size_t len, loff_t *f_pos) { /* Size of valid data in gpio_driver - data to send in user space. */ int data_size = 0; /* Counter for 'for' loop. */ int i; /* Print to kernel space. */ printk(KERN_INFO "Reading active Switch state...\n" for (i = 0; i < 4; i = i+1) { printk(KERN_INFO "Loop number %d...\n", i); /* TODO: fill gpio_driver_buffer here. */ if (i == 0 && mySwitches[0]) sprintf(gpio_driver_buffer, "gpio_driver: gpio12 value: %d\n", GetGpioPinValue(GPIO_12)); else if (i == 1 && mySwitches[1]) sprintf(gpio_driver_buffer, "gpio_driver: gpio16 value: %d\n", GetGpioPinValue(GPIO_16)); else if (i == 2 && mySwitches[2]) sprintf(gpio_driver_buffer, "gpio_driver: gpio20 value: %d\n", GetGpioPinValue(GPIO_20)); else if (i == 3 && mySwitches[3]) sprintf(gpio_driver_buffer, "gpio_driver: gpio21 value: %d\n", GetGpioPinValue(GPIO_21)); printk(KERN_INFO "%s\n", gpio_driver_buffer); /* Get size of valid data. */ data_size = strlen(gpio_driver_buffer); printk(KERN_INFO "%d\n", data_size); /* Send data to user space. */ if (copy_to_user(buf, gpio_driver_buffer, data_size) != 0) { return -EFAULT; } } return 0; }
Re: Problem with writing from kernel to user space - linux device driver April 04, 2019 09:41AM |
Re: Problem with writing from kernel to user space - linux device driver April 04, 2019 09:48AM |
Re: Problem with writing from kernel to user space - linux device driver April 04, 2019 09:48AM |
Re: Problem with writing from kernel to user space - linux device driver April 04, 2019 09:49AM |
Re: Problem with writing from kernel to user space - linux device driver April 20, 2019 05:18AM |
Re: Problem with writing from kernel to user space - linux device driver October 14, 2019 03:13AM |