mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-28 00:19:36 +00:00

'struct iio_map' are not modified in these drivers. Constifying this structure moves some data to a read-only section, so increase overall security. In order to do it, the prototype of iio_map_array_register() and devm_iio_map_array_register(), and a few structures that hold a "struct iio_map *" need to be adjusted. On a x86_64, with allmodconfig, as an example: Before: ====== text data bss dec hex filename 21086 760 0 21846 5556 drivers/iio/adc/axp20x_adc.o After: ===== text data bss dec hex filename 21470 360 0 21830 5546 drivers/iio/adc/axp20x_adc.o 33842 1697 384 35923 8c53 drivers/iio/addac/ad74413r.o -- Compile tested only Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Link: https://patch.msgid.link/5729dc3cc3892ecf0d8ea28c5f7307b34e27493e.1725729801.git.christophe.jaillet@wanadoo.fr Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
45 lines
1.4 KiB
C
45 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Industrial I/O in kernel access map interface.
|
|
*
|
|
* Copyright (c) 2011 Jonathan Cameron
|
|
*/
|
|
|
|
#ifndef _IIO_INKERN_H_
|
|
#define _IIO_INKERN_H_
|
|
|
|
struct device;
|
|
struct iio_dev;
|
|
struct iio_map;
|
|
|
|
/**
|
|
* iio_map_array_register() - tell the core about inkernel consumers
|
|
* @indio_dev: provider device
|
|
* @map: array of mappings specifying association of channel with client
|
|
*/
|
|
int iio_map_array_register(struct iio_dev *indio_dev,
|
|
const struct iio_map *map);
|
|
|
|
/**
|
|
* iio_map_array_unregister() - tell the core to remove consumer mappings for
|
|
* the given provider device
|
|
* @indio_dev: provider device
|
|
*/
|
|
int iio_map_array_unregister(struct iio_dev *indio_dev);
|
|
|
|
/**
|
|
* devm_iio_map_array_register - device-managed version of iio_map_array_register
|
|
* @dev: Device object to which to bind the unwinding of this registration
|
|
* @indio_dev: Pointer to the iio_dev structure
|
|
* @maps: Pointer to an IIO map object which is to be registered to this IIO device
|
|
*
|
|
* This function will call iio_map_array_register() to register an IIO map object
|
|
* and will also hook a callback to the iio_map_array_unregister() function to
|
|
* handle de-registration of the IIO map object when the device's refcount goes to
|
|
* zero.
|
|
*/
|
|
int devm_iio_map_array_register(struct device *dev, struct iio_dev *indio_dev,
|
|
const struct iio_map *maps);
|
|
|
|
#endif
|