Skip to content

Commit 414c189

Browse files
committed
添加bitops 添加 增量时间获得
1 parent 83f6747 commit 414c189

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

include/rtdef.h

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1450,6 +1450,33 @@ typedef struct rt_channel *rt_channel_t;
14501450
/**@}*/
14511451
#endif /* RT_USING_DEVICE */
14521452

1453+
/* BITOPS */
1454+
1455+
#if defined (ARCH_CPU_64BIT)
1456+
#define BITS_PER_LONG 64
1457+
#else
1458+
#define BITS_PER_LONG 32
1459+
#endif
1460+
#define BITS_PER_LONG_LONG 64
1461+
1462+
#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
1463+
1464+
#define BIT(nr) (1UL << (nr))
1465+
#define BIT_ULL(nr) (1ULL << (nr))
1466+
#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
1467+
#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
1468+
#define BIT_ULL_MASK(nr) (1ULL << ((nr) % BITS_PER_LONG_LONG))
1469+
#define BIT_ULL_WORD(nr) ((nr) / BITS_PER_LONG_LONG)
1470+
#define BITS_PER_BYTE 8
1471+
#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
1472+
1473+
#define GENMASK(h, l) \
1474+
(((~0UL) << (l)) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
1475+
1476+
#define GENMASK_ULL(h, l) \
1477+
(((~0ULL) << (l)) & (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
1478+
1479+
14531480
#ifdef __cplusplus
14541481
}
14551482
#endif

include/rtthread.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ void rt_object_put_sethook(void (*hook)(struct rt_object *object));
9898
* clock & timer interface
9999
*/
100100
rt_tick_t rt_tick_get(void);
101+
rt_tick_t rt_delta_tick_get(rt_tick_t last_time);
101102
void rt_tick_set(rt_tick_t tick);
102103
void rt_tick_increase(void);
103104
void rt_tick_increase_tick(rt_tick_t tick);

src/clock.c

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,24 @@ rt_tick_t rt_tick_get(void)
7373
}
7474
RTM_EXPORT(rt_tick_get);
7575

76+
/**
77+
* @brief This function will return delta tick from last_time.
78+
*
79+
* @param last_time to consider
80+
*
81+
* @return Return delta tick.
82+
*/
83+
rt_tick_t rt_delta_tick_get(rt_tick_t last_time)
84+
{
85+
rt_tick_t tnow = rt_tick_get();
86+
if (tnow >= last_time) {
87+
return (tnow - last_time);
88+
} else {
89+
return (UINT32_MAX - last_time + tnow + 1);
90+
}
91+
}
92+
RTM_EXPORT(rt_delta_tick_get);
93+
7694
/**
7795
* @brief This function will set current tick.
7896
*

0 commit comments

Comments
 (0)