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