基于链表的定时器管理(三)

5. 启动定时器 (timer_start) (工作中经常用到)


timer_start 函数接收定时器的过期时间和回调函数,并将定时器节点插入到定时器链表中。

int timer_start(timer_list_t *timer_list,
                timer_node_t *timer_node,
                UINT32 expire_time,
                TIMER_FUNC timeout_routine,
                void *arg1,
                void *arg2,
                void *arg3)
{
    timer_node_t *pt_node = NULL;
    struct list_head *prev = NULL, *l = NULL;
    struct timespec time;

    // 参数验证:如果传入的定时器列表或定时器节点为NULL,返回错误
    if (timer_list == NULL || timer_node == NULL)
    {
        return ERROR;
    }

    // 获取当前时间
    clock_gettime(CLOCK_MONOTONIC, &time);

    // 设置定时器的过期时间,过期时间为当前时间加上expire_time
    time.tv_sec += expire_t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dlz0836

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值