netbsd源码(3)

/* Operations on timevals. */

将时间结构数据归0,0L表示长整型的0,在此注意到秒、微秒等都是长整型。 

#define timerclear(tvp)(tvp)->tv_sec = (tvp)->tv_usec = 0L

时间是否已经设置成功(是否为0),如果成功则,返回1(逻辑真)

#define timerisset(tvp)((tvp)->tv_sec || (tvp)->tv_usec)

本博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/


可实现两个时间比较,如果秒数相等,再比较微秒,否则直接比较秒数,比较操作符通过cmp参数传送

#define timercmp(tvp, uvp, cmp) \
(((tvp)->tv_sec == (uvp)->tv_sec) ? \
   ((tvp)->tv_usec cmp (uvp)->tv_usec) : \

   ((tvp)->tv_sec cmp (uvp)->tv_sec))

时间相加,先秒相加,然后实现微秒的相加后再进位。

#define timeradd(tvp, uvp, vvp) \
do { \
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
if ((vvp)->tv_usec >= 1000000) { \
(vvp)->tv_sec++; \
(vvp)->tv_usec -= 1000000; \
} \

} while (/* CONSTCOND */ 0)


时间相减,先秒相减,然后实现微秒的相减后再退位。

#define timersub(tvp, uvp, vvp) \
do { \
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
if ((vvp)->tv_usec < 0) { \
(vvp)->tv_sec--; \
(vvp)->tv_usec += 1000000; \
} \
} while (/* CONSTCOND */ 0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值