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

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

?? overview.degress.html

?? ecos 文檔
?? HTML
字號(hào):
<!-- Copyright (C) 2003 Red Hat, Inc.                                -->
<!-- This material may be distributed only subject to the terms      -->
<!-- and conditions set forth in the Open Publication License, v1.0  -->
<!-- or later (the latest version is presently available at          -->
<!-- http://www.opencontent.org/openpub/).                           -->
<!-- Distribution of the work or derivative of the work in any       -->
<!-- standard (paper) book form is prohibited unless prior           -->
<!-- permission is obtained from the copyright holder.               -->
<HTML
><HEAD
><TITLE
>Degrees of Configurability</TITLE
><meta name="MSSmartTagsPreventParsing" content="TRUE">
<META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The eCos Component Writer's Guide"
HREF="cdl-guide.html"><LINK
REL="UP"
TITLE="Overview"
HREF="overview.html"><LINK
REL="PREVIOUS"
TITLE="Approaches to Configurability"
HREF="overview.approaches.html"><LINK
REL="NEXT"
TITLE="Warnings"
HREF="overview.warning.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The <SPAN
CLASS="APPLICATION"
>eCos</SPAN
> Component Writer's Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="overview.approaches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. Overview</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="overview.warning.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="OVERVIEW.DEGRESS">Degrees of Configurability</H1
><P
>Components can support configurability in varying degrees. It is not
necessary to have any configuration options at all, and the only user
choice is whether or not to load a particular package. Alternatively
it is possible to implement highly-configurable code. As an example
consider a typical facility that is provided by many real-time
kernels, mutex locks. The possible configuration options include:</P
><P
></P
><OL
TYPE="1"
><LI
><P
>If no part of the application and no other component requires mutexes
then there is no point in having the mutex code compiled into a
library at all. This saves having to compile the code. In addition
there will never be any need for the user to configure the detailed
behavior of mutexes. Therefore the presence of mutexes is a
configuration option in itself.</P
></LI
><LI
><P
>Even if the application does make use of mutexes directly or
indirectly, this does not mean that all mutex functions have to be
included. The minimum functionality consists of lock and unlock
functions. However there are variants of the locking primitive such as
try-lock and try-with-timeout which may or may not be needed.</P
><P
>Generally it will be harmless to compile the try-lock function even if
it is not actually required, because the function will get eliminated
at link-time. Some users might take the view that the try-lock
function should never get compiled in unless it is actually needed, to
reduce compile-time and disk usage. Other users might argue that there
are very few valid uses for a try-lock function and it should not be
compiled by default to discourage incorrect uses. The presence of a
try-lock function is a possible configuration option, although it may
be sensible to default it to true.</P
><P
>The try-with-timeout variant is more complicated because it adds a
dependency: the mutex code will now rely on some other component to
provide a timer facility. To make things worse the presence of this
timer might impact other components, for example it may now be
necessary to guard against timer interrupts, and thus have an
insidious effect on code size. The presence of a lock-with-timeout
function is clearly a sensible configuration option, but the default
value is less obvious. If the option is enabled by default then the
final application image may end up with code that is not actually
essential. If the option is disabled by default then users will have
to enable the option somehow in order to use the function, implying
more effort on the part of the user. One possible approach is to
calculate the default value based on whether or not a timer component
is present anyway.</P
></LI
><LI
><P
>The application may or may not require the ability to create and
destroy mutexes dynamically. For most embedded systems it is both less
error-prone and more efficient to create objects like mutexes
statically. Dynamic creation of mutexes can be implemented using a
pre-allocated pool of mutex objects, involving some extra code to
manipulate the pool and an additional configuration option to define
the size of the pool. Alternatively it can be implemented using a
general-purpose memory allocator, involving quite a lot of extra code
and configuration options. However this general-purpose memory
allocator may be present anyway to support the application itself or
some other component. The ability to create and destroy mutexes
dynamically is a configuration option, and there may not be a sensible
default that is appropriate for all applications.</P
></LI
><LI
><P
>An important issue for mutex locks is the handling of priority
inversion, where a high priority thread is prevented from running
because it needs a lock owned by a lower priority thread. This is only
an issue if there is a scheduler with multiple priorities: some
systems may need multi-threading and hence synchronization primitives,
but a single priority level may suffice. If priority inversion is a
theoretical possibility then the application developer may still want
to ignore it because the application has been designed such that the
problem cannot arise in practice. Alternatively the developer may want
some sort of exception raised if priority inversion does occur,
because it should not happen but there may still be bugs in the code.
If priority inversion can occur legally then there are three main ways
of handling it: priority ceilings, priority inheritance, and ignoring
the problem. Priority ceilings require little code but extra effort on
the part of the application developer. Priority inheritance requires
more code but is automatic. Ignoring priority inversion may or may not
be acceptable, depending on the application and exactly when priority
inversion can occur. Some of these choices involve additional
configuration options, for example there are different ways of raising
an exception, and priority inheritance may or may not be applied
recursively.</P
></LI
><LI
><P
>As a further complication some mutexes may be hidden inside a
component rather than being an explicit part of the application. For
example, if the C library is configured to provide a
<TT
CLASS="FUNCTION"
>malloc</TT
> call then there may be an associated mutex
to make the function automatically thread-safe, with no need for
external locking. In such cases the memory allocation component of the
C library can impose a constraint on the kernel, requiring that
mutexes be provided. If the user attempts to disable mutexes anyway
then the configuration tools will report a conflict.</P
></LI
><LI
><P
>The mutex code should contain some general debugging code such as
assertions and tracing. Usually such debug support will be enabled or
disabled at a coarse level such as the entire system or everything
inside the kernel, but sometimes it will be desirable to enable the
support more selectively. One reason would be memory requirements: the
target may not have enough memory to hold the system if all debugging
is enabled. Another reason is if most of the system is working but
there are a few problems still to resolved; enabling debugging in the
entire system might change the system's timing behavior too much, but
enabling some debug options selectively can still be useful. There
should be configuration options to allow specific types of debugging
to be enabled at a fine-grain, but with default settings inherited
from an enclosing component or from global settings.</P
></LI
><LI
><P
>The mutex code may contain specialized code to interact
with a debugging tool running on the host. It should be
possible to enable or disable this debugging code, and there may
be additional configuration options controlling the detailed
behavior.</P
></LI
></OL
><P
>Altogether there may be something like ten to twenty configuration
options that are specific to the mutex code. There may be a similar
number of additional options related to assertions and other debug
facilities. All of the options should have sensible default values,
possibly fixed, possibly calculated depending on what is happening
elsewhere in the configuration. For example the default setting for
an assertion option should generally inherit from a kernel-wide
assertion control option, which in turn inherits from a global option.
This allows users to enable or disable assertions globally or at
a more fine-grained level, as desired.</P
><P
>Different components may be configurable to different degrees, ranging
from no options at all to the fine-grained configurability of the
above mutex example (or possibly even further). It is up to component
writers to decide what options should be provided and how best to
serve the needs of application developers who want to use that
component.</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="overview.approaches.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="cdl-guide.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="overview.warning.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Approaches to Configurability</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="overview.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Warnings</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久欧美中文字幕| 国产精品免费观看视频| 成人三级在线视频| 亚洲成人7777| 综合av第一页| 国产午夜精品一区二区三区视频| 色噜噜狠狠成人网p站| 国内精品写真在线观看 | 亚洲欧美中日韩| 欧美大片在线观看一区| 91黄色免费版| 成人免费毛片app| 久久av资源网| 丝袜美腿亚洲色图| 亚洲一区二区三区视频在线播放| 亚洲国产高清不卡| 久久免费精品国产久精品久久久久| 欧美色男人天堂| 99精品视频中文字幕| 国产精品一级黄| 日韩不卡手机在线v区| 亚洲香蕉伊在人在线观| 国产亚洲精品资源在线26u| 日韩三级视频在线观看| 欧美天堂一区二区三区| 色综合色狠狠天天综合色| 国产成人精品三级| 国产成人精品一区二区三区四区 | 94-欧美-setu| 成人午夜视频网站| 国产精品一区二区免费不卡 | 国产在线精品一区在线观看麻豆| 无吗不卡中文字幕| 亚洲成人免费在线观看| 亚洲影院在线观看| 亚洲图片一区二区| 亚洲午夜久久久久| 亚洲午夜电影在线| 亚洲综合一区在线| 亚洲午夜精品在线| 亚洲成人动漫精品| 午夜视频一区在线观看| 视频在线观看一区| 日本伊人午夜精品| 久久99久久99精品免视看婷婷| 日韩电影在线观看一区| 日本女人一区二区三区| 蜜桃传媒麻豆第一区在线观看| 日本欧美一区二区三区乱码| 麻豆国产欧美一区二区三区| 国产在线一区观看| 成人理论电影网| 99精品视频一区二区三区| 91在线观看地址| 在线观看不卡一区| 91精品国产综合久久精品图片| 91精品国产乱码| 日韩天堂在线观看| 久久久精品国产免大香伊| 欧美韩国日本不卡| 樱桃视频在线观看一区| 午夜一区二区三区视频| 久久国产福利国产秒拍| 国产高清亚洲一区| 色狠狠色噜噜噜综合网| 日韩一区二区在线看片| 精品国产三级电影在线观看| 国产欧美精品国产国产专区 | 久久一留热品黄| 中文字幕免费不卡在线| 一区二区三区自拍| 日韩不卡在线观看日韩不卡视频| 精品午夜一区二区三区在线观看| 成人动漫一区二区| 56国语精品自产拍在线观看| 久久精品夜色噜噜亚洲aⅴ| 亚洲日穴在线视频| 蜜臀av性久久久久蜜臀av麻豆| 顶级嫩模精品视频在线看| 欧美色图第一页| 久久影音资源网| 亚洲自拍偷拍麻豆| 国产在线精品免费| 在线视频一区二区三| 欧美r级在线观看| 18成人在线观看| 人人精品人人爱| 97精品久久久久中文字幕| 日韩欧美色综合网站| 亚洲人成在线播放网站岛国| 免费在线看成人av| 91丨porny丨在线| 久久综合成人精品亚洲另类欧美| 亚洲欧美日韩在线不卡| 精品在线观看免费| 欧美影院午夜播放| 国产精品婷婷午夜在线观看| 日本美女一区二区三区视频| 99精品久久免费看蜜臀剧情介绍| 欧美一级片在线看| 亚洲一区在线电影| 成人免费视频一区二区| 日韩一区二区高清| 亚洲精品免费在线观看| 国产成人免费视频一区| 91精品蜜臀在线一区尤物| 亚洲视频 欧洲视频| 国产精品一区二区在线观看网站| 欧美日本在线视频| 一区二区三区精密机械公司| 国产夫妻精品视频| 精品国产网站在线观看| 秋霞成人午夜伦在线观看| 91在线免费视频观看| 中文字幕欧美区| 精品一区二区三区视频| 欧美精品v国产精品v日韩精品| 亚洲日本成人在线观看| 成人av小说网| 精品国产网站在线观看| 美女视频黄 久久| 欧美麻豆精品久久久久久| 亚洲精品日产精品乱码不卡| 播五月开心婷婷综合| 国产三级一区二区| 韩国一区二区视频| 精品少妇一区二区三区免费观看| 婷婷六月综合网| 欧美日韩一区不卡| 亚洲不卡在线观看| 欧美日韩亚洲丝袜制服| 亚洲午夜在线观看视频在线| 色综合久久久久综合| 亚洲免费在线视频| 91久久国产综合久久| 亚洲精品免费在线播放| 在线观看一区日韩| 亚洲午夜久久久久中文字幕久| 欧美性感一类影片在线播放| 亚洲国产成人高清精品| 欧美性受xxxx| 亚洲成年人网站在线观看| 在线不卡免费av| 青椒成人免费视频| 欧美成人精精品一区二区频| 国产一区二区精品久久91| 久久色中文字幕| 成人高清视频在线观看| 亚洲精品视频自拍| 欧美精品久久久久久久多人混战| 日韩1区2区日韩1区2区| 欧美精品一区二区三区久久久 | 日韩精品免费专区| 欧美一区二区三区精品| 国产麻豆视频一区| 国产精品网站一区| 欧洲国内综合视频| 美女视频免费一区| 国产午夜精品久久久久久免费视| 不卡一区二区在线| 亚洲一区二区在线免费看| 欧美日韩黄色一区二区| 精品亚洲aⅴ乱码一区二区三区| 国产午夜精品一区二区三区四区| 97国产一区二区| 亚洲国产一区二区视频| 精品美女在线播放| aa级大片欧美| 日日摸夜夜添夜夜添亚洲女人| 精品久久99ma| 成人久久视频在线观看| 亚洲成人综合网站| 久久久一区二区| 色婷婷综合久久| 久久99国产精品久久99| 国产精品久久久久国产精品日日| 欧美亚洲一区二区在线| 91色乱码一区二区三区| 制服丝袜亚洲播放| 日韩欧美一级二级三级久久久| 国产一区二区精品在线观看| 综合久久国产九一剧情麻豆| 欧美日韩一二区| 国产91丝袜在线播放| 婷婷激情综合网| 久久精品人人爽人人爽| 欧美日韩成人在线一区| 成人手机电影网| 裸体健美xxxx欧美裸体表演| 亚洲色欲色欲www| 精品国产乱码久久久久久久| 色噜噜久久综合| 国产一区二区导航在线播放| 亚洲午夜私人影院| 中文av一区二区| 欧美一区二区三区四区五区 | 国产在线精品一区在线观看麻豆| 一区二区三区.www| 久久精品欧美一区二区三区麻豆| 色婷婷一区二区|