Skip to content

[RFC] API change: Device - Const-ify device driver instances. #24873

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 43 commits into from
Sep 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
e63414f
drivers: gpio: Use DEVICE_AND_API_INIT for mmio32 driver
Apr 30, 2020
542d197
device: Revise how initialization status is being handled
Apr 30, 2020
cda302d
userspace: update k_object API to support immutable objects
pabigot May 14, 2020
4ee8238
device: Instantiate all device instance as constant
Apr 30, 2020
805550d
device: Const-ify all device driver instance pointers
Apr 30, 2020
18830f8
doc: Apply constant qualifier on device instance where relevant
Aug 18, 2020
ecf9608
drivers: ethernet: Remove ugly usage of a goto in enc*j* drivers
Jun 30, 2020
08ad7dd
scripts: coccinelle: Scripts for finding wrong device instance usage
Jun 30, 2020
e7993b4
drivers: i2c: Fix device instance const qualifier loss
Jul 8, 2020
3b44058
drivers: can: Fix device instance const qualifier loss in MCUX Flexcan
Jul 8, 2020
7b70d64
drivers: dma: Fix device instance const qualifier loss in NIOS2 driver
Jul 8, 2020
3ec0bcf
drivers: gpio: Fix device instance const qualifier loss
Jul 8, 2020
9b3a83d
drivers: watchdog: Remove useless Kconfig entry
Jul 8, 2020
e789a5b
drivers: spi: Fix device instance const qualifier loss
Jul 8, 2020
8013b2b
drivers: flash: Fix device instance const qualifier loss in NRF QSPI
Jul 8, 2020
de63285
drivers: video: Fix device instance const qualifier loss in MCUX CSI
Jul 8, 2020
16a9171
drivers: ieee802154: Fix device instance const qualifier loss
Jul 8, 2020
a8e9cb9
drivers: ethernet: Fix device instance const qualifier loss
Jul 8, 2020
c91b600
drivers: adc: Fix device instance const qualifier loss
Jul 8, 2020
7d6142c
drivers: wifi: Fix device instance const qualifier loss in ESP
Jul 8, 2020
770a37f
drivers: console: Fix device instance const qualifier loss in IPM driver
Jul 8, 2020
8a2d19a
drivers: led: Fix device instance const qualifier loss in HT16K33
Jul 8, 2020
d13de5a
drivers: kscan: Fix device instance const qualifier loss
Jul 8, 2020
807e7cc
drivers: serial: Fix device instance const qualifier loss
Jul 8, 2020
d0c2b82
drivers: sensor: Fix device instance const qualifier loss
Jul 9, 2020
5615226
subsys: logging: Fix device instance const qualifier loss
Jul 9, 2020
9332488
subsys: net: Fix device instance const qualifier loss in socket tls
Jul 9, 2020
63a01d0
subsys: canopen: Add a wrapper to avoid passing device to CO_init
Jul 9, 2020
e282d40
samples: Fix device instance const qualifier loss
Jul 9, 2020
a853a77
irq: Change offload API to take a constant parameter
Jul 10, 2020
bfb48ac
arch: Apply IRQ offload API change
Jul 10, 2020
27a392d
kernel: Apply IRQ offload API change
Jul 10, 2020
9e6bb3d
tests: Apply IRQ offload API change
Jul 10, 2020
3d566ed
irq: Change dynamic API to take a constant parameter
Jul 10, 2020
1aa245a
arch: Apply dynamic IRQ API change
Jul 10, 2020
191761d
tests: Apply dynamic IRQ API change
Jul 10, 2020
2494b6c
boards: Apply IRQ offload API change
Jul 13, 2020
8258840
drivers: Apply dynamic IRQ API change
Aug 3, 2020
93c63fd
isr: Normalize usage of device instance through ISR
Jun 17, 2020
3bee883
tests: uart_asyn: Simplify how the UART device is provided
Jul 14, 2020
324ec3d
drivers: Manual const-ification of device driver instance
Jul 14, 2020
6c564e5
doc: Add a device qualifier change entry to release-notes for 2.4 ver…
Aug 10, 2020
ae19315
west: Update module's revision
Jul 31, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions arch/arc/core/arc_smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void z_arc_slave_start(int cpu_num)

#ifdef CONFIG_SMP

static void sched_ipi_handler(void *unused)
static void sched_ipi_handler(const void *unused)
{
ARG_UNUSED(unused);

Expand All @@ -108,7 +108,7 @@ void arch_sched_ipi(void)
}
}

static int arc_smp_init(struct device *dev)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment is on the commit titled:

device: Const-ify all device driver instance pointers

which produced this change. The provided Coccinelle script:

@r_const_dev_basic
  disable optional_qualifier
@
@@
-struct device *
+const struct device

is wrong in two ways:

  • it changes a pointer to struct device to a const struct device object
  • it fails to recognize a certain style that puts a const qualifier on the variable declaration.

For completeness it should be something like this:

@
disable optional_qualifier
@
@@
+const
 struct device *

@
disable optional_qualifier
@
@@
+const
 struct device * const

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sure

static int arc_smp_init(const struct device *dev)
{
ARG_UNUSED(dev);
struct arc_connect_bcr bcr;
Expand Down
2 changes: 1 addition & 1 deletion arch/arc/core/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ size_t arch_cache_line_size_get(void)
#endif
}

static int init_dcache(struct device *unused)
static int init_dcache(const struct device *unused)
{
ARG_UNUSED(unused);

Expand Down
6 changes: 3 additions & 3 deletions arch/arc/core/irq_manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,16 @@ void z_irq_priority_set(unsigned int irq, unsigned int prio, uint32_t flags)
* @return N/A
*/

void z_irq_spurious(void *unused)
void z_irq_spurious(const void *unused)
{
ARG_UNUSED(unused);
z_fatal_error(K_ERR_SPURIOUS_IRQ, NULL);
}

#ifdef CONFIG_DYNAMIC_INTERRUPTS
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
void (*routine)(void *parameter), void *parameter,
uint32_t flags)
void (*routine)(const void *parameter),
const void *parameter, uint32_t flags)
{
z_isr_install(irq, routine, parameter);
z_irq_priority_set(irq, priority, flags);
Expand Down
4 changes: 2 additions & 2 deletions arch/arc/core/irq_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
#include <irq_offload.h>

static irq_offload_routine_t offload_routine;
static void *offload_param;
static const void *offload_param;

/* Called by trap_s exception handler */
void z_irq_do_offload(void)
{
offload_routine(offload_param);
}

void arch_irq_offload(irq_offload_routine_t routine, void *parameter)
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
{

offload_routine = routine;
Expand Down
2 changes: 1 addition & 1 deletion arch/arc/core/mpu/arc_mpu_v2_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ int arc_core_mpu_buffer_validate(void *addr, size_t size, int write)
* This function provides the default configuration mechanism for the Memory
* Protection Unit (MPU).
*/
static int arc_mpu_init(struct device *arg)
static int arc_mpu_init(const struct device *arg)
{
ARG_UNUSED(arg);

Expand Down
2 changes: 1 addition & 1 deletion arch/arc/core/mpu/arc_mpu_v3_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -824,7 +824,7 @@ int arc_core_mpu_buffer_validate(void *addr, size_t size, int write)
* This function provides the default configuration mechanism for the Memory
* Protection Unit (MPU).
*/
static int arc_mpu_init(struct device *arg)
static int arc_mpu_init(const struct device *arg)
{
ARG_UNUSED(arg);
uint32_t num_regions;
Expand Down
2 changes: 1 addition & 1 deletion arch/arc/core/secureshield/arc_sjli.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ static void sjli_table_init(void)
/*
* @brief initializaiton of secureshield related functions.
*/
static int arc_secureshield_init(struct device *arg)
static int arc_secureshield_init(const struct device *arg)
{
sjli_table_init();

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/core/aarch32/cortex_m/mpu/arm_mpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@ void arm_core_mpu_configure_dynamic_mpu_regions(const struct k_mem_partition
* This function provides the default configuration mechanism for the Memory
* Protection Unit (MPU).
*/
static int arm_mpu_init(struct device *arg)
static int arm_mpu_init(const struct device *arg)
{
uint32_t r_index;

Expand Down
2 changes: 1 addition & 1 deletion arch/arm/core/aarch32/cortex_m/mpu/nxp_mpu.c
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ void arm_core_mpu_configure_dynamic_mpu_regions(const struct k_mem_partition
* This function provides the default configuration mechanism for the Memory
* Protection Unit (MPU).
*/
static int nxp_mpu_init(struct device *arg)
static int nxp_mpu_init(const struct device *arg)
{
ARG_UNUSED(arg);

Expand Down
6 changes: 3 additions & 3 deletions arch/arm/core/aarch32/irq_manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ void z_arm_fatal_error(unsigned int reason, const z_arch_esf_t *esf);
*
* @return N/A
*/
void z_irq_spurious(void *unused)
void z_irq_spurious(const void *unused)
{
ARG_UNUSED(unused);

Expand Down Expand Up @@ -257,8 +257,8 @@ int irq_target_state_is_secure(unsigned int irq)

#ifdef CONFIG_DYNAMIC_INTERRUPTS
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
void (*routine)(void *parameter), void *parameter,
uint32_t flags)
void (*routine)(const void *parameter),
const void *parameter, uint32_t flags)
{
z_isr_install(irq, routine, parameter);
z_arm_irq_priority_set(irq, priority, flags);
Expand Down
4 changes: 2 additions & 2 deletions arch/arm/core/aarch32/irq_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@
#include <irq_offload.h>

volatile irq_offload_routine_t offload_routine;
static void *offload_param;
static const void *offload_param;

/* Called by z_arm_svc */
void z_irq_do_offload(void)
{
offload_routine(offload_param);
}

void arch_irq_offload(irq_offload_routine_t routine, void *parameter)
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
{
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) && defined(CONFIG_ASSERT)
/* ARMv6-M/ARMv8-M Baseline HardFault if you make a SVC call with
Expand Down
2 changes: 1 addition & 1 deletion arch/arm/core/aarch64/arm_mmu.c
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@ static void enable_mmu_el1(unsigned int flags)
* This function provides the default configuration mechanism for the Memory
* Management Unit (MMU).
*/
static int arm_mmu_init(struct device *arg)
static int arm_mmu_init(const struct device *arg)
{
uint64_t val;
unsigned int idx, flags = 0;
Expand Down
6 changes: 3 additions & 3 deletions arch/arm/core/aarch64/irq_manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,16 @@ void z_arm64_irq_priority_set(unsigned int irq, unsigned int prio, uint32_t flag

#ifdef CONFIG_DYNAMIC_INTERRUPTS
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
void (*routine)(void *parameter), void *parameter,
uint32_t flags)
void (*routine)(const void *parameter),
const void *parameter, uint32_t flags)
{
z_isr_install(irq, routine, parameter);
z_arm64_irq_priority_set(irq, priority, flags);
return irq;
}
#endif

void z_irq_spurious(void *unused)
void z_irq_spurious(const void *unused)
{
ARG_UNUSED(unused);

Expand Down
4 changes: 2 additions & 2 deletions arch/arm/core/aarch64/irq_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,14 @@
#include <aarch64/exc.h>

volatile irq_offload_routine_t offload_routine;
static void *offload_param;
static const void *offload_param;

void z_irq_do_offload(void)
{
offload_routine(offload_param);
}

void arch_irq_offload(irq_offload_routine_t routine, void *parameter)
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
{
k_sched_lock();
offload_routine = routine;
Expand Down
4 changes: 2 additions & 2 deletions arch/common/gen_isr_tables.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def read_intlist(intlist_path, syms):
/** ISR to call */
void *func;
/** Parameter for non-direct IRQs */
void *param;
const void *param;
};
"""

Expand Down Expand Up @@ -175,7 +175,7 @@ def write_source_file(fp, vt, swt, intlist, syms):
fp.write("\t/* Level 3 interrupts start here (offset: {}) */\n".
format(level3_offset))

fp.write("\t{{(void *){0:#x}, (void *){1}}},\n".format(param, func_as_string))
fp.write("\t{{(const void *){0:#x}, (void *){1}}},\n".format(param, func_as_string))
fp.write("};\n")

def get_symbols(obj):
Expand Down
3 changes: 2 additions & 1 deletion arch/common/isr_tables.c
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ uint32_t __irq_vector_table _irq_vector_table[IRQ_TABLE_SIZE] = {
*/
#ifdef CONFIG_GEN_SW_ISR_TABLE
struct _isr_table_entry __sw_isr_table _sw_isr_table[IRQ_TABLE_SIZE] = {
[0 ...(IRQ_TABLE_SIZE - 1)] = {(void *)0x42, (void *)&z_irq_spurious},
[0 ...(IRQ_TABLE_SIZE - 1)] = {(const void *)0x42,
(void *)&z_irq_spurious},
};
#endif
7 changes: 4 additions & 3 deletions arch/common/sw_isr_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ unsigned int get_parent_offset(unsigned int parent_irq,

#endif /* CONFIG_MULTI_LEVEL_INTERRUPTS */

void z_isr_install(unsigned int irq, void (*routine)(void *), void *param)
void z_isr_install(unsigned int irq, void (*routine)(const void *),
const void *param)
{
unsigned int table_idx;

Expand Down Expand Up @@ -127,8 +128,8 @@ void z_isr_install(unsigned int irq, void (*routine)(void *), void *param)
*/
int __weak arch_irq_connect_dynamic(unsigned int irq,
unsigned int priority,
void (*routine)(void *),
void *parameter,
void (*routine)(const void *),
const void *parameter,
uint32_t flags)
{
ARG_UNUSED(flags);
Expand Down
6 changes: 3 additions & 3 deletions arch/nios2/core/irq_manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#include <logging/log.h>
LOG_MODULE_DECLARE(os);

FUNC_NORETURN void z_irq_spurious(void *unused)
FUNC_NORETURN void z_irq_spurious(const void *unused)
{
ARG_UNUSED(unused);
LOG_ERR("Spurious interrupt detected! ipending: %x",
Expand Down Expand Up @@ -121,8 +121,8 @@ void _enter_irq(uint32_t ipending)

#ifdef CONFIG_DYNAMIC_INTERRUPTS
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
void (*routine)(void *parameter), void *parameter,
uint32_t flags)
void (*routine)(const void *parameter),
const void *parameter, uint32_t flags)
{
ARG_UNUSED(flags);
ARG_UNUSED(priority);
Expand Down
6 changes: 3 additions & 3 deletions arch/nios2/core/irq_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <irq_offload.h>

volatile irq_offload_routine_t _offload_routine;
static volatile void *offload_param;
static volatile const void *offload_param;

/* Called by _enter_irq if it was passed 0 for ipending.
* Just in case the offload routine itself generates an unhandled
Expand All @@ -26,10 +26,10 @@ void z_irq_do_offload(void)
tmp = _offload_routine;
_offload_routine = NULL;

tmp((void *)offload_param);
tmp((const void *)offload_param);
}

void arch_irq_offload(irq_offload_routine_t routine, void *parameter)
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
{
unsigned int key;

Expand Down
6 changes: 3 additions & 3 deletions arch/posix/core/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#ifdef CONFIG_IRQ_OFFLOAD
#include "irq_offload.h"

void arch_irq_offload(irq_offload_routine_t routine, void *parameter)
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
{
posix_irq_offload(routine, parameter);
}
Expand Down Expand Up @@ -46,8 +46,8 @@ int arch_irq_is_enabled(unsigned int irq)
* @return The vector assigned to this interrupt
*/
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
void (*routine)(void *parameter),
void *parameter, uint32_t flags)
void (*routine)(const void *parameter),
const void *parameter, uint32_t flags)
{
posix_isr_declare(irq, (int)flags, routine, parameter);
posix_irq_priority_set(irq, priority, flags);
Expand Down
6 changes: 3 additions & 3 deletions arch/riscv/core/irq_manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <logging/log.h>
LOG_MODULE_DECLARE(os);

FUNC_NORETURN void z_irq_spurious(void *unused)
FUNC_NORETURN void z_irq_spurious(const void *unused)
{
ulong_t mcause;

Expand All @@ -31,8 +31,8 @@ FUNC_NORETURN void z_irq_spurious(void *unused)

#ifdef CONFIG_DYNAMIC_INTERRUPTS
int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
void (*routine)(void *parameter), void *parameter,
uint32_t flags)
void (*routine)(const void *parameter),
const void *parameter, uint32_t flags)
{
ARG_UNUSED(flags);

Expand Down
6 changes: 3 additions & 3 deletions arch/riscv/core/irq_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#include <sys/printk.h>

volatile irq_offload_routine_t _offload_routine;
static volatile void *offload_param;
static volatile const void *offload_param;

/*
* Called by _enter_irq
Expand All @@ -28,10 +28,10 @@ void z_irq_do_offload(void)
tmp = _offload_routine;
_offload_routine = NULL;

tmp((void *)offload_param);
tmp((const void *)offload_param);
}

void arch_irq_offload(irq_offload_routine_t routine, void *parameter)
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
{
unsigned int key;

Expand Down
2 changes: 1 addition & 1 deletion arch/x86/core/ia32/cache.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ size_t arch_cache_line_size_get(void)
#endif
}

static int init_cache(struct device *unused)
static int init_cache(const struct device *unused)
{
ARG_UNUSED(unused);

Expand Down
8 changes: 4 additions & 4 deletions arch/x86/core/ia32/irq_manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -56,9 +56,9 @@ extern unsigned int z_interrupt_vectors_allocated[];

struct dyn_irq_info {
/** IRQ handler */
void (*handler)(void *param);
void (*handler)(const void *param);
/** Parameter to pass to the handler */
void *param;
const void *param;
};

/*
Expand Down Expand Up @@ -197,8 +197,8 @@ static void idt_vector_install(int vector, void *irq_handler)
}

int arch_irq_connect_dynamic(unsigned int irq, unsigned int priority,
void (*routine)(void *parameter), void *parameter,
uint32_t flags)
void (*routine)(const void *parameter),
const void *parameter, uint32_t flags)
{
int vector, stub_idx, key;

Expand Down
4 changes: 2 additions & 2 deletions arch/x86/core/ia32/irq_offload.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ NANO_CPU_INT_REGISTER(_irq_sw_handler, NANO_SOFT_IRQ,
CONFIG_IRQ_OFFLOAD_VECTOR, 0);

static irq_offload_routine_t offload_routine;
static void *offload_param;
static const void *offload_param;

/* Called by asm stub */
void z_irq_do_offload(void)
{
offload_routine(offload_param);
}

void arch_irq_offload(irq_offload_routine_t routine, void *parameter)
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
{
unsigned int key;

Expand Down
Loading