Since there are no more direct accesses to the indio_dev->scan_timestamp
value, it can be marked as __private and use the macro ACCESS_PRIVATE()
in order to access it. Like this, static checkers will be able to inform
in case someone tries to either write to the value, or read its value
directly.
Signed-off-by: Vasileios Amoiridis <vassilisamir@gmail.com>
---
drivers/iio/industrialio-buffer.c | 2 +-
include/linux/iio/iio.h | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c
index 8104696cd475..c332741f3cf4 100644
--- a/drivers/iio/industrialio-buffer.c
+++ b/drivers/iio/industrialio-buffer.c
@@ -1137,7 +1137,7 @@ static int iio_enable_buffers(struct iio_dev *indio_dev,
int ret;
indio_dev->active_scan_mask = config->scan_mask;
- indio_dev->scan_timestamp = config->scan_timestamp;
+ ACCESS_PRIVATE(indio_dev, scan_timestamp) = config->scan_timestamp;
indio_dev->scan_bytes = config->scan_bytes;
iio_dev_opaque->currentmode = config->mode;
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index 5661794d1127..669b4ef1280d 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -611,7 +611,7 @@ struct iio_dev {
const unsigned long *available_scan_masks;
unsigned int __private masklength;
const unsigned long *active_scan_mask;
- bool scan_timestamp;
+ bool __private scan_timestamp;
struct iio_trigger *trig;
struct iio_poll_func *pollfunc;
struct iio_poll_func *pollfunc_event;
@@ -908,7 +908,7 @@ int iio_active_scan_mask_index(struct iio_dev *indio_dev);
*/
static inline bool iio_is_soft_ts_enabled(const struct iio_dev *indio_dev)
{
- return indio_dev->scan_timestamp;
+ return ACCESS_PRIVATE(indio_dev, scan_timestamp);
}
ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals);
--
2.43.0
On Sat, 30 Nov 2024 01:27:10 +0100 Vasileios Amoiridis <vassilisamir@gmail.com> wrote: > Since there are no more direct accesses to the indio_dev->scan_timestamp > value, it can be marked as __private and use the macro ACCESS_PRIVATE() > in order to access it. Like this, static checkers will be able to inform > in case someone tries to either write to the value, or read its value > directly. > > Signed-off-by: Vasileios Amoiridis <vassilisamir@gmail.com> > --- > drivers/iio/industrialio-buffer.c | 2 +- > include/linux/iio/iio.h | 4 ++-- > 2 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c > index 8104696cd475..c332741f3cf4 100644 > --- a/drivers/iio/industrialio-buffer.c > +++ b/drivers/iio/industrialio-buffer.c > @@ -1137,7 +1137,7 @@ static int iio_enable_buffers(struct iio_dev *indio_dev, > int ret; > > indio_dev->active_scan_mask = config->scan_mask; > - indio_dev->scan_timestamp = config->scan_timestamp; > + ACCESS_PRIVATE(indio_dev, scan_timestamp) = config->scan_timestamp; > indio_dev->scan_bytes = config->scan_bytes; > iio_dev_opaque->currentmode = config->mode; > > diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h > index 5661794d1127..669b4ef1280d 100644 > --- a/include/linux/iio/iio.h > +++ b/include/linux/iio/iio.h > @@ -611,7 +611,7 @@ struct iio_dev { > const unsigned long *available_scan_masks; > unsigned int __private masklength; > const unsigned long *active_scan_mask; > - bool scan_timestamp; > + bool __private scan_timestamp; > struct iio_trigger *trig; > struct iio_poll_func *pollfunc; > struct iio_poll_func *pollfunc_event; > @@ -908,7 +908,7 @@ int iio_active_scan_mask_index(struct iio_dev *indio_dev); > */ > static inline bool iio_is_soft_ts_enabled(const struct iio_dev *indio_dev) > { > - return indio_dev->scan_timestamp; > + return ACCESS_PRIVATE(indio_dev, scan_timestamp); If we only end up with one use of this (based on feedback on other drivers) I'd tempted to deliberately not provide this convenience function and instead just use ACCESS_PRIVATE() directly in iio_push_to_buffers_with_timestamp() Nice work. Particularly by highlighting some 'odd corners' in drivers that probably make no real sense to keep ;) Jonathan > } > > ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals);
On Sat, Nov 30, 2024 at 02:19:54PM +0000, Jonathan Cameron wrote: > On Sat, 30 Nov 2024 01:27:10 +0100 > Vasileios Amoiridis <vassilisamir@gmail.com> wrote: > > > Since there are no more direct accesses to the indio_dev->scan_timestamp > > value, it can be marked as __private and use the macro ACCESS_PRIVATE() > > in order to access it. Like this, static checkers will be able to inform > > in case someone tries to either write to the value, or read its value > > directly. > > > > Signed-off-by: Vasileios Amoiridis <vassilisamir@gmail.com> > > --- > > drivers/iio/industrialio-buffer.c | 2 +- > > include/linux/iio/iio.h | 4 ++-- > > 2 files changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/iio/industrialio-buffer.c b/drivers/iio/industrialio-buffer.c > > index 8104696cd475..c332741f3cf4 100644 > > --- a/drivers/iio/industrialio-buffer.c > > +++ b/drivers/iio/industrialio-buffer.c > > @@ -1137,7 +1137,7 @@ static int iio_enable_buffers(struct iio_dev *indio_dev, > > int ret; > > > > indio_dev->active_scan_mask = config->scan_mask; > > - indio_dev->scan_timestamp = config->scan_timestamp; > > + ACCESS_PRIVATE(indio_dev, scan_timestamp) = config->scan_timestamp; > > indio_dev->scan_bytes = config->scan_bytes; > > iio_dev_opaque->currentmode = config->mode; > > > > diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h > > index 5661794d1127..669b4ef1280d 100644 > > --- a/include/linux/iio/iio.h > > +++ b/include/linux/iio/iio.h > > @@ -611,7 +611,7 @@ struct iio_dev { > > const unsigned long *available_scan_masks; > > unsigned int __private masklength; > > const unsigned long *active_scan_mask; > > - bool scan_timestamp; > > + bool __private scan_timestamp; > > struct iio_trigger *trig; > > struct iio_poll_func *pollfunc; > > struct iio_poll_func *pollfunc_event; > > @@ -908,7 +908,7 @@ int iio_active_scan_mask_index(struct iio_dev *indio_dev); > > */ > > static inline bool iio_is_soft_ts_enabled(const struct iio_dev *indio_dev) > > { > > - return indio_dev->scan_timestamp; > > + return ACCESS_PRIVATE(indio_dev, scan_timestamp); > If we only end up with one use of this (based on feedback on other drivers) > I'd tempted to deliberately not provide this convenience function and instead > just use ACCESS_PRIVATE() directly in iio_push_to_buffers_with_timestamp() > > Nice work. Particularly by highlighting some 'odd corners' in drivers that > probably make no real sense to keep ;) > > Jonathan > > > > } > > > > ssize_t iio_format_value(char *buf, unsigned int type, int size, int *vals); > Hi Jonathan, Indeed, if it is only one case that this is being used, it wouldn't make sense to provide an accessor. I wouldn't think of going directly to touch the drivers without sending this RFC first, so it's good that you like the solution of optimizing the drivers themselves. I might find some time before the weekend to spin a v2 to discuss. Thanks for your time, your comments are always of great help! Cheers, Vasilis
© 2016 - 2024 Red Hat, Inc.