?? 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 + -