Skip to content

Commit e62817e

Browse files
committed
create->init
1 parent 51044cd commit e62817e

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

components/drivers/ktime/inc/ktime.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222

2323
struct rt_ktime_hrtimer
2424
{
25-
rt_uint8_t flag; /**< compatible to tick timer's flag */
26-
const char *name;
25+
rt_uint8_t flag; /**< compatible to tick timer's flag */
26+
char name[RT_NAME_MAX];
2727
rt_list_t node;
2828
void *parameter;
2929
unsigned long delay_cnt;

components/drivers/ktime/src/hrtimer.c

+9-4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ static void _hrtimer_timeout(void *parameter)
5252
_outcb(parameter);
5353
}
5454

55+
static struct rt_timer _sh_rtimer;
56+
5557
rt_weak rt_err_t rt_ktime_hrtimer_settimeout(unsigned long cnt, void (*timeout)(void *param), void *param)
5658
{
5759
static rt_timer_t timer = RT_NULL;
@@ -75,7 +77,8 @@ rt_weak rt_err_t rt_ktime_hrtimer_settimeout(unsigned long cnt, void (*timeout)(
7577

7678
if (timer == RT_NULL)
7779
{
78-
timer = rt_timer_create("shrtimer", _hrtimer_timeout, param, cnt, RT_TIMER_FLAG_ONE_SHOT);
80+
timer = &_sh_rtimer;
81+
rt_timer_init(timer, "shrtimer", _hrtimer_timeout, param, cnt, RT_TIMER_FLAG_ONE_SHOT);
7982
}
8083
else
8184
{
@@ -209,8 +212,10 @@ void rt_ktime_hrtimer_init(rt_ktime_hrtimer_t timer,
209212
RT_ASSERT(timer != RT_NULL);
210213
RT_ASSERT(timeout != RT_NULL);
211214

215+
rt_memset(timer, 0, sizeof(struct rt_ktime_hrtimer));
216+
212217
timer->flag = flag;
213-
timer->name = name;
218+
rt_strncpy(timer->name, name, RT_NAME_MAX - 1);
214219

215220
/* set deactivated */
216221
timer->flag &= ~RT_TIMER_FLAG_ACTIVATED;
@@ -228,13 +233,13 @@ rt_err_t rt_ktime_hrtimer_start(rt_ktime_hrtimer_t timer, unsigned long delay_cn
228233
/* parameter check */
229234
RT_ASSERT(timer != RT_NULL);
230235
RT_ASSERT(delay_cnt < (_HRTIMER_MAX_CNT / 2));
231-
RT_ASSERT((timer->flag & RT_TIMER_FLAG_ACTIVATED) == 0);
232236

233237
timer->delay_cnt = delay_cnt;
234238
timer->timeout_cnt = timer->delay_cnt + rt_ktime_cputimer_getcnt();
235239

236240
level = rt_spin_lock_irqsave(&_spinlock);
237241

242+
rt_list_remove(&timer->node);
238243
_insert_timer_to_list_locked(timer);
239244
_set_next_timeout_locked();
240245

@@ -388,7 +393,7 @@ rt_err_t rt_ktime_hrtimer_sleep(struct rt_ktime_hrtimer *timer, unsigned long cn
388393
RT_INTERRUPTIBLE);
389394
rt_ktime_hrtimer_keep_errno(timer, err);
390395

391-
return RT_EOK;
396+
return err;
392397
}
393398

394399
rt_err_t rt_ktime_hrtimer_ndelay(struct rt_ktime_hrtimer *timer, unsigned long ns)

0 commit comments

Comments
 (0)