[Xenomai-git] Philippe Gerum : drivers/gpio: add blocking read()
Module: xenomai-3 Branch: master Commit: e171922a92f7fec3dc484286b4e8ea92860a URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=e171922a92f7fec3dc484286b4e8ea92860a Author: Philippe GerumDate: Tue Jul 12 09:53:37 2016 +0200 drivers/gpio: add blocking read() --- include/rtdm/uapi/gpio.h|2 -- kernel/drivers/gpio/gpio-core.c |7 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/rtdm/uapi/gpio.h b/include/rtdm/uapi/gpio.h index 307e190..f846f48 100644 --- a/include/rtdm/uapi/gpio.h +++ b/include/rtdm/uapi/gpio.h @@ -18,8 +18,6 @@ #ifndef _RTDM_UAPI_GPIO_H #define _RTDM_UAPI_GPIO_H -#include - #define GPIO_RTIOC_DIR_OUT _IOW(RTDM_CLASS_GPIO, 0, int) #define GPIO_RTIOC_DIR_IN _IO(RTDM_CLASS_GPIO, 1) #define GPIO_RTIOC_IRQEN _IOW(RTDM_CLASS_GPIO, 2, int) /* GPIO trigger */ diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c index 6c1f351..f18d571 100644 --- a/kernel/drivers/gpio/gpio-core.c +++ b/kernel/drivers/gpio/gpio-core.c @@ -155,6 +155,13 @@ static ssize_t gpio_pin_read_rt(struct rtdm_fd *fd, return -EINVAL; pin = container_of(dev, struct rtdm_gpio_pin, dev); + + if (!(fd->oflags & O_NONBLOCK)) { + ret = rtdm_event_wait(>event); + if (ret) + return ret; + } + value = gpiod_get_raw_value(pin->desc); ret = rtdm_safe_copy_to_user(fd, buf, , sizeof(value)); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : drivers/gpio: add blocking read()
Module: xenomai-3 Branch: stable-3.0.x Commit: e171922a92f7fec3dc484286b4e8ea92860a URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=e171922a92f7fec3dc484286b4e8ea92860a Author: Philippe GerumDate: Tue Jul 12 09:53:37 2016 +0200 drivers/gpio: add blocking read() --- include/rtdm/uapi/gpio.h|2 -- kernel/drivers/gpio/gpio-core.c |7 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/rtdm/uapi/gpio.h b/include/rtdm/uapi/gpio.h index 307e190..f846f48 100644 --- a/include/rtdm/uapi/gpio.h +++ b/include/rtdm/uapi/gpio.h @@ -18,8 +18,6 @@ #ifndef _RTDM_UAPI_GPIO_H #define _RTDM_UAPI_GPIO_H -#include - #define GPIO_RTIOC_DIR_OUT _IOW(RTDM_CLASS_GPIO, 0, int) #define GPIO_RTIOC_DIR_IN _IO(RTDM_CLASS_GPIO, 1) #define GPIO_RTIOC_IRQEN _IOW(RTDM_CLASS_GPIO, 2, int) /* GPIO trigger */ diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c index 6c1f351..f18d571 100644 --- a/kernel/drivers/gpio/gpio-core.c +++ b/kernel/drivers/gpio/gpio-core.c @@ -155,6 +155,13 @@ static ssize_t gpio_pin_read_rt(struct rtdm_fd *fd, return -EINVAL; pin = container_of(dev, struct rtdm_gpio_pin, dev); + + if (!(fd->oflags & O_NONBLOCK)) { + ret = rtdm_event_wait(>event); + if (ret) + return ret; + } + value = gpiod_get_raw_value(pin->desc); ret = rtdm_safe_copy_to_user(fd, buf, , sizeof(value)); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : drivers/gpio: add blocking read()
Module: xenomai-3 Branch: wip/drivers Commit: e171922a92f7fec3dc484286b4e8ea92860a URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=e171922a92f7fec3dc484286b4e8ea92860a Author: Philippe GerumDate: Tue Jul 12 09:53:37 2016 +0200 drivers/gpio: add blocking read() --- include/rtdm/uapi/gpio.h|2 -- kernel/drivers/gpio/gpio-core.c |7 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/rtdm/uapi/gpio.h b/include/rtdm/uapi/gpio.h index 307e190..f846f48 100644 --- a/include/rtdm/uapi/gpio.h +++ b/include/rtdm/uapi/gpio.h @@ -18,8 +18,6 @@ #ifndef _RTDM_UAPI_GPIO_H #define _RTDM_UAPI_GPIO_H -#include - #define GPIO_RTIOC_DIR_OUT _IOW(RTDM_CLASS_GPIO, 0, int) #define GPIO_RTIOC_DIR_IN _IO(RTDM_CLASS_GPIO, 1) #define GPIO_RTIOC_IRQEN _IOW(RTDM_CLASS_GPIO, 2, int) /* GPIO trigger */ diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c index 6c1f351..f18d571 100644 --- a/kernel/drivers/gpio/gpio-core.c +++ b/kernel/drivers/gpio/gpio-core.c @@ -155,6 +155,13 @@ static ssize_t gpio_pin_read_rt(struct rtdm_fd *fd, return -EINVAL; pin = container_of(dev, struct rtdm_gpio_pin, dev); + + if (!(fd->oflags & O_NONBLOCK)) { + ret = rtdm_event_wait(>event); + if (ret) + return ret; + } + value = gpiod_get_raw_value(pin->desc); ret = rtdm_safe_copy_to_user(fd, buf, , sizeof(value)); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : drivers/gpio: add blocking read()
Module: xenomai-3 Branch: wip/drivers Commit: 58e0f0a5ecedf9652a69bfcf0bb34fcbefcdd812 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=58e0f0a5ecedf9652a69bfcf0bb34fcbefcdd812 Author: Philippe GerumDate: Tue Jul 12 09:53:37 2016 +0200 drivers/gpio: add blocking read() --- include/rtdm/uapi/gpio.h|2 -- kernel/drivers/gpio/gpio-core.c |7 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/rtdm/uapi/gpio.h b/include/rtdm/uapi/gpio.h index 307e190..f846f48 100644 --- a/include/rtdm/uapi/gpio.h +++ b/include/rtdm/uapi/gpio.h @@ -18,8 +18,6 @@ #ifndef _RTDM_UAPI_GPIO_H #define _RTDM_UAPI_GPIO_H -#include - #define GPIO_RTIOC_DIR_OUT _IOW(RTDM_CLASS_GPIO, 0, int) #define GPIO_RTIOC_DIR_IN _IO(RTDM_CLASS_GPIO, 1) #define GPIO_RTIOC_IRQEN _IOW(RTDM_CLASS_GPIO, 2, int) /* GPIO trigger */ diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c index 6c1f351..f18d571 100644 --- a/kernel/drivers/gpio/gpio-core.c +++ b/kernel/drivers/gpio/gpio-core.c @@ -155,6 +155,13 @@ static ssize_t gpio_pin_read_rt(struct rtdm_fd *fd, return -EINVAL; pin = container_of(dev, struct rtdm_gpio_pin, dev); + + if (!(fd->oflags & O_NONBLOCK)) { + ret = rtdm_event_wait(>event); + if (ret) + return ret; + } + value = gpiod_get_raw_value(pin->desc); ret = rtdm_safe_copy_to_user(fd, buf, , sizeof(value)); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : drivers/gpio: add blocking read()
Module: xenomai-3 Branch: wip/drivers Commit: 1f56f78877e3999f357d9467c18d94b391b72d55 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=1f56f78877e3999f357d9467c18d94b391b72d55 Author: Philippe GerumDate: Tue Jul 12 09:53:37 2016 +0200 drivers/gpio: add blocking read() --- include/rtdm/uapi/gpio.h|2 -- kernel/drivers/gpio/gpio-core.c |7 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/rtdm/uapi/gpio.h b/include/rtdm/uapi/gpio.h index 307e190..f846f48 100644 --- a/include/rtdm/uapi/gpio.h +++ b/include/rtdm/uapi/gpio.h @@ -18,8 +18,6 @@ #ifndef _RTDM_UAPI_GPIO_H #define _RTDM_UAPI_GPIO_H -#include - #define GPIO_RTIOC_DIR_OUT _IOW(RTDM_CLASS_GPIO, 0, int) #define GPIO_RTIOC_DIR_IN _IO(RTDM_CLASS_GPIO, 1) #define GPIO_RTIOC_IRQEN _IOW(RTDM_CLASS_GPIO, 2, int) /* GPIO trigger */ diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c index 6c1f351..f18d571 100644 --- a/kernel/drivers/gpio/gpio-core.c +++ b/kernel/drivers/gpio/gpio-core.c @@ -155,6 +155,13 @@ static ssize_t gpio_pin_read_rt(struct rtdm_fd *fd, return -EINVAL; pin = container_of(dev, struct rtdm_gpio_pin, dev); + + if (!(fd->oflags & O_NONBLOCK)) { + ret = rtdm_event_wait(>event); + if (ret) + return ret; + } + value = gpiod_get_raw_value(pin->desc); ret = rtdm_safe_copy_to_user(fd, buf, , sizeof(value)); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git
[Xenomai-git] Philippe Gerum : drivers/gpio: add blocking read()
Module: xenomai-3 Branch: wip/drivers Commit: 391c142b358fc847ce49b466e4ea2865eacb3300 URL: http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=391c142b358fc847ce49b466e4ea2865eacb3300 Author: Philippe GerumDate: Tue Jul 12 09:53:37 2016 +0200 drivers/gpio: add blocking read() --- include/rtdm/uapi/gpio.h|2 -- kernel/drivers/gpio/gpio-core.c |7 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/include/rtdm/uapi/gpio.h b/include/rtdm/uapi/gpio.h index 307e190..f846f48 100644 --- a/include/rtdm/uapi/gpio.h +++ b/include/rtdm/uapi/gpio.h @@ -18,8 +18,6 @@ #ifndef _RTDM_UAPI_GPIO_H #define _RTDM_UAPI_GPIO_H -#include - #define GPIO_RTIOC_DIR_OUT _IOW(RTDM_CLASS_GPIO, 0, int) #define GPIO_RTIOC_DIR_IN _IO(RTDM_CLASS_GPIO, 1) #define GPIO_RTIOC_IRQEN _IOW(RTDM_CLASS_GPIO, 2, int) /* GPIO trigger */ diff --git a/kernel/drivers/gpio/gpio-core.c b/kernel/drivers/gpio/gpio-core.c index 6c1f351..f18d571 100644 --- a/kernel/drivers/gpio/gpio-core.c +++ b/kernel/drivers/gpio/gpio-core.c @@ -155,6 +155,13 @@ static ssize_t gpio_pin_read_rt(struct rtdm_fd *fd, return -EINVAL; pin = container_of(dev, struct rtdm_gpio_pin, dev); + + if (!(fd->oflags & O_NONBLOCK)) { + ret = rtdm_event_wait(>event); + if (ret) + return ret; + } + value = gpiod_get_raw_value(pin->desc); ret = rtdm_safe_copy_to_user(fd, buf, , sizeof(value)); ___ Xenomai-git mailing list Xenomai-git@xenomai.org https://xenomai.org/mailman/listinfo/xenomai-git