j嵌入式f_os之定时管理

/*
 * jf_timer.h
 *
 *  Created on: Aug 20, 2016
 *      Author: lort
 */

#ifndef JF_OS_JF_TIMER_H_
#define JF_OS_JF_TIMER_H_

#include "jf_types.h"

typedef void (*time_fuc_t) (void *param);

typedef struct
{
    void     *next;
    uint32        decounter;
    uint32        reroad;
    time_fuc_t    fuc;
    void        *param;
}jf_timer_t;

#endif /* JF_OS_JF_TIMER_H_ */
#include "jf_types.h"
#include "jf_timer.h"
#include "jf_mem.h"

jf_timer_t *pjf_time = NULL;
void jf_timer_poll(uint32 ticks)
{
    jf_timer_t *pcur;
    if(pjf_time!=NULL)
    {
        pcur = pjf_time;
        while(pcur!=NULL)
        {
            if(pcur->param!=NULL)
            {
                if(pcur->decounter>=ticks)
                    pcur->decounter-=ticks;
                else
                {
                    pcur->decounter = 0;
                    pcur->fuc(pcur->param);
                    if(pcur->reroad)
                    {
                        pcur->decounter = pcur->reroad;
                    }
                    else
                    {
                        jf_free(pcur->param);
                        pcur->param = NULL;
                    }
                }
            }
            pcur = pcur->next;
        }
    }
}
int jf_timer_add(uint32 tim,uint32 reload, void *fuc,void *param)
{
    jf_timer_t *pcur;
    jf_timer_t *pnew;
    pnew = jf_malloc(sizeof(jf_timer_t));
    if(pnew!=NULL)
    {
        pnew->decounter = tim;
        pnew->reroad = reload;
        pnew->fuc = fuc;
        pnew->param = param;
        pnew->next = NULL;
    }
    else
        return -1;
    if(pjf_time==NULL)
    {
        pjf_time = pnew;
        return 0;
    }
    else
    {
        pcur = pjf_time;
        while(pcur->next!=NULL)
        {
            pcur = pcur->next;
        }
        pcur->next = pnew;
        return 0;
    }
}
时间: 2024-10-29 23:44:17

j嵌入式f_os之定时管理的相关文章

【嵌入式程序设计】——线程管理coroutine

非常好用的协程库,也可以当作线程管理来用 #include "coroutine.h" #include <stdio.h> struct args { int n; }; static void foo(struct schedule * S, void *ud) { struct args * arg = ud; int start = arg->n; int i; for (i=0;i<5;i++) { printf("coroutine %d

基于SOC方案的嵌入式开发-远程定时设备

Soc方案实现简单的定时开关灯 http://club.gizwits.com/forum.php?mod=viewthread&tid=7787&highlight=%E5%AE%9A%E6%97%B6 <ignore_js_op> 步骤②:定义三个数据点:             灯的总开关 (lightOpenOff): 布尔值类型  可写             定时器的总开关(isTimerOpen):布尔值  可写             定时开的时间(timerO

Unity游戏开发中的内存管理_资料

内存是手游的硬伤——Unity游戏Mono内存管理及泄漏http://wetest.qq.com/lab/view/135.html 深入浅出再谈Unity内存泄漏http://wetest.qq.com/lab/view/150.html 这一次,我优化了37%的内存http://wetest.qq.com/lab/view/147.html Unity项目资源加载与管理http://wetest.qq.com/lab/view/124.html Android应用内存泄露分析.改善经验总结h

Unity3d通用工具类之定时触发器

时隔多日,好不容易挤出点时间来写写博文.不容易,请送我几朵红花,点个赞也行. 今天呢,我们主要来扩展下通用工具类==>定时触发器. 顾名思义,所谓的定时触发器,就是告诉程序在过多长时间后,我要执行某个特定的任务. 比如举个小栗子: 电饭煲,相信大家都用过,当我们出去工作或者上学的时候,我们只要设置下煮饭时间,就可以安心的离开. 电饭煲会自动的开始计时工作,等到了你设置的时间后,他就会自动的开始煮饭啊什么的.而你却可以在远在千里的上班. 智能化,对就是这样的效果.我们今天就来写写这个智能的小东西.

C++服务器设计(四):超时管理机制设计

前四章介绍了系统层的设计,从这一章开始进入服务层的设计. 连接断开 在常见的服务器场景中,客户端断开连接的方式为被动关闭.即作为客户端请求完服务器的服务后,选择主动关闭同服务器的连接.在服务器的角度看,服务器是客户端连接套接字read系统调用返回0,触发关闭逻辑,服务器本地是被动关闭连接的. 但是在某些场景中,客户端虽然已经实际断开了与服务器的连接,但是服务器并不能及时检测出此时维护的连接已经断开的情景.在这种情况下,由于被动关闭的缘故,服务器并不会主动释放与该连接有关的资源.这些不能被释放的资

通过Powershell远程管理Windows Azure上的虚拟机

Windows Azure上连接虚拟机想必不是件难事尤其是连接Windows操作系统简单点几下鼠标通过远程桌面RDPWindows Azure虚拟机会帮助你自动创建远程连接RDP的Profile你就能体验到公有云带来的便利.由于虚拟机外部连接都是通过端口映射连接的.当然基于区域网络目前Azure.CN中新创建的虚拟网络已经都是区域网络了当然你目前仍然可以创建基于地缘组的虚拟网络虽然并不推荐后可以创建虚拟机实例级别的公共IP地址所以你也可以跳过通过"云服务"端口映射的RDP而直接连接虚拟

在Listener(监听器)定时启动的TimerTask(定时任务)中使用[email&#160;protected]注解的bean

1.有时候在项目中需要定时启动某个任务,对于这个需求,基于JavaEE规范,我们可以使用Listener与TimerTask来实现,代码如下: public class TestTaskListener implements ServletContextListener { //Context()初始化方法 @Override public void contextInitialized(ServletContextEvent sce) { //新建一个定时管理器 new TestTimerMa

Oracle HA双机主备基于共享存储模式并利用keepalived管理实现高可用

HA概述 HA(High Available)即由两台计算机组成并对外提供一组相同的服务,也叫做一主一备模式.正常情况下由主服务器提供服务,备服务器处于待机备用,备机可以随时接替主服务器的工作.也就是当主服务器宕机或所提供的服务不可用时,备用服务器会主动激活并且替换主服务器继续提供服务,这时主服务器上的服务资源包括网络(IP).存储.服务(Web/数据库)就会转移到备机接管,从而提供不间断的服务.基于此,便可以将服务器的宕机时间减少到最低,对业务实现不中断或短暂中断. 由一组计算机(多台)组成一

揭秘VxWorks——直击物联网安全罩门

转载:http://chuansong.me/n/1864339 VxWorks是美国风河(WindRiver)公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分.良好的持续发展能力.高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地. VxWorks支持几乎所有现代市场上的嵌入式CPU,包括x86系列.MIPS. PowerPC.Freescale ColdFire.Intel i960.SPARC.SH-4.ARM,Strong