⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxvendor.h

📁 上传一个带源代码的嵌入式实时多任务操作系统CMX
💻 H
字号:
/* for Tasking 80C16x */

#ifdef CMXMODULE
#include <reg167.h>	/* change ONLY if different processor reg file */
#endif
#define PROCESSOR 80166

#define PROC_DISABLE_INT K_OS_Disable_Interrupts()
#define PROC_ENABLE_INT K_OS_Enable_Interrupts()

#define PROC_SAVE_INT K_OS_Save_Interrupts()
#define PROC_RESTORE_INT K_OS_Restore_Interrupts()

typedef void (*CMX_FP)(void); 
/* or 
typedef void (far *CMX_FP)(void); 
typedef void (*CMX_FP)(void); 
*/

/* load in tasks STACK address. */
/* adjust stack memory block. */

#define CXTCRE_SPECIFIC() {tcbptr->stk_start = stack_blk; stack_blk -= stack_size / 2; } 

#ifdef CMX_INIT_MODULE 

near byte locked_out;	/* disable task switching */
near byte in_ctr;			/* position within interrupt pipe to place bytes */
near byte out_ctr;		/* position within interrupt pipe to remove bytes */
near byte pipe_slots_avail;
near word16 ie_holder;

/*
The following is only used by the CMX Kernel Aware DLL.
You must NOT touch the following #defines.
*/

#if _MODEL == 'l' || _MODEL == 'L'
#define CMX_X 'l'		/* Large Memory model */
#elif _MODEL == 'm' || _MODEL == 'M'
#define CMX_X 'm'		/* Medium Memory model */
#elif _MODEL == 's' || _MODEL == 'S'
#define CMX_X 's'		/* Small Memory model */
#elif _MODEL == 't' || _MODEL == 'T'
#define CMX_X 't'		/* Tiny Memory model */
#else
#define CMX_X 'e'		/* Error */
#endif

byte mem_model = CMX_X;

/* Done memory model declaration */

#else

extern near byte locked_out;	
extern near byte in_ctr;
extern near byte out_ctr;
extern near word16 ie_holder;

#if (defined(CMXTRACKER) || defined(WINTRACKER))
extern byte CMXTRACKER_ON;
#endif

#endif

extern bitword cmx_flag1;		/* contains flags, for CMX internal use */

extern bit preempted; 		/* preempted flag */
extern bit do_timer_tsk; 	/* do timer task flag */
extern bit do_time_slice;	/* do time slice, next task to slice */
extern bit slice_enable;		/* time slicing enabled */
extern bit do_coop_sched;	/* do a cooperative schedule, to NEXT task that can run */
extern bit do_int_pipe; 		/* process interrupt pipe */
extern bit idle_flag; 		/* helps determines power down mode */
extern bit cmx_active; 		/* identifies that CMX RTOS entered */


#define PREEMPTED preempted = 1
#define TEST_NOT_PREEMPTED !(preempted)
#define DO_TIMER_TSK do_timer_tsk = 1
#define DO_TIME_SLICE do_time_slice = 1
#define TEST_SLICE_ENABLE	slice_enable
#define SLICE_DISABLE slice_enable = 0
#define SLICE_ENABLE	slice_enable = 1
#define DO_COOP_SCHED do_coop_sched = 1
#define DO_INT_PIPE do_int_pipe = 1
#define CLR_DO_INT_PIPE do_int_pipe = 0
#define TEST_CMX_ACTIVE cmx_active
#define CMX_ACTIVE cmx_active = 1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -