Commit 5f55fed4 authored by Krzysztof Chruściński's avatar Krzysztof Chruściński Committed by Benjamin Cabé
Browse files

kernel: timeout: z_add_timeout to return expiration tick

Add return value to z_add_timeout. It returns system tick when timeout
will expire.

Signed-off-by: default avatarKrzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
parent 6d35969a
Loading
Loading
Loading
Loading
+9 −5
Changes for kernel/include/timeout_q.h: 9 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -30,8 +30,11 @@ static inline void z_init_timeout(struct _timeout *to)
	sys_dnode_init(&to->node);
}

void z_add_timeout(struct _timeout *to, _timeout_func_t fn,
		   k_timeout_t timeout);
/* Adds the timeout to the queue.
 *
 * @return Absolute tick value when timeout will expire.
 */
k_ticks_t z_add_timeout(struct _timeout *to, _timeout_func_t fn, k_timeout_t timeout);

int z_abort_timeout(struct _timeout *to);

@@ -53,9 +56,9 @@ static inline void z_init_thread_timeout(struct _thread_base *thread_base)

extern void z_thread_timeout(struct _timeout *timeout);

static inline void z_add_thread_timeout(struct k_thread *thread, k_timeout_t ticks)
static inline k_ticks_t z_add_thread_timeout(struct k_thread *thread, k_timeout_t ticks)
{
	z_add_timeout(&thread->base.timeout, z_thread_timeout, ticks);
	return z_add_timeout(&thread->base.timeout, z_thread_timeout, ticks);
}

static inline void z_abort_thread_timeout(struct k_thread *thread)
@@ -84,10 +87,11 @@ k_ticks_t z_timeout_remaining(const struct _timeout *timeout);
#define z_get_next_timeout_expiry() ((int32_t) K_TICKS_FOREVER)
#define z_set_timeout_expiry(ticks, is_idle) do {} while (false)

static inline void z_add_thread_timeout(struct k_thread *thread, k_timeout_t ticks)
static inline k_ticks_t z_add_thread_timeout(struct k_thread *thread, k_timeout_t ticks)
{
	ARG_UNUSED(thread);
	ARG_UNUSED(ticks);
	return 0;
}

#endif /* CONFIG_SYS_CLOCK_EXISTS */
+10 −5
Changes for kernel/timeout.c: 10 added lines, 5 removed lines.
Original line number Diff line number Diff line
@@ -99,11 +99,12 @@ static int32_t next_timeout(int32_t ticks_elapsed)
	return ret;
}

void z_add_timeout(struct _timeout *to, _timeout_func_t fn,
		   k_timeout_t timeout)
k_ticks_t z_add_timeout(struct _timeout *to, _timeout_func_t fn, k_timeout_t timeout)
{
	k_ticks_t ticks = 0;

	if (K_TIMEOUT_EQ(timeout, K_FOREVER)) {
		return;
		return 0;
	}

#ifdef CONFIG_KERNEL_COHERENCE
@@ -122,10 +123,12 @@ void z_add_timeout(struct _timeout *to, _timeout_func_t fn,
			ticks_elapsed = elapsed();
			has_elapsed = true;
			to->dticks = timeout.ticks + 1 + ticks_elapsed;
			ticks = curr_tick + to->dticks;
		} else {
			k_ticks_t ticks = Z_TICK_ABS(timeout.ticks) - curr_tick;
			k_ticks_t dticks = Z_TICK_ABS(timeout.ticks) - curr_tick;

			to->dticks = MAX(1, ticks);
			to->dticks = MAX(1, dticks);
			ticks = timeout.ticks;
		}

		for (t = first(); t != NULL; t = next(t)) {
@@ -151,6 +154,8 @@ void z_add_timeout(struct _timeout *to, _timeout_func_t fn,
			sys_clock_set_timeout(next_timeout(ticks_elapsed), false);
		}
	}

	return ticks;
}

int z_abort_timeout(struct _timeout *to)
+2 −2
Changes for tests/kernel/timer/timer_error_case/src/main.c: 2 added lines, 2 removed lines.
Original line number Diff line number Diff line
@@ -325,8 +325,8 @@ ZTEST_USER(timer_api_error, test_timer_user_data_set_null)
	k_thread_join(tid, K_FOREVER);
}

extern void z_add_timeout(struct _timeout *to, _timeout_func_t fn,
			  k_timeout_t timeout);
extern k_ticks_t z_add_timeout(struct _timeout *to, _timeout_func_t fn, k_timeout_t timeout);

static void test_timer_handle(struct _timeout *t)
{
	/**do nothing here**/