📄 lprocess.h
字号:
#include <windows.h>
#ifndef _LPCB
#define _LPCB
#define DEBUG_PRINT_PID
#include <stdio.h>
#define LPROCESS 500 //定义最大逻辑进程数
#define MAX_SUSPEND_TIME 0 //最大悬挂时长(ms)
#define SCANNER_INTERVAL 10 //扫描周期(>=10ms)
#define PID_FREE 0 //进程空闲内部标识
#define PID_BUSY 1 //进程为忙内部标识
#define PID_SUSPEND 2 //进程悬挂内部标识
typedef struct {
short process_id;
char function_id;
char module_id;
} LPID_t;
// 进程控制区
struct lprocess_head_t
{
int suspend_max_count; //最大悬挂时间片
int busy_head;
int free_head;
int suspend_head;
int free_node; // 空闲逻辑进程数
} process_head;
struct lprocess_control_t
{
int flag;
LPID_t pid;
int suspend_count; //剩余时间片
int prev;
int next;
} process_control[LPROCESS];
HANDLE lprocess_mutex; //进程控制区互斥量
#endif
//逻辑进程管理外部接口函数
//初始化逻辑进程管理例程
extern void init_pid();
//分配一个pid
//入口:字符指针,指向4字节的进程标识,其中必须填入功能块及模块号
//返回:>=0,成功,即分配的逻辑进程句柄,-1:失败
extern int alloc_pid(char *);
//释放一个pid
//入口:字符指针,指向4字节的进程标识
//返回:>=0,成功,即释放的逻辑进程句柄,-1:失败
extern int free_pid(char *pid);
//判断一个进程是否为忙
//入口:字符指针,指向4字节的进程标识
//返回:0,忙,-1:不忙(空闲或悬挂)
extern int is_busy_pid(char *pid);
//逻辑进程管理例程内部使用的函数
//开启悬挂进程扫描器
extern void set_suspend_scanner();
//申请一个进程
extern int alloc_a_pid(LPID_t);
//释放一个进程
extern int free_a_pid(LPID_t);
//判一个进程是否为忙
extern int is_a_busy_pid(LPID_t);
//扫描悬挂进程队列
extern void scan_suspend(void *dummy);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -