File: i915_timer_util.c

package info (click to toggle)
linux 6.18.15-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,742,528 kB
  • sloc: ansic: 26,787,393; asm: 272,099; sh: 148,804; python: 79,243; makefile: 57,755; perl: 36,527; xml: 19,542; cpp: 5,913; yacc: 4,939; lex: 2,950; awk: 1,607; sed: 30; ruby: 25
file content (36 lines) | stat: -rw-r--r-- 799 bytes parent folder | download | duplicates (12)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// SPDX-License-Identifier: MIT
/* Copyright © 2025 Intel Corporation */

#include <linux/jiffies.h>

#include "i915_timer_util.h"

void cancel_timer(struct timer_list *t)
{
	if (!timer_active(t))
		return;

	timer_delete(t);
	WRITE_ONCE(t->expires, 0);
}

void set_timer_ms(struct timer_list *t, unsigned long timeout)
{
	if (!timeout) {
		cancel_timer(t);
		return;
	}

	timeout = msecs_to_jiffies(timeout);

	/*
	 * Paranoia to make sure the compiler computes the timeout before
	 * loading 'jiffies' as jiffies is volatile and may be updated in
	 * the background by a timer tick. All to reduce the complexity
	 * of the addition and reduce the risk of losing a jiffy.
	 */
	barrier();

	/* Keep t->expires = 0 reserved to indicate a canceled timer. */
	mod_timer(t, jiffies + timeout ?: 1);
}