hrtimers: Switch to new hrtimer interface functions (5/5)
Subsystems (10)
cover hrtimers: Switch to new hrtimer interface functions (5/5)
This is the fifth part of a 5-part series (split for convenience). All 5 parts are:
Part 1: https://lore.kernel.org/lkml/[email protected]
Part 2: https://lore.kernel.org/lkml/[email protected]
Part 3: https://lore.kernel.org/lkml/[email protected]
Part 4: https://lore.kernel.org/lkml/[email protected]
Part 5: https://lore.kernel.org/lkml/[email protected]
To use hrtimer, hrtimer_init() (or one of its variant) must be called, and also the timer's callfack function must be setup separately.
That can cause misuse of hrtimer. For example, because:
- The callback function is not setup
- The callback function is setup while it is not safe to do so
To prevent misuse of hrtimer, this series:
- Introduce new functions hrtimer_setup*(). These new functions are similar to hrtimer_init*(), except that they also sanity-check and initialize the callback function.
- Introduce hrtimer_update_function() which checks that it is safe to change the callback function. The 'function' field of hrtimer is then made private.
- Convert all users to use the new functions.
- Some minor cleanups on the way.
Most conversion patches were created using Coccinelle with the sematic patch below; except for tricky cases that Coccinelle cannot handle, or for some cases where a Coccinelle's bug regarding 100 column limit is triggered. Any patches not mentioning Coccinelle were done manually.
virtual patch
@@ expression timer, clock, mode, func; @@
- hrtimer_init(timer, clock, mode);
...
- timer->function = func;
+ hrtimer_setup(timer, func, clock, mode);
@@ expression timer, clock, mode, func; @@
- hrtimer_init(&timer, clock, mode);
...
- timer.function = func;
+ hrtimer_setup(&timer, func, clock, mode);
@@ expression timer, clock, mode, func; @@
- hrtimer_init_on_stack(&timer, clock, mode);
...
- timer.function = func;
+ hrtimer_setup_on_stack(&timer, func, clock, mode);
@@ expression timer, clock, mode; @@
- hrtimer_init_sleeper_on_stack(timer, clock, mode);
+ hrtimer_setup_sleeper_on_stack(timer, clock, mode);
Nam Cao (12):
hrtimers: Delete hrtimer_init()
hrtimers: Switch to use __htimer_setup()
hrtimers: Merge __hrtimer_init() into __hrtimer_setup()
serial: xilinx_uartps: Use helper function hrtimer_update_function()
io_uring: Use helper function hrtimer_update_function()
wifi: rt2x00: Switch to use hrtimer_update_function()
hrtimers: Make callback function pointer private
hrtimers: Remove unnecessary NULL check in hrtimer_start_range_ns()
hrtimers: Rename __hrtimer_init_sleeper() to __hrtimer_setup_sleeper()
hrtimers: Rename debug_init() to debug_setup()
hrtimers: Rename debug_init_on_stack() to debug_setup_on_stack() tracing/timers: Rename hrtimer_init event to hrtimer_setup
Documentation/trace/ftrace.rst | 4 +- .../net/wireless/ralink/rt2x00/rt2800mmio.c | 2 +- .../net/wireless/ralink/rt2x00/rt2800usb.c | 2 +- drivers/tty/serial/xilinx_uartps.c | 4 +- include/linux/hrtimer.h | 4 +- include/linux/hrtimer_types.h | 4 +- include/trace/events/timer.h | 8 +-- io_uring/io_uring.c | 2 +- kernel/time/hrtimer.c | 69 +++++-------------- kernel/time/timer_list.c | 2 +- tools/perf/tests/shell/trace_btf_enum.sh | 2 +- 11 files changed, 35 insertions(+), 68 deletions(-)
Signature · 1 line
2.39.5
PATCH 1/12 hrtimers: Delete hrtimer_init()
hrtimer_init() is unused. Delete it.
--- include/linux/hrtimer.h | 2 -- include/linux/hrtimer_types.h | 2 +- kernel/time/hrtimer.c | 20 -------------------- 3 files changed, 1 insertion(+), 23 deletions(-)
include/linux/hrtimer.h +0 -2
@@ -226,8 +226,6 @@ static inline void hrtimer_cancel_wait_running(struct hrtimer *timer)/* Exported timer functions: */ /* Initialize timers: */ -extern void hrtimer_init (struct hrtimer *timer,clockid_t which_clock, -enum hrtimer_mode mode);extern void hrtimer_setup (struct hrtimer *timer,enum hrtimer_restart (*function)(struct hrtimer *),clockid_t clock_id,enum hrtimer_mode mode); extern void hrtimer_setup_on_stack(struct hrtimer *timer,
include/linux/hrtimer_types.h +1 -1
@@ -34,7 +34,7 @@ enum hrtimer_restart {* @is_hard: Set if hrtimer will be expired in hard interrupt context * even on RT. * -* The hrtimer structure must be initialized by hrtimer_init() +* The hrtimer structure must be initialized by hrtimer_setup() */ struct hrtimer {struct timerqueue_node node;
kernel/time/hrtimer.c +0 -20
@@ -1588,26 +1588,6 @@ static void __hrtimer_setup(struct hrtimer *timer, timer->function = function; } -/** -* hrtimer_init - initialize a timer to the given clock -* @timer: the timer to be initialized -* @clock_id: the clock to be used -* @mode: The modes which are relevant for initialization: -* HRTIMER_MODE_ABS, HRTIMER_MODE_REL, HRTIMER_MODE_ABS_SOFT, -* HRTIMER_MODE_REL_SOFT -* -* The PINNED variants of the above can be handed in, -* but the PINNED bit is ignored as pinning happens -* when the hrtimer is started -*/ -void hrtimer_init (struct hrtimer *timer,clockid_t clock_id, -enum hrtimer_mode mode) -{ -debug_init (timer, clock_id, mode); -__hrtimer_init (timer, clock_id, mode); -} -EXPORT_SYMBOL_GPL (hrtimer_init); -/** * hrtimer_setup - initialize a timer to the given clock * @timer: the timer to be initialized
Signature · 1 line
2.39.5
PATCH 2/12 hrtimers: Switch to use __htimer_setup()
In reply to Nam Cao__hrtimer_init_sleeper() calls __hrtimer_init() and also setups the callback function. But there is already __hrtimer_setup() which does both actions.
Switch to use __hrtimer_setup() to simplify the code.
--- kernel/time/hrtimer.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
kernel/time/hrtimer.c +1 -2
@@ -2009,8 +2009,7 @@ static void __hrtimer_init_sleeper(struct hrtimer_sleeper *sl, mode |=HRTIMER_MODE_HARD ; } -__hrtimer_init (&sl->timer, clock_id, mode); - sl->timer.function = hrtimer_wakeup; +__hrtimer_setup (&sl->timer, hrtimer_wakeup, clock_id, mode); sl->task = current; }
Signature · 1 line
2.39.5
PATCH 3/12 hrtimers: Merge __hrtimer_init() into __hrtimer_setup()
In reply to Nam Cao__hrtimer_init() is only called by __hrtimer_setup(), therefore simplify by merging __hrtimer_init()'s code into __hrtimer_setup().
--- kernel/time/hrtimer.c | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-)
kernel/time/hrtimer.c +3 -9
@@ -1540,8 +1540,9 @@ static enum hrtimer_restart hrtimer_dummy_timeout(struct hrtimer *unused)return HRTIMER_NORESTART ; } -static void __hrtimer_init (struct hrtimer *timer,clockid_t clock_id, -enum hrtimer_mode mode) +static void __hrtimer_setup (struct hrtimer *timer, +enum hrtimer_restart (*function)(struct hrtimer *), +clockid_t clock_id,enum hrtimer_mode mode) {bool softtimer = !!(mode &HRTIMER_MODE_SOFT );struct hrtimer_cpu_base *cpu_base;
@@ -1574,13 +1575,6 @@ static void __hrtimer_init(struct hrtimer *timer, clockid_t clock_id, timer->is_hard = !!(mode &HRTIMER_MODE_HARD ); timer->base = &cpu_base->clock_base[base];timerqueue_init (&timer->node); -} - -static void __hrtimer_setup (struct hrtimer *timer, -enum hrtimer_restart (*function)(struct hrtimer *), -clockid_t clock_id,enum hrtimer_mode mode) -{ -__hrtimer_init (timer, clock_id, mode);if (WARN_ON_ONCE (!function)) timer->function = hrtimer_dummy_timeout;
Signature · 1 line
2.39.5
PATCH 4/12 serial: xilinx_uartps: Use helper function hrtimer_update_function()
In reply to Nam CaoThere is a new helper function hrtimer_update_function() to change the hrtimer's callback function, which also performs additional runtime check that it is safe to change the callback.
Use the helper function instead of accessing 'function' directly.
---
Cc: Greg Kroah-Hartman <[email protected]>
--- drivers/tty/serial/xilinx_uartps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/tty/serial/xilinx_uartps.c +2 -2
@@ -454,7 +454,7 @@ static void cdns_uart_handle_tx(void *dev_id)if (cdns_uart->port->rs485.flags &SER_RS485_ENABLED && (kfifo_is_empty (&tport->xmit_fifo) ||uart_tx_stopped (port))) { - cdns_uart->tx_timer.function = &cdns_rs485_rx_callback; +hrtimer_update_function (&cdns_uart->tx_timer, cdns_rs485_rx_callback);hrtimer_start (&cdns_uart->tx_timer,ns_to_ktime (cdns_calc_after_tx_delay (cdns_uart)),HRTIMER_MODE_REL ); }
@@ -734,7 +734,7 @@ static void cdns_uart_start_tx(struct uart_port *port)if (cdns_uart->port->rs485.flags &SER_RS485_ENABLED ) {if (!cdns_uart->rs485_tx_started) { - cdns_uart->tx_timer.function = &cdns_rs485_tx_callback; +hrtimer_update_function (&cdns_uart->tx_timer, cdns_rs485_tx_callback);cdns_rs485_tx_setup (cdns_uart); return hrtimer_start(&cdns_uart->tx_timer, ms_to_ktime(port->rs485.delay_rts_before_send),
Signature · 1 line
2.39.5
PATCH 5/12 io_uring: Use helper function hrtimer_update_function()
In reply to Nam CaoThere is a new helper function hrtimer_update_function() to change the hrtimer's callback function, which also performs additional runtime check that it is safe to change the callback.
Use the helper function instead of accessing 'function' directly.
---
Cc: Jens Axboe <[email protected]>
--- io_uring/io_uring.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
io_uring/io_uring.c +1 -1
@@ -2423,7 +2423,7 @@ static enum hrtimer_restart io_cqring_min_timer_wakeup(struct hrtimer *timer) goto out_wake; } - iowq->t.function = io_cqring_timer_wakeup; +hrtimer_update_function (&iowq->t, io_cqring_timer_wakeup);hrtimer_set_expires (timer, iowq->timeout);return HRTIMER_RESTART ; out_wake:
Signature · 1 line
2.39.5
PATCH 6/12 wifi: rt2x00: Switch to use hrtimer_update_function()
In reply to Nam CaoThere is a new helper function hrtimer_update_function() to change the hrtimer's callback function, which also performs additional runtime check that it is safe to change the callback.
Use the helper function instead of accessing 'function' directly.
---
Cc: Kalle Valo <[email protected]>
--- drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 2 +- drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/net/wireless/ralink/rt2x00/rt2800mmio.c +1 -1
@@ -842,7 +842,7 @@ int rt2800mmio_probe_hw(struct rt2x00_dev *rt2x00dev)/* * Set txstatus timer function. */ - rt2x00dev->txstatus_timer.function = rt2800mmio_tx_sta_fifo_timeout; +hrtimer_update_function (&rt2x00dev->txstatus_timer, rt2800mmio_tx_sta_fifo_timeout);/* * Overwrite TX done handler
drivers/net/wireless/ralink/rt2x00/rt2800usb.c +1 -1
@@ -618,7 +618,7 @@ static int rt2800usb_probe_hw(struct rt2x00_dev *rt2x00dev)/* * Set txstatus timer function. */ - rt2x00dev->txstatus_timer.function = rt2800usb_tx_sta_fifo_timeout; +hrtimer_update_function (&rt2x00dev->txstatus_timer, rt2800usb_tx_sta_fifo_timeout);/* * Overwrite TX done handler
Signature · 1 line
2.39.5
PATCH 7/12 hrtimers: Make callback function pointer private
In reply to Nam CaoMake the field 'function' of struct hrtimer private, to prevent users from changing this field in an unsafe way. hrtimer_update_function() should be used if the callback function needs to be changed.
---
Cc: Steven Rostedt <[email protected]>
--- include/linux/hrtimer.h | 2 +- include/linux/hrtimer_types.h | 2 +- include/trace/events/timer.h | 4 ++-- kernel/time/hrtimer.c | 8 ++++---- kernel/time/timer_list.c | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-)
include/linux/hrtimer.h +1 -1
@@ -339,7 +339,7 @@ static inline void hrtimer_update_function(struct hrtimer *timer,if (WARN_ON_ONCE (!function))return ; - timer->function = function; +ACCESS_PRIVATE (timer, function) = function; }/* Forward a hrtimer so it expires after now: */
include/linux/hrtimer_types.h +1 -1
@@ -39,7 +39,7 @@ enum hrtimer_restart {struct hrtimer {struct timerqueue_node node;ktime_t _softexpires; -enum hrtimer_restart (*function)(struct hrtimer *); +enum hrtimer_restart (*__private function)(struct hrtimer *);struct hrtimer_clock_base *base;u8 state;u8 is_rel;
include/trace/events/timer.h +2 -2
@@ -235,7 +235,7 @@ TRACE_EVENT(hrtimer_start,TP_fast_assign ( __entry->hrtimer = hrtimer; - __entry->function = hrtimer->function; + __entry->function =ACCESS_PRIVATE (hrtimer, function); __entry->expires =hrtimer_get_expires (hrtimer); __entry->softexpires =hrtimer_get_softexpires (hrtimer); __entry->mode = mode;
@@ -271,7 +271,7 @@ TRACE_EVENT(hrtimer_expire_entry,TP_fast_assign ( __entry->hrtimer = hrtimer; __entry->now = *now; - __entry->function = hrtimer->function; + __entry->function =ACCESS_PRIVATE (hrtimer, function); ), TP_printk("hrtimer=%p function=%ps now=%llu",
kernel/time/hrtimer.c +4 -4
@@ -1276,7 +1276,7 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,struct hrtimer_clock_base *base;unsigned long flags; -if (WARN_ON_ONCE (!timer->function)) +if (WARN_ON_ONCE (!ACCESS_PRIVATE (timer, function)))return ;/* * Check whether the HRTIMER_MODE_SOFT bit and hrtimer.is_soft
@@ -1577,9 +1577,9 @@ static void __hrtimer_setup(struct hrtimer *timer,timerqueue_init (&timer->node);if (WARN_ON_ONCE (!function)) - timer->function = hrtimer_dummy_timeout; +ACCESS_PRIVATE (timer, function) = hrtimer_dummy_timeout;else - timer->function = function; +ACCESS_PRIVATE (timer, function) = function; }/**
@@ -1691,7 +1691,7 @@ static void __run_hrtimer(struct hrtimer_cpu_base *cpu_base,raw_write_seqcount_barrier (&base->seq);__remove_hrtimer (timer, base,HRTIMER_STATE_INACTIVE ,0 ); - fn = timer->function; + fn =ACCESS_PRIVATE (timer, function);/* * Clear the 'is relative' flag for the TIME_LOW_RES case. If the
kernel/time/timer_list.c +1 -1
@@ -46,7 +46,7 @@ static void print_timer(struct seq_file *m, struct hrtimer *taddr, struct hrtimer *timer, int idx, u64 now) { - SEQ_printf(m, " #%d: <%pK>, %ps", idx, taddr, timer->function); + SEQ_printf(m, " #%d: <%pK>, %ps", idx, taddr, ACCESS_PRIVATE(timer, function));SEQ_printf (m,", S:%02x" , timer->state);SEQ_printf (m,"\n" ); SEQ_printf(m, " # expires at %Lu-%Lu nsecs [in %Ld to %Ld nsecs]\n",
Signature · 1 line
2.39.5
PATCH 8/12 hrtimers: Remove unnecessary NULL check in hrtimer_start_range_ns()
In reply to Nam CaoThe 'function' field of struct hrtimer can only be changed using hrtimer_setup*() or hrtimer_update_function(), and both already null-check 'function'. Therefore, null-checking 'function' in hrtimer_start_range_ns() is not necessary.
--- kernel/time/hrtimer.c | 2 -- 1 file changed, 2 deletions(-)
kernel/time/hrtimer.c +0 -2
@@ -1276,8 +1276,6 @@ void hrtimer_start_range_ns(struct hrtimer *timer, ktime_t tim,struct hrtimer_clock_base *base;unsigned long flags; -if (WARN_ON_ONCE (!ACCESS_PRIVATE (timer, function))) -return ;/* * Check whether the HRTIMER_MODE_SOFT bit and hrtimer.is_soft * match on CONFIG_PREEMPT_RT = n. With PREEMPT_RT check the hard
Signature · 1 line
2.39.5
PATCH 9/12 hrtimers: Rename __hrtimer_init_sleeper() to __hrtimer_setup_sleeper()
In reply to Nam CaoAll the hrtimer_init*() functions have been renamed to hrtimer_setup*(). Rename __hrtimer_init_sleeper() to __hrtimer_setup_sleeper() as well, to keep the names consistent.
--- kernel/time/hrtimer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
kernel/time/hrtimer.c +4 -4
@@ -1964,7 +1964,7 @@ void hrtimer_sleeper_start_expires(struct hrtimer_sleeper *sl,* Make the enqueue delivery mode check work on RT. If the sleeper * was initialized for hard interrupt delivery, force the mode bit. * This is a special case for hrtimer_sleepers because -* __hrtimer_init_sleeper() determines the delivery mode on RT so the +* __hrtimer_setup_sleeper() determines the delivery mode on RT so the * fiddling with this decision is avoided at the call sites. */ if (IS_ENABLED (CONFIG_PREEMPT_RT ) && sl->timer.is_hard)
@@ -1974,8 +1974,8 @@ void hrtimer_sleeper_start_expires(struct hrtimer_sleeper *sl, }EXPORT_SYMBOL_GPL (hrtimer_sleeper_start_expires); -static void __hrtimer_init_sleeper (struct hrtimer_sleeper *sl, -clockid_t clock_id,enum hrtimer_mode mode) +static void __hrtimer_setup_sleeper (struct hrtimer_sleeper *sl, +clockid_t clock_id,enum hrtimer_mode mode) {/* * On PREEMPT_RT enabled kernels hrtimers which are not explicitly
@@ -2015,7 +2015,7 @@ void hrtimer_setup_sleeper_on_stack(struct hrtimer_sleeper *sl, clockid_t clock_id, enum hrtimer_mode mode) {debug_init_on_stack (&sl->timer, clock_id, mode); -__hrtimer_init_sleeper (sl, clock_id, mode); +__hrtimer_setup_sleeper (sl, clock_id, mode); }EXPORT_SYMBOL_GPL (hrtimer_setup_sleeper_on_stack);
Signature · 1 line
2.39.5
PATCH 10/12 hrtimers: Rename debug_init() to debug_setup()
In reply to Nam CaoAll the hrtimer_init*() functions have been renamed to hrtimer_setup*(). Rename debug_init() to debug_setup() as well, to keep the names consistent.
--- kernel/time/hrtimer.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
kernel/time/hrtimer.c +2 -4
@@ -448,9 +448,7 @@ static inline void debug_hrtimer_activate(struct hrtimer *timer,static inline void debug_hrtimer_deactivate (struct hrtimer *timer) { }#endif -static inline void -debug_init (struct hrtimer *timer,clockid_t clockid, -enum hrtimer_mode mode) +static inline void debug_setup (struct hrtimer *timer,clockid_t clockid,enum hrtimer_mode mode) {debug_hrtimer_init (timer);trace_hrtimer_init (timer, clockid, mode);
@@ -1596,7 +1594,7 @@ static void __hrtimer_setup(struct hrtimer *timer,void hrtimer_setup (struct hrtimer *timer,enum hrtimer_restart (*function)(struct hrtimer *),clockid_t clock_id,enum hrtimer_mode mode) { -debug_init (timer, clock_id, mode); +debug_setup (timer, clock_id, mode);__hrtimer_setup (timer, function, clock_id, mode); }EXPORT_SYMBOL_GPL (hrtimer_setup);
Signature · 1 line
2.39.5
PATCH 11/12 hrtimers: Rename debug_init_on_stack() to debug_setup_on_stack()
In reply to Nam CaoAll the hrtimer_init*() functions have been renamed to hrtimer_setup*(). Rename debug_init_on_stack() to debug_setup_on_stack() as well, to keep the names consistent.
--- kernel/time/hrtimer.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
kernel/time/hrtimer.c +4 -4
@@ -454,8 +454,8 @@ static inline void debug_setup(struct hrtimer *timer, clockid_t clockid, enum hrtrace_hrtimer_init (timer, clockid, mode); } -static inline void debug_init_on_stack (struct hrtimer *timer,clockid_t clockid, -enum hrtimer_mode mode) +static inline void debug_setup_on_stack (struct hrtimer *timer,clockid_t clockid, +enum hrtimer_mode mode) {debug_hrtimer_init_on_stack (timer);trace_hrtimer_init (timer, clockid, mode);
@@ -1613,7 +1613,7 @@ void hrtimer_setup_on_stack(struct hrtimer *timer,enum hrtimer_restart (*function)(struct hrtimer *), clockid_t clock_id, enum hrtimer_mode mode) { -debug_init_on_stack (timer ,clock_id ,mode ); +debug_setup_on_stack (timer ,clock_id ,mode );__hrtimer_setup (timer, function, clock_id, mode); }EXPORT_SYMBOL_GPL (hrtimer_setup_on_stack);
@@ -2012,7 +2012,7 @@ static void __hrtimer_setup_sleeper(struct hrtimer_sleeper *sl,void hrtimer_setup_sleeper_on_stack (struct hrtimer_sleeper *sl,clockid_t clock_id,enum hrtimer_mode mode) { -debug_init_on_stack (&sl->timer, clock_id, mode); +debug_setup_on_stack (&sl->timer, clock_id, mode);__hrtimer_setup_sleeper (sl, clock_id, mode); }EXPORT_SYMBOL_GPL (hrtimer_setup_sleeper_on_stack);
Signature · 1 line
2.39.5
PATCH 12/12 tracing/timers: Rename hrtimer_init event to hrtimer_setup
In reply to Nam CaoThe function hrtimer_init() doesn't exist anymore. It was replaced by hrtimer_setup().
Thus, rename the hrtimer_init trace event to hrtimer_setup to keep it consistent.
---
Cc: Steven Rostedt <[email protected]>
--- Documentation/trace/ftrace.rst | 4 ++-- include/trace/events/timer.h | 4 ++-- kernel/time/hrtimer.c | 4 ++-- tools/perf/tests/shell/trace_btf_enum.sh | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-)
Documentation/trace/ftrace.rst +2 -2
@@ -3070,7 +3070,7 @@ Notice that we lost the sys_nanosleep. # cat set_ftrace_filter hrtimer_run_queues hrtimer_run_pending - hrtimer_init + hrtimer_setup hrtimer_cancel hrtimer_try_to_cancel hrtimer_forward
@@ -3108,7 +3108,7 @@ Again, now we want to append. # cat set_ftrace_filter hrtimer_run_queues hrtimer_run_pending - hrtimer_init + hrtimer_setup hrtimer_cancel hrtimer_try_to_cancel hrtimer_forward
include/trace/events/timer.h +2 -2
@@ -185,12 +185,12 @@ TRACE_EVENT(timer_base_idle, { HRTIMER_MODE_REL_PINNED_HARD, "REL|PINNED|HARD" })/** -* hrtimer_init - called when the hrtimer is initialized +* hrtimer_setup - called when the hrtimer is initialized * @hrtimer: pointer to struct hrtimer * @clockid: the hrtimers clock * @mode: the hrtimers mode */ -TRACE_EVENT(hrtimer_init, +TRACE_EVENT(hrtimer_setup, TP_PROTO(struct hrtimer *hrtimer, clockid_t clockid, enum hrtimer_mode mode),
kernel/time/hrtimer.c +2 -2
@@ -451,14 +451,14 @@ static inline void debug_hrtimer_deactivate(struct hrtimer *timer) { }static inline void debug_setup (struct hrtimer *timer,clockid_t clockid,enum hrtimer_mode mode) {debug_hrtimer_init (timer); -trace_hrtimer_init (timer, clockid, mode); +trace_hrtimer_setup (timer, clockid, mode); }static inline void debug_setup_on_stack (struct hrtimer *timer,clockid_t clockid,enum hrtimer_mode mode) {debug_hrtimer_init_on_stack (timer); -trace_hrtimer_init (timer, clockid, mode); +trace_hrtimer_setup (timer, clockid, mode); } static inline void debug_activate(struct hrtimer *timer,
tools/perf/tests/shell/trace_btf_enum.sh +1 -1
@@ -6,7 +6,7 @@ err=0 set -e syscall="landlock_add_rule" -non_syscall="timer:hrtimer_init,timer:hrtimer_start" +non_syscall="timer:hrtimer_setup,timer:hrtimer_start" TESTPROG="perf test -w landlock"
Signature · 1 line
2.39.5