当前位置: 技术问答>linux和unix
怎样将以下程序改为按时间片轮转的方式运行?
来源: 互联网 发布时间:2014-11-20
本文导语: //******************* // LTIMER.H //******************* #ifndef LTIMER_H #define LTIMER_H #define TRUE 1 #define FALSE 0 #ifndef MIN #define MIN(x,y) (((x) (y)) ? (x) : (y)) #define MID(x,y,z) MAX((x), MIN((y), (z))) #endif void lt_inst...
//*******************
// LTIMER.H
//*******************
#ifndef LTIMER_H
#define LTIMER_H
#define TRUE 1
#define FALSE 0
#ifndef MIN
#define MIN(x,y) (((x) (y)) ? (x) : (y))
#define MID(x,y,z) MAX((x), MIN((y), (z)))
#endif
void lt_install_timer(); // 初始化时钟系统
void lt_remove_timer(); // 结束系统
// 如果你不还原,系统会自动在程序结束时还原
long lt_clock(char swit); // 取时钟,参数swit为0,1代表取1.198181Hz 和200Hz的时钟
char lt_install_int_ex(void (*proc)(),long speed); // 设置并激活进程, // speed代表1198181Hz的系统时钟为标准的停顿时间
char lt_install_int(void (*proc)(),long speed); // 设置并激活进程
// speed代表千分之几秒
void lt_remove_int(void (*proc)()); // 结束系统
#endif
//*******************
// LTIMER.CPP
//*******************
// Timer Control
// support 16 processes running in different
// rate and in the same time
//
#include
#include
#include
#include
#include "ltimer.h"
#define MAX_TIMERS 3
void lt_install_timer();// 初始化时钟系统
void lt_remove_timer();// 结束系统.如果你不还原,系统会自动在程序结束时还原
long lt_clock(char swit); // 0: 1.19MHz 1:200Hz the same 取时钟,参数swit为0,1代表取1.198181Hz 和200Hz的时钟
char lt_install_int_ex(void (*proc)(),long speed);// 设置并激活进程,
char lt_install_int(void (*proc)(),long speed);// 设置并激活进程speed代表千分之几秒
void lt_remove_int(void (*proc)());// 结束系统
static long tinstall=0,autoexit=0,Timer_Delay=65536L;
static long lt_clock0=0, lt_clock1=0;
short lt_Intr=0x08;
// 进程定义结构
static struct {
void ((*proc)()); // 进程指针
long speed; // 进程的速度
long counter; // 计数器
} my_int_queue[MAX_TIMERS+1];
// 换算定义
#define TIMERS_PER_SECOND 1193181L
#define SECS_TO_TIMER(x) ((long)(x) * TIMERS_PER_SECOND)
#define MSEC_TO_TIMER(x) ((long)(x) * (TIMERS_PER_SECOND / 1000))
#define BPS_TO_TIMER(x) (TIMERS_PER_SECOND / (long)(x))
#define BPM_TO_TIMER(x) ((60 * TIMERS_PER_SECOND) / (long)(x))
#define LOVE_TIME_SPEED BPS_TO_TIMER(200)
static void interrupt MyInt8(...);//interrupt
//Use the interrupt function modifier to define a function as an interrupt handler.
//...表示参数的个数不确定?
static void interrupt far (*OldInt8)(...);
static void SetTimerRate(unsigned long v);
static int FindProc(void (*proc)());
static void UpdateRate();
// 在进程表中寻找一个与proc匹配的函数指针
// 如果没有找到则返回一个没有分配的进程
static int FindProc(void (*proc)())
{ int i;
for (i=0;i
// LTIMER.H
//*******************
#ifndef LTIMER_H
#define LTIMER_H
#define TRUE 1
#define FALSE 0
#ifndef MIN
#define MIN(x,y) (((x) (y)) ? (x) : (y))
#define MID(x,y,z) MAX((x), MIN((y), (z)))
#endif
void lt_install_timer(); // 初始化时钟系统
void lt_remove_timer(); // 结束系统
// 如果你不还原,系统会自动在程序结束时还原
long lt_clock(char swit); // 取时钟,参数swit为0,1代表取1.198181Hz 和200Hz的时钟
char lt_install_int_ex(void (*proc)(),long speed); // 设置并激活进程, // speed代表1198181Hz的系统时钟为标准的停顿时间
char lt_install_int(void (*proc)(),long speed); // 设置并激活进程
// speed代表千分之几秒
void lt_remove_int(void (*proc)()); // 结束系统
#endif
//*******************
// LTIMER.CPP
//*******************
// Timer Control
// support 16 processes running in different
// rate and in the same time
//
#include
#include
#include
#include
#include "ltimer.h"
#define MAX_TIMERS 3
void lt_install_timer();// 初始化时钟系统
void lt_remove_timer();// 结束系统.如果你不还原,系统会自动在程序结束时还原
long lt_clock(char swit); // 0: 1.19MHz 1:200Hz the same 取时钟,参数swit为0,1代表取1.198181Hz 和200Hz的时钟
char lt_install_int_ex(void (*proc)(),long speed);// 设置并激活进程,
char lt_install_int(void (*proc)(),long speed);// 设置并激活进程speed代表千分之几秒
void lt_remove_int(void (*proc)());// 结束系统
static long tinstall=0,autoexit=0,Timer_Delay=65536L;
static long lt_clock0=0, lt_clock1=0;
short lt_Intr=0x08;
// 进程定义结构
static struct {
void ((*proc)()); // 进程指针
long speed; // 进程的速度
long counter; // 计数器
} my_int_queue[MAX_TIMERS+1];
// 换算定义
#define TIMERS_PER_SECOND 1193181L
#define SECS_TO_TIMER(x) ((long)(x) * TIMERS_PER_SECOND)
#define MSEC_TO_TIMER(x) ((long)(x) * (TIMERS_PER_SECOND / 1000))
#define BPS_TO_TIMER(x) (TIMERS_PER_SECOND / (long)(x))
#define BPM_TO_TIMER(x) ((60 * TIMERS_PER_SECOND) / (long)(x))
#define LOVE_TIME_SPEED BPS_TO_TIMER(200)
static void interrupt MyInt8(...);//interrupt
//Use the interrupt function modifier to define a function as an interrupt handler.
//...表示参数的个数不确定?
static void interrupt far (*OldInt8)(...);
static void SetTimerRate(unsigned long v);
static int FindProc(void (*proc)());
static void UpdateRate();
// 在进程表中寻找一个与proc匹配的函数指针
// 如果没有找到则返回一个没有分配的进程
static int FindProc(void (*proc)())
{ int i;
for (i=0;i