KLite 基本API介绍
来源:互联网 发布:淘宝直播怎么开通不了 编辑:程序博客网 时间:2024/06/18 15:32
KLite的API风格非常简洁,先来看看头文件。
/******************************************************************************* 多任务内核头文件* 作者:蒋晓岗*******************************************************************************/#ifndef __OS_H#define __OS_H#include <stddef.h>#include <stdint.h>/******************************************************************************* 数据定义******************************************************************************/typedef void*os_thread_t;typedef void*os_mutex_t;typedef void*os_sem_t;typedef void*os_event_t;/******************************************************************************* OS初始化* 初始化时需要提供内存管理的起始地址和可用内存大小******************************************************************************/void os_init(void* heap, uint32_t heap_size);void os_exec(void);void os_sleep(uint32_t ms);uint32_t os_time(void);/******************************************************************************* 内存******************************************************************************/void* os_malloc(uint32_t size);void os_free(void* p);void os_meminfo(uint32_t* total, uint32_t* free);/******************************************************************************* 线程******************************************************************************/os_thread_t os_thread_create(void(*thread_main)(void*),void* param, uint32_t stk_size);void os_thread_destroy(os_thread_t thread);void os_thread_exit(void);os_thread_t os_thread_self(void);/******************************************************************************* 互斥锁******************************************************************************/os_mutex_t os_mutex_create(void);void os_mutex_destroy(os_mutex_t mutex);void os_mutex_lock(os_mutex_t mutex);void os_mutex_unlock(os_mutex_t mutex);/******************************************************************************* 事件******************************************************************************/os_event_t os_event_create(uint8_t state);void os_event_destroy(os_event_t event);void os_event_post(os_event_t event);void os_event_wait(os_event_t event);//等待超时返回0uint32_t os_event_timedwait(os_event_t event, uint32_t timeout);/******************************************************************************* 信号量******************************************************************************/os_sem_t os_sem_create(uint32_t value);void os_sem_destroy(os_sem_t sem);void os_sem_post(os_sem_t sem);void os_sem_wait(os_sem_t sem);//等待超时返回0uint32_t os_sem_timedwait(os_sem_t sem, uint32_t timeout);uint32_t os_sem_getvalue(os_sem_t sem);/******************************************************************************* 版本号* 32bit/8+8+16/M.S.B******************************************************************************/uint32_t os_version(void);#endif
头文件包含了KLite的所有API函数,函数数量不多,分为几个部分,都是一些非常常用的API接口,可以满足大多数的嵌入式多线程软件开发。
第一组:kernel相关
//kernel 初始化
void os_init(void* heap, uint32_t heap_size);
//kernel启动并运行
void os_exec(void);
//线程内延时函数单位毫秒
void os_sleep(uint32_t ms);
//获取内核启动至今的时间,单位毫秒
uint32_t os_time(void);
第二组:内存管理
//从内核堆空间里申请一片连续的内存
void* os_malloc(uint32_t size);
//释放刚才申请的内存
void os_free(void* p);
//查询内核堆空间使用信息
void os_meminfo(uint32_t* total, uint32_t* free);
第三组:线程管理
//创建一个新的线程,返回线程句柄
os_thread_t os_thread_create(void(*thread_main)(void*),void* param, uint32_t stk_size);
//结束一个线程
void os_thread_destroy(os_thread_t thread);
//线程自尽函数,自尽=自杀,你懂的
void os_thread_exit(void);
//返回当前线程的够句柄
os_thread_t os_thread_self(void);
第四组:线程锁
//创建一个新的线程锁,返回线程锁句柄
os_mutex_t os_mutex_create(void);
//销毁一个线程锁
void os_mutex_destroy(os_mutex_t mutex);
//线程锁等待解锁并锁定
void os_mutex_lock(os_mutex_t mutex);
//线程锁解锁
void os_mutex_unlock(os_mutex_t mutex);
第五组:单一事件
//创建一个新的事件实例
os_event_t os_event_create(uint8_t state);
//销毁一个事件
void os_event_destroy(os_event_t event);
//通知事件有效
void os_event_post(os_event_t event);
//等待事件
void os_event_wait(os_event_t event);
//定时等待事件,超时返回0,否则返回1
uint32_t os_event_timedwait(os_event_t event, uint32_t timeout);
第六组:信号量
//创建一个初始值为value的信号量
os_sem_t os_sem_create(uint32_t value);
//销毁一个信号量
void os_sem_destroy(os_sem_t sem);
//通知信号量有效数量加1
void os_sem_post(os_sem_t sem);
//等待信号量有效,并减1
void os_sem_wait(os_sem_t sem);
//定时等待信号量,超时返回0,否则返回1
uint32_t os_sem_timedwait(os_sem_t sem, uint32_t timeout);
- KLite 基本API介绍
- KLite 第一部分 内核初始化API
- KLite 第二部分 线程管理API
- KLite 第三部分 线程互斥锁API
- KLite 第四部分 线程事件同步API
- KLite 第五部分 线程信号量同步API
- 嵌入式操作系统内核KLite的API详解
- sockets API的基本介绍
- CasperJS API介绍(2)-- CasperJS最基本API介绍
- servlet-api基本类和接口介绍
- servlet-api基本类和接口介绍
- 使用eBay API基本步骤介绍
- 03.ZooKeeper读书笔记之基本API介绍
- vector容器介绍及基本API
- zookeeper基本api介绍和使用
- ros talker listener主要基本api 介绍
- 循环链表api基本介绍
- MYSQL API以及基本操作介绍以及,MYSQL_FIELD介绍
- Makefile选项CFLAGS、LDFLAGS、LIBS
- MFC--控件改变编辑框的字体和颜色
- 过滤器——拦截用户访问权限
- HashMap中插入null key的过程分析
- C++项目参考解答:小试循环
- KLite 基本API介绍
- GPUImage遇到的坑
- 隐马尔可夫模型(HMM)攻略
- wordpress发布文章404
- IBM Rational Software Architect(RSA) 添加或删除功能部件
- Lucene中的优先PriorityQueue排序实现
- Genymotion添加devices时出现Connection timeout occurred的解决办法
- java.net.MalformedURLException: no protocol解决方法
- SGI STL (3) :: Thread Safe