1*10465441SEvalZero /*
2*10465441SEvalZero * COPYRIGHT (C) 2018, Real-Thread Information Technology Ltd
3*10465441SEvalZero *
4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero *
6*10465441SEvalZero * Change Logs:
7*10465441SEvalZero * Date Author Notes
8*10465441SEvalZero * 2014-04-16 Grissiom first version
9*10465441SEvalZero */
10*10465441SEvalZero
11*10465441SEvalZero #include <rthw.h>
12*10465441SEvalZero #include <rtthread.h>
13*10465441SEvalZero
14*10465441SEvalZero #include "watermark_queue.h"
15*10465441SEvalZero
rt_wm_que_set_mark(struct rt_watermark_queue * wg,unsigned int low,unsigned int high)16*10465441SEvalZero void rt_wm_que_set_mark(struct rt_watermark_queue *wg,
17*10465441SEvalZero unsigned int low, unsigned int high)
18*10465441SEvalZero {
19*10465441SEvalZero RT_ASSERT(low <= high);
20*10465441SEvalZero
21*10465441SEvalZero wg->high_mark = high;
22*10465441SEvalZero wg->low_mark = low;
23*10465441SEvalZero }
24*10465441SEvalZero
rt_wm_que_init(struct rt_watermark_queue * wg,unsigned int low,unsigned int high)25*10465441SEvalZero void rt_wm_que_init(struct rt_watermark_queue *wg,
26*10465441SEvalZero unsigned int low, unsigned int high)
27*10465441SEvalZero {
28*10465441SEvalZero rt_wm_que_set_mark(wg, low, high);
29*10465441SEvalZero rt_list_init(&wg->suspended_threads);
30*10465441SEvalZero wg->level = 0;
31*10465441SEvalZero }
32*10465441SEvalZero
rt_wm_que_dump(struct rt_watermark_queue * wg)33*10465441SEvalZero void rt_wm_que_dump(struct rt_watermark_queue *wg)
34*10465441SEvalZero {
35*10465441SEvalZero struct rt_list_node *node;
36*10465441SEvalZero
37*10465441SEvalZero rt_kprintf("wg %p: low: %d, high: %d, cur: %d\n",
38*10465441SEvalZero wg, wg->low_mark, wg->high_mark, wg->level);
39*10465441SEvalZero rt_kprintf("thread suspend:");
40*10465441SEvalZero for (node = wg->suspended_threads.next;
41*10465441SEvalZero node != &wg->suspended_threads;
42*10465441SEvalZero node = node->next)
43*10465441SEvalZero {
44*10465441SEvalZero rt_thread_t thread;
45*10465441SEvalZero
46*10465441SEvalZero thread = rt_list_entry(wg->suspended_threads.next,
47*10465441SEvalZero struct rt_thread,
48*10465441SEvalZero tlist);
49*10465441SEvalZero rt_kprintf(" %.*s", RT_NAME_MAX, thread->name);
50*10465441SEvalZero }
51*10465441SEvalZero rt_kprintf("\n");
52*10465441SEvalZero }
53