|
获得一个线程的调度参数。将获得的policy和sched_param结构放在入口参数所指向的地址里面。
int pthread_make_periodic_np (pthread_t thread, hrtime start_time, hrtime_t period)
这个函数标记thread线程为可运行。线程将在start_time时刻开始运行,运行的时间间隔由period给定。
int pthread_wait_np (void)
pthread_wait_np函数将挂起当前运行发线程直到下一周期。这个线程必须是pthread_make_periodic_np函数标记为可执行。
int sched_get_priority_max (int policy)和
int sched_get_priority_min (int policy)
确定sched_priority可能的值。
4.3 编程示例
前面介绍了RTLinux的基本API,在这里以一个实例来说明RTLinux下的编程方法。这是一以测试RTLinux下中断延迟的程序。正如前面所说的,程序分为两部分,实时部分和非实时部分。实时部分通过使用一个模块,在将实时模块插入后,运行实时任务。对于非实时部分,实现对FIFO设备的读取,完成和实时任务的通信。

图4.2 实时程序结构图
4.3.1 实时部分
init_module完成对实时部分的初始化。cleanup_module实现关闭实时模块的任务。
/* * RTLinux scheduling accuracy measuring example */
#include <rtl.h>
#include <rtl_fifo.h>
#include <time.h>
#include <rtl_sched.h>
#include <rtl_sync.h>
#include <pthread.h>
#include <unistd.h>
#include <rtl_debug.h>
#include <errno.h>
#include "common.h"
int ntests=500;
int period=1000000;
int bperiod=3100000;
int mode=0;
int absolute=0;
int fifo_size=4000;
int advance=0;
MODULE_PARM(period,"i");
MODULE_PARM(bperiod,"i");
MODULE_PARM(ntests,"i");
MODULE_PARM(mode,"i");
MODULE_PARM(absolute,"i");
上一页 [1] [2] [3] [4] [5] [6] [7] [8] 下一页 没有相关教程
|