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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ctask.doc

?? 一個嵌入式實時操作系統源碼
?? DOC
?? 第 1 頁 / 共 5 頁
字號:
        used in applications in which malfunction of routines of this
        package would result in damage to property or health of any
        person without *very* extensive testing under all kinds of loads.
        In using CTask, you do so at your own risk. I have tested CTask
        extensively, but with a complex system like CTask, where timing
        might make a big difference, you can't be completely sure that
        all will work as intended.


                          What is required to use CTask?

        To compile CTask, Microsoft C 5.1 or later, or Turbo C 2.0 or
        later are required. Microsoft MASM 5.1 or later, or TASM 1.01 or
        later is required for the assembler parts. Conversion to other
        compilers is possible if they conform to the new ANSI standard.
        Conversion of the assembler parts to other Assembler versions
        will likely be more complicated, since it requires substitution
        of the simplified model directives by explicit segment
        definitions, and adding the DGROUP to offsets referencing data.

        Note that you can not use TASM 1.0 to assemble CTask routines.
        The first version of TASM was not fully compatible with MASM, and
        creates different code in some places, which will lead to fatal
        crashes. TASM version 1.01 does not have this problem, and can
        safely be used.
        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -              Page 7


        The CTask modules have been compiled and tested with Microsoft C
        6.0 without any apparent problems (Optimization level tested was
        /Ox). Since the stability of the MSC 6.0 code generator is
        doubtful, the distributed library was compiled with MSC 5.1.

        CTask will add 14k-25k of code to your program, depending on
        options and installed drivers. The minimum static data used by
        CTask is approximately 4k. Non-DOS versions use less memory.

        Converting CTask for stand-alone operation requires few changes.
        Mainly, the timer interrupt handler (in "tsktim.asm") has to be
        rewritten, and the initialization code (in "tskmain.c") may have
        to be changed. Changes to other modules (naturally except the
        optional hardware drivers) should not be necessary. The "DOS" and
        "IBM" configuration flags in tskconf.h can be disabled to elimi-
        nate most system-dependent features of CTask.

        Another requirement is a good debugger. If you never before wrote
        multitasking applications, you're in for some surprises. The nor-
        mal debugging tools (Symdeb, Codeview) are of only limited use,
        since they use DOS calls for their I/O, and thus may conflict
        with your background tasks. One safety measure is to first thor-
        oughly test your program with preemption disabled, possibly
        inserting some schedule() calls, and only allow task preemption
        if you found most major bugs. I personally recommend Periscope
        for debugging, since it can be made resident and so is always
        available, and because it does not use DOS. Periscope IV is the
        most expensive solution, and the best tool you can imagine, but
        the less costly versions will also help a lot.


                        Do I have to pay for using CTask?

        No. One reason for writing CTask was to provide a free, no
        strings attached, utility, instead of the usual "for personal use
        only" restriction. Writing a multitasking application for
        personal use only doesn't seem too interesting to me. CTask is
        completely free, and there is no restriction on its use. You may
        incorporate all or parts of CTask in your programs, and redistri-
        bute it in source or binary form by any means. I also do not
        restrict the use of CTask in commercial applications. Since
        trying to distribute the unmodified CTask for money will only
        give you a bad name, you may even do that if you find someone
        dumb enough to buy it. Naturally, if you make a bundle from it,
        or simply like CTask, I would not reject a donation. However,
        this is not required, and it will not give you any special
        support.






        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -              Page 8


                           What support can I expect?

        I will try my best to eliminate any bugs reported to me, and to
        incorporate suggested enhancements and changes. However, my spare
        time is limited, so I can not guarantee continued or individual
        support. (But since I'm one of the owners of a consulting firm,
        you can always hire me to do it...). Please address all reports
        or questions to my business address:

                Ferrari electronic GmbH
                attn: Thomas Wagner
                Ruhlsdorfer Strasse 138
                D-14513 Teltow, Germany

                Phone: (+49 3328) 474 626
                Fax:   (+49 3328) 438 04-0
                BBS:   (+49 3328) 438 04-8 (from 8/15/93)

                Internet:    twagner@bix.com
                BIX:         twagner
                Compuserve:  100023,2042

        But, please, if at all possible, do it in writing. Please do not
        phone unless it is absolutely vital (or you have a business
        proposal). I like to hear about any applications for CTask, and
        if you are visiting Berlin, I also invite you to drop by for a
        talk. But I am usually not that happy when I am interrupted in my
        paid work by a phone call requesting support for a free product.

        I will try to answer all letters and Faxes I receive. However, I
        am usually not the fastest in this respect, so please be patient.
        If you don't hear for me for a while, send me a short reminder.
        The preferred, and the fastest, method to reach me is through
        BIX, which is connected to the Internet, or through our own
        BBS, which is scheduled to be operational August 15th, 1993.

        BIX (tm) is an Information Exchange, an electronic confe-
        rencing system owned by GVC. BIX can be (and is) accessed from all
        parts of the world. Although accessing BIX from outside the US
        isn't exactly cheap (don't ask me what I have to pay each month),
        the wealth of information available there, and the fast and
        extensive help the other members can give you on all kinds of
        hard- and software problems, makes it worth every Mark, Peseta,
        Franc, or Ruble you have to spend. New versions and updates of
        CTask will first appear on BIX.

        At the time of this writing, I am one of the moderators of the
        IBM exchange on BIX, moderating the "ibm.other" conference. I
        have created a support topic for CTask, where all suggested
        enhancements and changes, plus bug reports, can be posted. Just
        join "ibm.other", topic "ctask". You can also report problems of
        limited general interest via BIXmail to "twagner". Unless I am
        not able to reach the keyboard for some reason, I log on at least
        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -              Page 9


        once per day, so you can expect relatively fast responses to your
        queries.

        To get more info on joining BIX, call the BIX Customer Service at
        800-227-2983 (U.S. and Canada), or 603-924-7681 (New Hampshire
        and outside the U.S.) from 8:30 to 23:00 Eastern Time (-5 GMT).
        BIX access currently is $39 for three months (flat fee, no extra
        charges for connect time), plus the applicable telecomm charges
        (Tymnet in the U.S. and Canada, your local PTT's Packet Net
        charges from outside the U.S.). 
        International users living near a BT Tymnet node can access BIX 
        through international Tymnet at special low rates. Call the BIX 
        helpline for Tymnet access points and charges. Other international 
        users will need an account (NUI) with their local packet net. 
        Please enquire at your post/telecomm office for details.


                                About this Release

        Since the Beta release of CTask in March 1988, CTask has found
        widespread distribution through several channels. I have heard
        from some users, and their suggestions have been implemented in
        this version as far as possible.

        Special thanks go to Kent J. Quirk, Peter Heinrich, Stephen
        Worthington, Burt Bicksler, Tron Hvaring, Joe Urso, Dave Goodwin,
        Chris Blum, and Dan Heine, for their bug reports, suggestions,
        and enhancements. Bug reports and suggestions also came in from
        others, thanks to all who wrote or called. The serial code in
        TSKSIO.C was enhanced for version 2.0 by S. Worthington, and his
        ideas on debugging have been incorporated in the version 2.1
        debugging mode. Dan Heine provided valuable info on 80x87 numeric
        coprocessor support. Chris Blum wrote the integer-based
        millisecond to clock-tick conversion routine.

        Again, please notify me of your CTask application, report bugs,
        or suggest changes and enhancements. If I know you're using
        CTask, I can notify you of possible new releases and of possible
        severe bugs.









        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -             Page 10


                               Multitasking Basics

                                      Tasks

        In CTask, a "task" is defined as a (far) C function. The number
        of tasks is not limited, and one function may be used for several
        tasks. There is little difference between a task function and a
        normal function. The usual form of a task function is

             void Taskfunc my_task (farptr arg)
             {
                  one-time initialization code
                  while (TRUE)
                    {
                    processing code
                    }
             }

        A task function is (usually) never called directly. Rather, it is
        specified in the call to the create_task routine, and started by
        start_task. It will then continue to run, sharing the processor
        time with all other tasks, until it is "killed" by kill_task.
        Returning from the routine will have the same effect as a kill.
        The sharing of processor time is accomplished by "preempting" the
        tasks. Preemption means that the task is interrupted in the
        middle of some statement by a hardware interrupt (usually the
        timer), and is *not* immediately restarted when the interrupt
        handler returns. Instead, the next task that is able to run is
        activated by the "scheduler", with the interrupted task
        continuing its duty at some (normally unpredictable) later time.
        You can also have multi-tasking without preemption, and CTask
        supports this, too, but this requires full cooperation of all
        tasks in the system, such that no task continues to run for an
        extended period of time without passing control to other tasks by
        an explicit scheduling request, or by waiting for an event.

        The optional argument to the task function may be used if one
        function is to be used for more than one task, for example to
        pass a pointer to a static data area for use by this specific
        instance of the function.


                                      Events

        Tasks alone would be of limited use. If you have several routines
        which just do number crunching or sorting or such, making them
        into parallel tasks would be sensible only on a multiprocessor
        system. Normally, at least some of your tasks will wait for some
        outside "event" to happen, be it the user pressing a key, or a
        character arriving from the modem. Then there may be tasks which
        have to wait until another task finishes processing on some piece
        of data before they can continue. For this synchronization, there
        are a number of constructs in CTask, which I summarize under the
        
        
        Ctask Manual       - Version 2.2 - 90-10-12 -             Page 11


        name "event". Common to all events are the operations of waiting
        for an event to happen, and signalling that the event has
        happened. Using a CTask event is much more efficient than looping
        while waiting on some shared data location to change state, and
        also eliminates concurrency problems inherent in such a simple
        approach. Tasks waiting for an event are taken off the scheduler
        queue, so they no longer use processor time.


                                    Reentrancy

        One of the biggest problem with multitasking in general, and C on
        the PC in particular, is reentrancy. Reentrancy means that you
        can use a routine, be it you own, or one of the C run-time
        library, from different tasks at the same time. When writing your
        own code, you can easily avoid problems, but when using the run-
        time library routines, you often can only guess if the routines
        are reentrant or not.

        A routine is NOT reentrant if it modifies static data. This can
        be illustrated by the following nonsense example:

             int non_reentrant (int val)
             {    static int temp;
                  temp = val;
                  return temp * 2;
             }

        Now take two tasks, which call this routine. Task1 calls it with
        val=3, Task2 with val=7. What will be the return value for both
        tasks? You never know. There are three possible outcomes:

          1) The tasks execute sequentially. Task1 will get 6, and Task2
             14 as a result. This is what one normally expects.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频在线观看一区| 波多野结衣在线aⅴ中文字幕不卡| 卡一卡二国产精品| 91偷拍与自偷拍精品| 欧美mv日韩mv亚洲| 亚洲 欧美综合在线网络| 丁香激情综合国产| 欧美成人精精品一区二区频| 亚洲福利视频三区| 91麻豆国产在线观看| 国产三级一区二区| 精品亚洲aⅴ乱码一区二区三区| 欧美最新大片在线看 | 成人短视频下载| 精品国产乱码久久久久久闺蜜 | 色综合天天综合色综合av| 日韩网站在线看片你懂的| 一区二区三区日韩欧美精品| 东方aⅴ免费观看久久av| 日韩精品专区在线| 日韩高清在线一区| 91精品国模一区二区三区| 午夜欧美视频在线观看| 欧美人妇做爰xxxⅹ性高电影| 亚洲精品国产一区二区精华液 | 亚洲一区二区在线免费观看视频| 成人精品一区二区三区四区| 久久久久久久久久久久电影| 久久99国内精品| 精品国产欧美一区二区| 国产剧情一区二区三区| 精品国产乱码久久久久久蜜臀| 久久黄色级2电影| 精品免费日韩av| 国产成人精品三级| 国产女人18水真多18精品一级做| 成人中文字幕合集| 中文字幕欧美日韩一区| 99亚偷拍自图区亚洲| 中文成人综合网| 9l国产精品久久久久麻豆| 中文字幕中文乱码欧美一区二区| 不卡一区二区在线| 一级做a爱片久久| 欧美日韩一级大片网址| 日韩中文字幕91| 久久色在线观看| 不卡的av在线| 亚洲国产综合91精品麻豆| 欧美嫩在线观看| 国产资源精品在线观看| 国产精品日韩成人| 欧美日韩一卡二卡| 国内精品在线播放| 18成人在线视频| 欧美日韩激情一区二区三区| 麻豆国产一区二区| 国产精品久久毛片av大全日韩| 色婷婷av一区| 蜜臀国产一区二区三区在线播放| 久久精品视频免费| 日本高清免费不卡视频| 蜜桃一区二区三区在线| 国产欧美精品区一区二区三区| 日本久久电影网| 久久精品999| 亚洲精品欧美综合四区| 欧美电影免费观看高清完整版在线| 国产乱码精品一区二区三| 国产精品三级在线观看| 9191成人精品久久| 成人动漫精品一区二区| 老司机精品视频导航| 中文字幕一区二区在线播放| 日韩美女在线视频| 日本丶国产丶欧美色综合| 国产原创一区二区三区| 亚洲在线视频网站| 亚洲国产精品精华液ab| 91精品国产aⅴ一区二区| 99久久精品情趣| 国产剧情在线观看一区二区| 日韩综合小视频| 一区二区三区精品在线| 亚洲国产精品成人综合| 亚洲精品在线网站| 91精品婷婷国产综合久久竹菊| 99精品热视频| 国产成人av电影免费在线观看| 午夜精品福利久久久| 亚洲免费色视频| 中文字幕精品综合| www国产成人| 911国产精品| 欧美视频一区二区| 在线国产亚洲欧美| 91国偷自产一区二区开放时间 | 中文字幕在线观看一区| 日韩欧美亚洲国产精品字幕久久久| 91香蕉视频黄| 成人h精品动漫一区二区三区| 久久爱www久久做| 日本不卡视频在线| 日本欧美在线观看| 丝袜国产日韩另类美女| 亚洲电影一级黄| 同产精品九九九| 一区二区三区在线观看网站| 亚洲免费视频中文字幕| 亚洲人成网站精品片在线观看| 国产精品无码永久免费888| 国产三级精品三级| 国产女主播一区| 欧美国产精品一区二区三区| 久久久91精品国产一区二区三区| 欧美精品一区二区三| 久久综合九色综合欧美亚洲| 久久综合中文字幕| 久久婷婷综合激情| 国产精品国产精品国产专区不片 | 成人性生交大片免费看视频在线| 黑人巨大精品欧美一区| 韩国三级在线一区| 成人综合在线视频| 99综合影院在线| 欧洲中文字幕精品| 在线电影一区二区三区| 日韩三级视频在线观看| 久久综合色鬼综合色| 国产欧美日韩在线视频| 亚洲欧洲国产日本综合| 亚洲精品免费在线| 日韩成人免费在线| 激情都市一区二区| 成人免费av网站| 91女人视频在线观看| 欧美日免费三级在线| 日韩一区二区三区观看| 久久久91精品国产一区二区精品| 国产精品久久久久久久浪潮网站| 亚洲精品午夜久久久| 天堂午夜影视日韩欧美一区二区| 国产一区二区三区视频在线播放| 成人性生交大片免费看中文网站| 91精品福利视频| 久久综合成人精品亚洲另类欧美 | 不卡欧美aaaaa| 欧美美女激情18p| 久久九九国产精品| 一区二区三区久久久| 国产精品一区二区久久不卡| 欧美主播一区二区三区| 久久精品日韩一区二区三区| 亚洲永久精品大片| 国产精品一区二区久久精品爱涩| 91福利国产精品| 国产午夜久久久久| 亚洲午夜精品网| 丁香六月综合激情| 91精品国产色综合久久不卡蜜臀| 国产精品蜜臀av| 蜜桃视频第一区免费观看| 99久久亚洲一区二区三区青草| 欧美精品一二三| 亚洲同性同志一二三专区| 麻豆国产精品视频| 欧美这里有精品| 国产精品污网站| 精久久久久久久久久久| 欧美日韩国产综合草草| 《视频一区视频二区| 韩国女主播一区二区三区| 欧美日本在线播放| 国产精品久久毛片av大全日韩| 久久精品久久99精品久久| 91国在线观看| 亚洲乱码国产乱码精品精98午夜| 韩国v欧美v亚洲v日本v| 91精品午夜视频| 午夜欧美电影在线观看| 91老司机福利 在线| 中文字幕不卡在线观看| 精品在线一区二区| 欧美精品视频www在线观看| 亚洲精品一二三| 色综合天天天天做夜夜夜夜做| 久久综合久久综合久久综合| 毛片av一区二区| 51精品久久久久久久蜜臀| 洋洋成人永久网站入口| 99国产精品久久久久久久久久 | 精品国产污污免费网站入口| 午夜电影久久久| 欧美日韩精品免费| 午夜久久久影院| 777xxx欧美| 日韩高清不卡一区二区三区| 欧美日本在线观看| 蜜桃在线一区二区三区| 精品日韩在线一区|