亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tsk.h

?? 一個(gè)多任務(wù)操作系統(tǒng)CTask的源代碼 用C語(yǔ)言編寫
?? H
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/*
   --- Version 2.2 93-06-08 10:41 ---

   TSK.H - CTask - Type definitions and global routine prototypes.

   Public Domain Software written by
      Thomas Wagner
      Ferrari electronic Gmbh
      Beusselstrasse 27
      D-1000 Berlin 21
      Germany
*/


#include "tskconf.h"
#include <stdio.h>
#include <dos.h>
#include <conio.h>
#include <stdlib.h>

#if defined(__TURBOC__)
#define TSK_TURBO  1
#define TSK_MSC    0
#else
#define TSK_TURBO  0
#define TSK_MSC    1
#endif

/* 
   Selecting near/far and calling sequence attributes:

   For Turbo and Microsoft, you won't have to change the following
   defines. Just set the NEAR_CODE and LOCALS_FAR defines, and the
   CALL_PASCAL define, in tskconf.h.

   Other compilers may or may not support some aspects of the model
   mix used in standard CTask. For those compilers, you may have to
   edit the definitions to suit your memory model.

   Globalfunc  defines a global CTask routine.
               The attributes are normally "far cdecl", but may also
               be "near" and/or "pascal", depending on configuration.

   CGlobalfunc defines a global CTask routine that must be called
               using the C calling sequence.
               The attributes are normally "far cdecl", but may also
               be "near cdecl".

   Localfunc   defines a routine that is exclusively used inside CTask.
               Those routines are normally 'near' to save some code.
               If your compiler does not allow placing all CTask
               routines in a common code segment, you will have to
               define this as 'far'.
               It normally has the "near cdecl" attribute, but may also
               be "far" and/or "pascal".

   CLocalfunc  same as Localfunc, but must use C calling sequence.

   Staticfunc  defines a routine that is local to a module.
               Those routines are only used within a module, and can 
               normally be 'near'. Only if your compiler does not 
               support the 'near' keyword, or places all routines in
               separate segments, will you have to redefine this as 
               empty or 'far'.
               The attributes normally are "near pascal".

   CStaticfunc same as Staticfunc, but must use C calling sequence.

   Taskfunc    defines task and call-back functions.
               Must be 'far cdecl' unless your compiler does not
               support those keywords.

   Neardata    Is the attribute for local shared data in CTask. It is
               defined as 'near' for MSC, and empty for Turbo C.
               This causes the shared data to be placed in the
               default data segment (except for Turbo C Huge, where
               the assignment to the CTask data segment is done with
               compiler switches).
               If your compiler does not support the 'near' attribute
               for global data, you may define this as empty, but please
               make sure that the assembler modules can access the data.

*/

#if (TSK_TURBO)
#define Neardata           /* Turbo doesn't like near on data */
#else
#define Neardata near      /* MSC requires it when in Large model */
#endif

#if (NEAR_CODE)
#define Farc  near        /* near code means all routines are near */
#define Nearc near        /* including internal ones */
#else
#if (CODE_SHARING && TSK_MSC)
#define Farc  far _loadds /* for code sharing, _loadds is required */
#else
#define Farc  far         /* else it's just 'far' */
#endif
#if (LOCALS_FAR)
#define Nearc far         /* Near code is far, too */
#else
#define Nearc near        /* That's the normal case */
#endif
#endif
#if (CALL_PASCAL)
#define Cdeclc pascal
#else
#define Cdeclc cdecl
#endif

#define Globalfunc   Farc Cdeclc
#define Localfunc    Nearc Cdeclc
#define CGlobalfunc  Farc cdecl
#define CLocalfunc   Nearc cdecl
#define Staticfunc   near pascal
#define CStaticfunc  near cdecl
#define Taskfunc     far cdecl

/*
   The local attribute is used mainly for documentation purposes.
   It should be 'static', unless you want the routines to be globally
   visible for debugging (define empty).
*/

#define local  static

/*---------------------------------------------------------------------*/

typedef unsigned char byte;
typedef unsigned short word;
typedef unsigned long dword;
typedef void far *farptr;
typedef byte far *byteptr;
typedef word far *wordptr;
typedef void (Taskfunc *funcptr)();
typedef void (Taskfunc *funcptr_void)(void);
typedef void (Taskfunc *funcptr_int)(int);
typedef void (Taskfunc *funcptr_fp)(farptr);
typedef void (Taskfunc *funcptr_dword)(dword);
typedef void (interrupt far * intprocptr)(void);

#define TTIMEOUT ((farptr) -1L)
#define TWAKE    ((farptr) -2L)
#define TWATCH   ((farptr) -3L)

#define TIMEOUT   (-1)
#define WAKE      (-2)
#define WATCH     (-3)

/* Task states */

#define  ST_KILLED   (byte)0
#define  ST_STOPPED  (byte)1
#define  ST_DELAYED  (byte)2
#define  ST_WAITING  (byte)3
#define  ST_ELIGIBLE (byte)4
#define  ST_RUNNING  (byte)5

/* Task flags */

#define  F_TEMP      (byte)0x80     /* Task is temporary, free on kill */
#define  F_STTEMP    (byte)0x40     /* Task stack is temporary, free on kill */
#define  F_PERM      (byte)0x20     /* Task is permanent, do not kill */

#define  F_USES_NDP  (byte)0x02     /* Task uses the NDP */
#define  F_CRIT      (byte)0x01     /* Task is critical, may not be preempted */

#define  FL_SYSM     (byte)0xf0     /* Mask for system flags */
#define  FL_USRM     (byte)0x0f     /* Mask for user flags */

/* Timer queue element action kinds (upper nibble of elkind) */

#define  TELEM_TIMER       (byte)0x10  /* Timeout element */
#define  TELEM_MEM         (byte)0x20  /* Memory watch element */
#define  TELEM_PORT        (byte)0x30  /* Port watch element */
#define  TELEM_HOTKEY      (byte)0x40  /* Hotkey element */

/* Timer watch element comparison kinds (lower nibble of elkind) */

#define  TCMP_EQ           (byte)1     /* Equal */
#define  TCMP_NE           (byte)2     /* Not Equal */
#define  TCMP_GE           (byte)3     /* Greater or Equal (unsigned) */
#define  TCMP_LE           (byte)4     /* Less or Equal (unsigned) */
#define  TCMP_GES          (byte)5     /* Greater or Equal (signed) */
#define  TCMP_LES          (byte)6     /* Less or Equal (signed) */
#define  TCMP_CHG          (byte)7     /* Change in value */

/* Timer queue element control structure pointer kinds */

#define  TKIND_TASK        (byte)1     /* tcbptr, Wakeup associated task */
#define  TKIND_WAKE        (byte)2     /* tcbptr, but not same task */
#define  TKIND_PROC        (byte)3     /* call function */
#define  TKIND_FLAG        (byte)4     /* flagptr, set flag */
#define  TKIND_COUNTER     (byte)5     /* counterptr, increment counter */
#define  TKIND_COUNTDEC    (byte)6     /* counterptr, decrement counter */

/* Timer queue element flags */

#define  TFLAG_BUSY        (byte)0x01  /* Timer task is busy processing element */
#define  TFLAG_ENQUEUE     (byte)0x02  /* Enqueue after processing */
#define  TFLAG_UNQUEUE     (byte)0x04  /* Don't enqueue after processing */
#define  TFLAG_REMOVE      (byte)0x08  /* Free element after processing */
#define  TFLAG_REPEAT      (byte)0x40  /* Bit set signals repeat processing */
#define  TFLAG_TEMP        (byte)0x80  /* Bit set means temporary element */

/* Name link and queue head structure types */

#define  Q_HEAD         (byte)0x80     /* Queue head flag */

#define  TYP_GROUP      (byte)0
#define  TYP_TCB        (byte)1
#define  TYP_FLAG       (byte)2
#define  TYP_RESOURCE   (byte)3
#define  TYP_COUNTER    (byte)4
#define  TYP_MAILBOX    (byte)5
#define  TYP_PIPE       (byte)6
#define  TYP_WPIPE      (byte)7
#define  TYP_BUFFER     (byte)8
#define  TYP_TIMER      (byte)9
#define  TYP_WATCH     (byte)10
#define  TYP_HOTKEY    (byte)11

#define  NAMELENGTH     9  /* For structure names: 8 bytes + zero */

/* Installation flags */

#define IFL_VIDEO      0x0001      /* Install INT 10 access resource */
#define IFL_DISK       0x0002      /* Install INT 13 access resource */
#define IFL_INT8_DIR   0x0004      /* Call original INT 8 directly */
#define IFL_PRINTER    0x0008      /* Install INT 17 handler */
#define IFL_INT15      0x0010      /* Install IBM-AT INT 15 handler */
#define IFL_NODOSVARS  0x0020      /* Don't swap DOS variables */
#define IFL_NOEXITCHECK 0x0040     /* Don't check for premature exit */

#define IFL_STD   (IFL_DISK | IFL_PRINTER | IFL_INT15)   /* Standard flags */

/* 
   Size of the DOS variable swap area plus 8 bytes.
   40+8 is more than sufficient for all current versions of DOS up to
   DOS 4.01.
*/

#define DOSSWAPSIZE     0x30

/* --------------------------------------------------------------------- */

/*
   The following types define 80x87 data. They are used only when
   NDP is defined TRUE in tskconf.h.
   The type definitions and the basic algorithms for saving the
   coprocessor state were provided by Dan Heine.
*/

/* Temporary real (80-bit) type */

typedef struct {
               word  mant15_0;
               word  mant31_16;
               word  mant47_32;
               word  mant63_48;
               word  s_exponent;
               } t_real;

typedef t_real far *t_realptr;

/* 80x87 state save area */

typedef struct {
               word     control87;
               word     status87;
               word     tag87;
               word     iplo87;
               word     iphi87_opcode87;
               word     opaddrlo87;
               word     opaddrhi87_null;
               t_real   st0;
               t_real   st1;
               t_real   st2;
               t_real   st3;
               t_real   st4;
               t_real   st5;
               t_real   st6;
               t_real   st7;
               } ndpsave_t;

typedef ndpsave_t far *ndpsaveptr;

/* --------------------------------------------------------------------- */

typedef struct callchain_rec far *callchainptr;
typedef void (Taskfunc *funcptr_ccp)(callchainptr);

typedef struct callchain_rec {
                             callchainptr next;    /* Must be first */
                             funcptr_ccp  func;
                             farptr       user_ptr;
#if (TSK_DYNAMIC)
                             byte         flags;
#endif
                             } callchain;

/* --------------------------------------------------------------------- */

/*
   The 'queue' structure is a dual link for linking task control blocks 
   and timer blocks. The first three fields are used both for the queue
   head, and for elements to be inserted in a queue.

   CAUTION: Do not change the order of the first three fields in
            either queue or queue_head!
*/

typedef struct {
                word     prior;
                word     ini_prior;
               } qelem_pri;

typedef struct queue_rec far *queptr;

typedef struct queue_rec {
                          volatile queptr next;
                          volatile queptr prev;
                          byte            kind;
                          union  {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产91综合久久蜜臀| 国产精品免费视频网站| 精品国产乱码久久久久久夜甘婷婷 | 国产综合一区二区| aaa欧美色吧激情视频| 8x8x8国产精品| 亚洲欧美日韩国产手机在线| 久草在线在线精品观看| 欧美日韩在线播| 国产精品水嫩水嫩| 老司机免费视频一区二区| 成人av在线播放网址| 欧美一区二区播放| 亚洲在线视频一区| 国产精品一区二区久激情瑜伽 | 婷婷开心激情综合| 激情五月激情综合网| 欧美三级电影一区| 亚洲女人的天堂| 国产91丝袜在线观看| 精品国产免费人成在线观看| 日韩不卡免费视频| 欧美日韩精品一区二区天天拍小说 | 91亚洲精品乱码久久久久久蜜桃| 337p日本欧洲亚洲大胆色噜噜| 午夜精品久久久久久久99樱桃| 色域天天综合网| 自拍偷拍国产精品| 成人97人人超碰人人99| 夜夜操天天操亚洲| 国产一区亚洲一区| 日韩一区二区三区四区五区六区| 亚洲免费av观看| 成人性视频免费网站| 国产拍揄自揄精品视频麻豆 | 亚洲国产高清aⅴ视频| 国产精品夜夜爽| 久久九九99视频| 国产高清久久久久| 欧美国产日韩a欧美在线观看 | 91精彩视频在线| 亚洲精品乱码久久久久久久久| 色激情天天射综合网| 亚洲免费观看高清完整版在线观看 | 麻豆精品国产91久久久久久| 成人一区二区在线观看| 国产精品久久久久永久免费观看| 成人av电影免费在线播放| 欧美国产禁国产网站cc| 成人在线综合网站| 国产精品福利一区二区| 91成人免费网站| 亚洲v日本v欧美v久久精品| 在线成人午夜影院| 色猫猫国产区一区二在线视频| 亚洲欧洲日韩一区二区三区| 91看片淫黄大片一级| 午夜国产不卡在线观看视频| 欧美va在线播放| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 国产成人av电影在线| 国产亚洲欧美一级| 在线免费不卡电影| 伦理电影国产精品| 99re视频精品| 国产色产综合产在线视频| 成人自拍视频在线观看| 亚洲男人电影天堂| 在线观看91av| 国产福利视频一区二区三区| 自拍av一区二区三区| 欧美三级电影在线观看| 麻豆视频观看网址久久| 国产女主播视频一区二区| 色综合天天综合| 麻豆精品视频在线观看| 亚洲精品中文在线| 久久夜色精品国产噜噜av| 色欲综合视频天天天| 国产精品一区久久久久| 亚洲成人自拍网| 欧美国产精品一区| 欧美成人一区二区三区| 91麻豆免费观看| 久久99久久久欧美国产| 亚洲夂夂婷婷色拍ww47| 欧美国产日韩精品免费观看| 国产一区二区三区电影在线观看| 成人app下载| 天天综合天天做天天综合| 亚洲国产精品成人综合| 欧美一级片在线观看| 日本乱人伦一区| 国产成人av福利| 看电影不卡的网站| 一区二区三区四区在线播放 | 欧美三级欧美一级| 成人av免费在线观看| 激情伊人五月天久久综合| 午夜精品视频在线观看| 一区二区欧美视频| 亚洲天堂福利av| 国产精品网曝门| 日本一区二区三级电影在线观看| 日韩午夜电影在线观看| 欧美日韩国产小视频| 日本乱人伦aⅴ精品| aaa亚洲精品| 99热国产精品| av毛片久久久久**hd| 波多野结衣亚洲| 日韩av在线发布| 欧美影院一区二区三区| 成人免费视频免费观看| 国产精品一区久久久久| 国产一区欧美日韩| 久草精品在线观看| 国产一区二区三区香蕉| 国产精品中文有码| 国产麻豆精品95视频| 久久国产精品72免费观看| 激情深爱一区二区| 国产伦精品一区二区三区免费| 国产一区二区不卡| 国产成人精品免费一区二区| 国产激情91久久精品导航| 国产不卡视频一区| 成人做爰69片免费看网站| 成人app网站| 欧美在线免费观看亚洲| 欧美精品1区2区3区| 日韩欧美成人午夜| 久久久欧美精品sm网站| 中文字幕制服丝袜一区二区三区| 一区在线中文字幕| 丰满岳乱妇一区二区三区| 91精品91久久久中77777| 欧美在线视频日韩| 欧美精品一二三| 精品久久久久香蕉网| 国产喷白浆一区二区三区| 亚洲激情欧美激情| 全国精品久久少妇| 国产成人av电影在线观看| 91色乱码一区二区三区| 3d成人动漫网站| 精品国产免费视频| 亚洲影视在线观看| 日韩不卡在线观看日韩不卡视频| 精品一区二区三区在线播放视频| 国产高清在线精品| 在线视频一区二区三区| 精品少妇一区二区三区日产乱码 | 成人性生交大片免费看视频在线| av激情成人网| 日韩欧美激情在线| 中文字幕视频一区二区三区久| 亚洲成人三级小说| 国产91在线|亚洲| 欧美夫妻性生活| 国产区在线观看成人精品| 日韩精品国产精品| 成人黄色网址在线观看| 欧美精品久久99久久在免费线| 国产日韩精品一区二区浪潮av | 国产精品久久久久久久第一福利| 亚洲成av人**亚洲成av**| 国产aⅴ综合色| 欧美精三区欧美精三区| 国产精品毛片久久久久久| 日本欧美一区二区三区乱码| 国产丶欧美丶日本不卡视频| 欧美视频一区二| 中文字幕日韩一区| 韩日精品视频一区| 在线视频国内一区二区| 久久久久99精品国产片| 丝袜美腿高跟呻吟高潮一区| 97aⅴ精品视频一二三区| 欧美一区二区久久| 中日韩av电影| 韩国v欧美v日本v亚洲v| 欧美乱妇一区二区三区不卡视频| 最新不卡av在线| 蜜臀va亚洲va欧美va天堂| 成人高清在线视频| 久久久亚洲精品一区二区三区 | 99久久久国产精品免费蜜臀| 精品日韩一区二区三区| 日韩精品电影一区亚洲| 欧美日韩国产影片| 午夜久久久久久久久| 欧美日韩久久不卡| 亚洲一二三四在线观看| 色天天综合色天天久久| 亚洲日穴在线视频| 99视频超级精品| 亚洲免费伊人电影| 91精彩视频在线观看| 亚洲一区二区在线播放相泽|