Now that device_api attribute is unmodified at runtime, as well as all the other attributes, it is possible to switch all device driver instance to be constant. A coccinelle rule is used for this: @r_const_dev_1 disable optional_qualifier @ @@ -struct device * +const struct device * @r_const_dev_2 disable optional_qualifier @ @@ -struct device * const +const struct device * Fixes #27399 Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
38 lines
855 B
C
38 lines
855 B
C
/*
|
|
* Copyright (c) 2020 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <ztest.h>
|
|
#include <device.h>
|
|
|
|
/* define subsystem common API for drivers */
|
|
typedef int (*subsystem_do_this_t)(const struct device *device, int foo,
|
|
int bar);
|
|
typedef void (*subsystem_do_that_t)(const struct device *device,
|
|
unsigned int *baz);
|
|
|
|
struct subsystem_api {
|
|
subsystem_do_this_t do_this;
|
|
subsystem_do_that_t do_that;
|
|
};
|
|
|
|
static inline int subsystem_do_this(const struct device *device, int foo,
|
|
int bar)
|
|
{
|
|
struct subsystem_api *api;
|
|
|
|
api = (struct subsystem_api *)device->api;
|
|
return api->do_this(device, foo, bar);
|
|
}
|
|
|
|
static inline void subsystem_do_that(const struct device *device,
|
|
unsigned int *baz)
|
|
{
|
|
struct subsystem_api *api;
|
|
|
|
api = (struct subsystem_api *)device->api;
|
|
api->do_that(device, baz);
|
|
}
|