linux实时操作系统开发与设计

linux实时操作系统开发与设计

ID:33591990

大小:135.80 KB

页数:16页

时间:2019-02-27

linux实时操作系统开发与设计_第1页
linux实时操作系统开发与设计_第2页
linux实时操作系统开发与设计_第3页
linux实时操作系统开发与设计_第4页
linux实时操作系统开发与设计_第5页
资源描述:

《linux实时操作系统开发与设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、http://www.elecfans.com电子发烧友http://bbs.elecfans.com电子技术论坛Linux嵌入式实时操作系统开发与设计(5)关键词:Linux,嵌入式,实时操作系统4.1程序结构每个实时应用程序可以分为两部分:实时部分和非实时部分[2]。非实时部分在用户空间执行,称为用户部分。实时部分要尽可能简单,只包含直接与时间相关的代码;由于硬件对时间的约束,低级的与硬件通信的代码一般也包含在实时部分。用户部分的代码主要实现为数据的处理,包括数据的发布、保存和用户界面。两部分之间的通信采用数据缓冲

2、区。图4.1所示的数据流程图是依照这个程序模型的典型实时应用程序。4.2基本API4.2.1POSIX线程创建函数就像前面介绍的那样,一个实时程序是由几个执行的线程组成的。线程是轻量级进程,它们共享共有的地址空间。在RTLinux中,所有的线程共享Linux内核地址空间。intpthread_create(pthread_t*thread,pthread_attr_t*attr,void*(*start_routine)(void*),void*arg)http://www.elecfans.com电子发烧友http:

3、//bbs.elecfans.com电子技术论坛这是RTLinux的标准POSIX线程创建函数。这个线程运行函数指针start_routine指向的过程,arg是这个函数的指针的入口参数。线程的属性由attr对象决定,可以为这个属性设置CPU号、堆栈大小等属性。设定若为NULL,将会使用默认属性。返回0表示成功创建线程,线程号放在thread所指向的空间;返回非0表示创建失败。线程的属性决定在特定的CPU上创建线程(pthread_attr_setcpu_np),是否使用FPU(pthread_attr_setfp_n

4、p)。intpthread_attr_init(pthread_attr_t*attr)初始化线程运行的属性。intpthread_attr_setschedparam(pthread_attr_t*attr,conststructsched_param*param)和intpthread_attr_setschedparam(constpthread_attr_t*attr,structsched_param*param)这两个函数根据程序的需要相应地从attr中设定/取得线程的运行参数。param是为调度的SCHE

5、D_FIFO和SCHED_RR策略定义的属性。intpthread_attr_setcpu_np(pthread_atte_t*attr,intcpu)和intpthread_attr_getcpu_np(pthread_atte_t*attr,intcpu)设定/取得线程运行的CPU号。在SMP机器上允许线程在一个特定的CPU上运行。intpthread_cancel(pthread_tthread)取消一个运行的线程。intpthread_delete_np(pthread_tthread)删除一个线程,并且释放该

6、线程的所有资源。返回0表示成功删除,非0表示删除失败。pthrad_tpthread_self(void)获得当前正在运行的线程号。clockid_trtl_getschedclock(void)获得当前调度方法的时钟。http://www.elecfans.com电子发烧友http://bbs.elecfans.com电子技术论坛intrtl_setclockmode(clockid_tclock,intmode,hrtime_tmode_param)设置当前的时钟模式,mode=RTL_CLOCK_MODE_ONE

7、SHOT时是非周期(一次性)模式mode_param参数无用;mode=RTL_CLOCK_MODE_PERIODIC时是周期模式,mode_param参数是周期的长度。(有关时钟模式见3.4节的说明)intpthread_wait_np(void)当前周期的线程运行结束,总是返回0。4.2.2时间相关函数RTLinux提供了一些时钟函数用于计时功能,包括线程调度,获得TSP(timestamps)等。下面的是一般的计时函数:/*#include*/intclock_gettime(clockid_tclock_id,

8、structtimespec*ts);hrtime_tclock_gethrtime(clockid_tclock);structtimespec{time_ttv_sec;/*秒*/longtv_nsec;/*纳秒*/};clock_gettime:读取当前的时间,保存到clock_id所指的对象中。clock_gethrtim

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。