OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/rtos/ecos-2.0/packages/devs/watchdog/synth
    from Rev 27 to Rev 174
    Reverse comparison

Rev 27 → Rev 174

/v2_0/cdl/synth_watchdog.cdl
0,0 → 1,110
# ====================================================================
#
# synth_watchdog.cdl
#
# Synthetic target watchdog package.
#
# ====================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 2002 Bart Veer
##
## eCos is free software; you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation; either version 2 or (at your option) any later version.
##
## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
## WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
## for more details.
##
## You should have received a copy of the GNU General Public License along
## with eCos; if not, write to the Free Software Foundation, Inc.,
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
##
## As a special exception, if other files instantiate templates or use macros
## or inline functions from this file, or you compile this file and link it
## with other works to produce a work based on this file, this file does not
## by itself cause the resulting work to be covered by the GNU General Public
## License. However the source code for this file must still be made available
## in accordance with section (3) of the GNU General Public License.
##
## This exception does not invalidate any other reasons why a work based on
## this file might be covered by the GNU General Public License.
##
## Alternative licenses for eCos may be arranged by contacting the
## copyright holder(s).
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): bartv
# Original data: bartv
# Contributors:
# Date: 2002-08-07
#
#####DESCRIPTIONEND####
# ====================================================================
 
cdl_package CYGPKG_DEVS_WATCHDOG_SYNTH {
display "Synthetic target watchdog support"
description "
The watchdog driver for the eCos synthetic target provides
emulation of a watchdog device: if the eCos application starts
the watchdog and fails to reset it regularly then the host-side
support will detect this and kill the eCos application with a
SIGPWR signal."
doc ref/devs-watchdog-synth.html
parent CYGPKG_IO_WATCHDOG
active_if CYGPKG_IO_WATCHDOG
implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS
implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT
 
cdl_option CYGIMP_WATCHDOG_HARDWARE {
parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION
display "use \"hardware\" watchdog"
default_value 1
implements CYGINT_WATCHDOG_IMPLEMENTATIONS
compile synth_watchdog.cxx
description "
eCos provides several implementations of a watchdog device.
The default is to use the \"hardware\" implementation, which
for the synthetic target involves interacting with a
watchdog.tcl script running inside the I/O auxiliary."
}
cdl_component CYGPKG_DEVS_WATCHDOG_SYNTH_OPTIONS {
display "Build options"
active_if CYGIMP_WATCHDOG_HARDWARE
flavor none
 
description "
Package-specific build options including control over compiler
flags used only in building this package."
 
cdl_option CYGPKG_DEVS_WATCHDOG_SYNTH_CFLAGS_ADD {
display "Additional compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building this package. These flags are used in addition
to the set of global flags."
}
cdl_option CYGPKG_DEVS_WATCHDOG_SYNTH_CFLAGS_REMOVE {
display "Suppressed compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building this package. These flags are removed from
the set of global flags if present."
}
}
}
 
/v2_0/doc/devs-watchdog-synth.html
0,0 → 1,526
<!-- Copyright (C) 2002 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
>Synthetic Target Watchdog Device</TITLE
><meta name="MSSmartTagsPreventParsing" content="TRUE">
<META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"></HEAD
><BODY
CLASS="REFENTRY"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><H1
><A
NAME="DEVS-WATCHDOG-SYNTH">Synthetic Target Watchdog Device</H1
><DIV
CLASS="REFNAMEDIV"
><A
NAME="AEN4"
></A
><H2
>Name</H2
>Synthetic Target Watchdog Device&nbsp;--&nbsp;Emulate watchdog hardware in the synthetic target</DIV
><DIV
CLASS="REFSECT1"
><A
NAME="AEN7"
></A
><H2
>Overview</H2
><P
>Some target hardware comes equipped with a watchdog timer. Application
code can start this timer and after a certain period of time,
typically a second, the watchdog will trigger. Usually this causes the
hardware to reboot. The application can prevent this by regularly
resetting the watchdog. An automatic reboot can be very useful when
deploying hardware in the field: a hardware glitch could cause the
unit to hang; or the software could receive an unexpected sequence of
inputs, never seen in the laboratory, causing the system to lock up.
Often the hardware is still functional, and a reboot sorts out the
problem with only a brief interruption in service.
</P
><P
>The synthetic target watchdog package emulates watchdog hardware.
During system initialization watchdog device will be instantiated,
and the <TT
CLASS="FILENAME"
>watchdog.tcl</TT
> script will be loaded by the
I/O auxiliary. When the eCos application starts the watchdog device,
the <TT
CLASS="FILENAME"
>watchdog.tcl</TT
> script will start checking the
state of the eCos application at one second intervals. A watchdog
reset call simply involves a message to the I/O auxiliary. If the
<TT
CLASS="FILENAME"
>watchdog.tcl</TT
> script detects that a second has
<A
HREF="devs-watchdog-synth.html#SYNTH-WATCHDOG-WALLCLOCK-ELAPSED"
>elapsed</A
>
without a reset then it will send a <TT
CLASS="LITERAL"
>SIGPWR</TT
> signal
to the eCos application, causing the latter to terminate. If gdb is
being used to run the application, the user will get a chance to
investigate what is happening. This behaviour is different from real
hardware in that there is no automatic reboot, but the synthetic
target is used only for development purposes, not deployment in the
field: if a reboot is desired then this can be achieved very easily
by using gdb commands to run another instance of the application.
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="DEVS-WATCHDOG-SYNTH-INSTALL"
></A
><H2
>Installation</H2
><P
>Before a synthetic target eCos application can use a watchdog device
it is necessary to build and install host-side support. The relevant
code resides in the <TT
CLASS="FILENAME"
>host</TT
>
subdirectory of the synthetic target watchdog package, and building it
involves the standard <B
CLASS="COMMAND"
>configure</B
>,
<B
CLASS="COMMAND"
>make</B
> and <B
CLASS="COMMAND"
>make install</B
> steps. The
implementation of the watchdog support does not require any
executables, just a Tcl script <TT
CLASS="FILENAME"
>watchdog.tcl</TT
> and
some support files, so the <B
CLASS="COMMAND"
>make</B
> step is a no-op.
</P
><P
>There are two main ways of building the host-side software. It is
possible to build both the generic host-side software and all
package-specific host-side software, including the watchdog support,
in a single build tree. This involves using the
<B
CLASS="COMMAND"
>configure</B
> script at the toplevel of the eCos
repository. For more information on this, see the
<TT
CLASS="FILENAME"
>README.host</TT
> file at the top of the repository.
Note that if you have an existing build tree which does not include
the synthetic target watchdog support then it will be necessary to
rerun the toplevel configure script: the search for appropriate
packages happens at configure time.
</P
><P
>The alternative is to build just the host-side for this package.
This requires a separate build directory, building directly in the
source tree is disallowed. The <B
CLASS="COMMAND"
>configure</B
> options
are much the same as for a build from the toplevel, and the
<TT
CLASS="FILENAME"
>README.host</TT
> file can be consulted for more
details. It is essential that the watchdog support be configured with
the same <TT
CLASS="OPTION"
>--prefix</TT
> option as other eCos host-side
software, especially the I/O auxiliary provided by the architectural
synthetic target HAL package, otherwise the I/O auxiliary will be
unable to locate the watchdog support.
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="SYNTH-WATCHDOG-TARGET-CONFIG"
></A
><H2
>Target-side
Configuration</H2
><P
>The watchdog device depends on the generic watchdog support,
<TT
CLASS="VARNAME"
>CYGPKG_IO_WATCHDOG</TT
>: if the generic support is
absent then the watchdog device will be inactive. Some templates
include this generic package by default, but not all. If the
configuration does not include the generic package then it can be
added using the eCos configuration tools, for example:
</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="SCREEN"
>$ ecosconfig add CYGPKG_IO_WATCHDOG</PRE
></TD
></TR
></TABLE
><P
>By default the configuration will use the hardware-specific support,
i.e. this package. However the generic watchdog package contains an
alternative implementation using the kernel alarm facility, and that
implementation can be selected if desired. However usually it will be
better to rely on an external watchdog facility as provided by the I/O
auxiliary and the <TT
CLASS="FILENAME"
>watchdog.tcl</TT
> script: if there
are serious problems within the application, for example memory
corruption, then an internal software-only implementation will not be
reliable.
</P
><P
>The watchdog resolution is currently fixed to one second: if the
device does not receive a reset signal at least once a second then
the watchdog will trigger and the eCos application will be terminated
with a <TT
CLASS="LITERAL"
>SIGPWR</TT
> signal. The current implementation
does not allow this resolution to be changed.
</P
><P
>On some targets the watchdog device does not perform a hard reset.
Instead the device works more or less via the interrupt subsystem,
allowing application code to install action routines that will be
called when the watchdog triggers. The synthetic target watchdog
support effectively does perform a hard reset, by sending a
<TT
CLASS="LITERAL"
>SIGPWR</TT
> signal to the eCos application, and there is
no support for action routines.
</P
><P
>The synthetic target watchdog package provides some configuration
options for manipulating the compiler flags used for building the
target-side code. That code is fairly simple, so for nearly all
applications the default flags will suffice.
</P
><P
>It should be noted that the watchdog device is subject to selective
linking. Unless some code explicitly references the device, for
example by calling the start and reset functions, the watchdog support
will not appear in the final executable. This is desirable because a
watchdog device has no effect until started.
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="SYNTH-WATCHDOG-WALLCLOCK-ELAPSED"
></A
><H2
>Wallclock versus Elapsed Time</H2
><P
>On real hardware the watchdog device uses wallclock time: if the
device does not receive a reset signal within a set period of time
then the watchdog will trigger. When developing for the synthetic
target this is not always appropriate. There may be other processes
running, using up some or most of the cpu time. For example, the
application may be written such that it will issue a reset after some
calculations which are known to complete within half a second, well
within the one-second resolution of the watchdog device. However if
other Linux processes are running then the synthetic target
application may get timesliced, and half a second of computation may
take several seconds of wallclock time.
</P
><P
>Another problem with using wallclock time is that it interferes with
debugging: if the application hits a breakpoint then it is unlikely
that the user will manage to restart it in less than a second, and the
watchdog will not get reset in time.
</P
><P
>To avoid these problems the synthetic target watchdog normally uses
consumed cpu time rather than wallclock time. If the application is
timesliced or if it is halted inside gdb then it does not consume any
cpu time. The application actually has to spend a whole second's worth
of cpu cycles without issuing a reset before the watchdog triggers.
</P
><P
>However using consumed cpu time is not a perfect solution either. If
the application makes blocking system calls then it is not using cpu
time. Interaction with the I/O auxiliary involves system calls, but
these should take only a short amount of time so their effects can be
ignored. If the application makes direct system calls such as
<TT
CLASS="FUNCTION"
>cyg_hal_sys_read</TT
> then the system behaviour
becomes undefined. In addition by default the idle thread will make
blocking <TT
CLASS="FUNCTION"
>select</TT
> system calls, effectively waiting
until an interrupt occurs. If an application spends much of its time
idle then the watchdog device may take much longer to trigger than
expected. It may be desirable to enable the synthetic target HAL
configuration option <TT
CLASS="VARNAME"
>CYGIMP_HAL_IDLE_THREAD_SPIN</TT
>,
causing the idle thread to spin rather than block, at the cost of
wasted cpu cycles.
</P
><P
>The default is to use consumed cpu time, but this can be changed in
the target definition file:
</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>synth_device watchdog {
use wallclock_time
&#8230;
}</PRE
></TD
></TR
></TABLE
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="SYNTH-WATCHDOG-GUI"
></A
><H2
>User Interface</H2
><P
>When the synthetic target is run in graphical mode the watchdog device
extends the user interface in two ways. The <SPAN
CLASS="GUIMENU"
>Help</SPAN
>
menu is extended with an entry for the watchdog-specific
documentation. There is also a graphical display of the current state
of the watchdog. Initially the watchdog is asleep:
</P
><DIV
CLASS="INFORMALFIGURE"
><A
NAME="AEN60"><P
></P
><DIV
CLASS="MEDIAOBJECT"
><P
><IMG
SRC="asleep.gif"
ALIGN="CENTER"></P
></DIV
><P
></P
></DIV
><P
>When application code starts the device the watchdog will begin to
keep an eye on things (or occasionally both eyes).
</P
><DIV
CLASS="INFORMALFIGURE"
><A
NAME="AEN65"><P
></P
><DIV
CLASS="MEDIAOBJECT"
><P
><IMG
SRC="awake.gif"
ALIGN="CENTER"></P
></DIV
><P
></P
></DIV
><P
>If the watchdog triggers the display will change again, and optionally
the user can receive an audible alert. The location of the watchdog
display within the I/O auxiliary's window can be controlled via
a <B
CLASS="COMMAND"
>watchdog_pack</B
> entry in the target definition
file. For example the following can be used to put the watchdog
display to the right of the central text window:
</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>synth_device watchdog {
watchdog_pack -in .main.e -side top
&#8230;
}</PRE
></TD
></TR
></TABLE
><P
>The user interface section of the generic synthetic target HAL
documentation can be consulted for more information on window packing.
</P
><P
>By default the watchdog support will not generate an audible alert
when the watchdog triggers, to avoid annoying colleagues. Sound can be
enabled in the target definition file, and two suitable files
<TT
CLASS="FILENAME"
>sound1.au</TT
> and <TT
CLASS="FILENAME"
>sound2.au</TT
> are
supplied as standard:
</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>synth_device watchdog {
sound sound1.au
&#8230;
}</PRE
></TD
></TR
></TABLE
><P
>An absolute path can be specified if desired:
</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>synth_device watchdog {
sound /usr/share/emacs/site-lisp/emacspeak/sounds/default-8k/alarm.au
&#8230;
}</PRE
></TD
></TR
></TABLE
><P
>Sound facilities are not built into the I/O auxiliary itself, instead
an external program is used. The default player is
<B
CLASS="COMMAND"
>play</B
>, a front-end to the
<SPAN
CLASS="APPLICATION"
>sox</SPAN
> application shipped with some Linux
distributions. If another player should be used then this can be
specified in the target definition file:
</P
><TABLE
BORDER="5"
BGCOLOR="#E0E0F0"
WIDTH="70%"
><TR
><TD
><PRE
CLASS="PROGRAMLISTING"
>synth_device watchdog {
&#8230;
sound_player my_sound_player</PRE
></TD
></TR
></TABLE
><P
>The specified program will be run in the background with a single
argument, the sound file.
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="DEVS-WATCHDOG-SYNTH-ARGS"
></A
><H2
>Command Line Arguments</H2
><P
>The watchdog support does not use any command line arguments. All
configuration is handled through the target definition file.
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="DEVS-WATCHDOG-SYNTH-HOOKS"
></A
><H2
>Hooks</H2
><P
>The watchdog support does not provide any hooks for use by other
scripts. There is rarely any need for customizing the system's
behaviour when a watchdog triggers because those should be rare
events, even during application development.
</P
></DIV
><DIV
CLASS="REFSECT1"
><A
NAME="DEVS-WATCHDOG-SYNTH-TCL"
></A
><H2
>Additional Tcl Procedures</H2
><P
>The watchdog support does not provide any additional Tcl procedures or
variables for use by other scripts.
</P
></DIV
></BODY
></HTML
>
/v2_0/doc/synth_watchdog.sgml
0,0 → 1,342
<!-- DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V3.1//EN" -->
 
<!-- {{{ Banner -->
 
<!-- =============================================================== -->
<!-- -->
<!-- synth_watchdog.sgml -->
<!-- -->
<!-- Synthetic target watchdog device -->
<!-- -->
<!-- =============================================================== -->
<!-- ####COPYRIGHTBEGIN#### -->
<!-- -->
<!-- =============================================================== -->
<!-- Copyright (C) 2002 Bart Veer -->
<!-- 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/) -->
<!-- =============================================================== -->
<!-- -->
<!-- ####COPYRIGHTEND#### -->
<!-- =============================================================== -->
<!-- #####DESCRIPTIONBEGIN#### -->
<!-- -->
<!-- Author(s): bartv -->
<!-- Contact(s): bartv -->
<!-- Date: 2002/09/09 -->
<!-- Version: 0.01 -->
<!-- -->
<!-- ####DESCRIPTIONEND#### -->
<!-- =============================================================== -->
 
<!-- }}} -->
 
<part id="devs-watchdog-synth-ref">
<!-- reference id="devs-watchdog-synth-ref" -->
<title>Synthetic Target Watchdog Device</title>
 
<refentry id="devs-watchdog-synth">
<refmeta>
<refentrytitle>Synthetic Target Watchdog Device</refentrytitle>
</refmeta>
<refnamediv>
<refname>Synthetic Target Watchdog Device</refname>
<refpurpose>Emulate watchdog hardware in the synthetic target</refpurpose>
</refnamediv>
 
<refsect1><title>Overview</title>
<para>
Some target hardware comes equipped with a watchdog timer. Application
code can start this timer and after a certain period of time,
typically a second, the watchdog will trigger. Usually this causes the
hardware to reboot. The application can prevent this by regularly
resetting the watchdog. An automatic reboot can be very useful when
deploying hardware in the field: a hardware glitch could cause the
unit to hang; or the software could receive an unexpected sequence of
inputs, never seen in the laboratory, causing the system to lock up.
Often the hardware is still functional, and a reboot sorts out the
problem with only a brief interruption in service.
</para>
<para>
The synthetic target watchdog package emulates watchdog hardware.
During system initialization watchdog device will be instantiated,
and the <filename>watchdog.tcl</filename> script will be loaded by the
I/O auxiliary. When the eCos application starts the watchdog device,
the <filename>watchdog.tcl</filename> script will start checking the
state of the eCos application at one second intervals. A watchdog
reset call simply involves a message to the I/O auxiliary. If the
<filename>watchdog.tcl</filename> script detects that a second has
<link linkend="synth-watchdog-wallclock-elapsed">elapsed</link>
without a reset then it will send a <literal>SIGPWR</literal> signal
to the eCos application, causing the latter to terminate. If gdb is
being used to run the application, the user will get a chance to
investigate what is happening. This behaviour is different from real
hardware in that there is no automatic reboot, but the synthetic
target is used only for development purposes, not deployment in the
field: if a reboot is desired then this can be achieved very easily
by using gdb commands to run another instance of the application.
</para>
</refsect1>
 
<refsect1 id="devs-watchdog-synth-install"><title>Installation</title>
<para>
Before a synthetic target eCos application can use a watchdog device
it is necessary to build and install host-side support. The relevant
code resides in the <filename class="directory">host</filename>
subdirectory of the synthetic target watchdog package, and building it
involves the standard <command>configure</command>,
<command>make</command> and <command>make install</command> steps. The
implementation of the watchdog support does not require any
executables, just a Tcl script <filename>watchdog.tcl</filename> and
some support files, so the <command>make</command> step is a no-op.
</para>
<para>
There are two main ways of building the host-side software. It is
possible to build both the generic host-side software and all
package-specific host-side software, including the watchdog support,
in a single build tree. This involves using the
<command>configure</command> script at the toplevel of the eCos
repository. For more information on this, see the
<filename>README.host</filename> file at the top of the repository.
Note that if you have an existing build tree which does not include
the synthetic target watchdog support then it will be necessary to
rerun the toplevel configure script: the search for appropriate
packages happens at configure time.
</para>
<para>
The alternative is to build just the host-side for this package.
This requires a separate build directory, building directly in the
source tree is disallowed. The <command>configure</command> options
are much the same as for a build from the toplevel, and the
<filename>README.host</filename> file can be consulted for more
details. It is essential that the watchdog support be configured with
the same <option>--prefix</option> option as other eCos host-side
software, especially the I/O auxiliary provided by the architectural
synthetic target HAL package, otherwise the I/O auxiliary will be
unable to locate the watchdog support.
</para>
</refsect1>
 
<refsect1 id="synth-watchdog-target-config"><title>Target-side
Configuration</title>
<para>
The watchdog device depends on the generic watchdog support,
<varname>CYGPKG_IO_WATCHDOG</varname>: if the generic support is
absent then the watchdog device will be inactive. Some templates
include this generic package by default, but not all. If the
configuration does not include the generic package then it can be
added using the eCos configuration tools, for example:
</para>
<screen>
$ ecosconfig add CYGPKG_IO_WATCHDOG
</screen>
<para>
By default the configuration will use the hardware-specific support,
i.e. this package. However the generic watchdog package contains an
alternative implementation using the kernel alarm facility, and that
implementation can be selected if desired. However usually it will be
better to rely on an external watchdog facility as provided by the I/O
auxiliary and the <filename>watchdog.tcl</filename> script: if there
are serious problems within the application, for example memory
corruption, then an internal software-only implementation will not be
reliable.
</para>
<para>
The watchdog resolution is currently fixed to one second: if the
device does not receive a reset signal at least once a second then
the watchdog will trigger and the eCos application will be terminated
with a <literal>SIGPWR</literal> signal. The current implementation
does not allow this resolution to be changed.
</para>
<para>
On some targets the watchdog device does not perform a hard reset.
Instead the device works more or less via the interrupt subsystem,
allowing application code to install action routines that will be
called when the watchdog triggers. The synthetic target watchdog
support effectively does perform a hard reset, by sending a
<literal>SIGPWR</literal> signal to the eCos application, and there is
no support for action routines.
</para>
<para>
The synthetic target watchdog package provides some configuration
options for manipulating the compiler flags used for building the
target-side code. That code is fairly simple, so for nearly all
applications the default flags will suffice.
</para>
<para>
It should be noted that the watchdog device is subject to selective
linking. Unless some code explicitly references the device, for
example by calling the start and reset functions, the watchdog support
will not appear in the final executable. This is desirable because a
watchdog device has no effect until started.
</para>
</refsect1>
 
<refsect1 id="synth-watchdog-wallclock-elapsed"><title>Wallclock versus Elapsed Time</title>
<para>
On real hardware the watchdog device uses wallclock time: if the
device does not receive a reset signal within a set period of time
then the watchdog will trigger. When developing for the synthetic
target this is not always appropriate. There may be other processes
running, using up some or most of the cpu time. For example, the
application may be written such that it will issue a reset after some
calculations which are known to complete within half a second, well
within the one-second resolution of the watchdog device. However if
other Linux processes are running then the synthetic target
application may get timesliced, and half a second of computation may
take several seconds of wallclock time.
</para>
<para>
Another problem with using wallclock time is that it interferes with
debugging: if the application hits a breakpoint then it is unlikely
that the user will manage to restart it in less than a second, and the
watchdog will not get reset in time.
</para>
<para>
To avoid these problems the synthetic target watchdog normally uses
consumed cpu time rather than wallclock time. If the application is
timesliced or if it is halted inside gdb then it does not consume any
cpu time. The application actually has to spend a whole second's worth
of cpu cycles without issuing a reset before the watchdog triggers.
</para>
<para>
However using consumed cpu time is not a perfect solution either. If
the application makes blocking system calls then it is not using cpu
time. Interaction with the I/O auxiliary involves system calls, but
these should take only a short amount of time so their effects can be
ignored. If the application makes direct system calls such as
<function>cyg_hal_sys_read</function> then the system behaviour
becomes undefined. In addition by default the idle thread will make
blocking <function>select</function> system calls, effectively waiting
until an interrupt occurs. If an application spends much of its time
idle then the watchdog device may take much longer to trigger than
expected. It may be desirable to enable the synthetic target HAL
configuration option <varname>CYGIMP_HAL_IDLE_THREAD_SPIN</varname>,
causing the idle thread to spin rather than block, at the cost of
wasted cpu cycles.
</para>
<para>
The default is to use consumed cpu time, but this can be changed in
the target definition file:
</para>
<programlisting>
synth_device watchdog {
use wallclock_time
&hellip;
}
</programlisting>
</refsect1>
 
<refsect1 id="synth-watchdog-gui"><title>User Interface</title>
<para>
When the synthetic target is run in graphical mode the watchdog device
extends the user interface in two ways. The <guimenu>Help</guimenu>
menu is extended with an entry for the watchdog-specific
documentation. There is also a graphical display of the current state
of the watchdog. Initially the watchdog is asleep:
</para>
<informalfigure PgWide=1>
<mediaobject>
<imageobject>
<imagedata fileref="asleep.png" Scalefit=1 Align="Center">
</imageobject>
</mediaobject>
</informalfigure>
<para>
When application code starts the device the watchdog will begin to
keep an eye on things (or occasionally both eyes).
</para>
<informalfigure PgWide=1>
<mediaobject>
<imageobject>
<imagedata fileref="awake.png" Scalefit=1 Align="Center">
</imageobject>
</mediaobject>
</informalfigure>
<para>
If the watchdog triggers the display will change again, and optionally
the user can receive an audible alert. The location of the watchdog
display within the I/O auxiliary's window can be controlled via
a <command>watchdog_pack</command> entry in the target definition
file. For example the following can be used to put the watchdog
display to the right of the central text window:
</para>
<programlisting>
synth_device watchdog {
watchdog_pack -in .main.e -side top
&hellip;
}
</programlisting>
<para>
The user interface section of the generic synthetic target HAL
documentation can be consulted for more information on window packing.
</para>
<para>
By default the watchdog support will not generate an audible alert
when the watchdog triggers, to avoid annoying colleagues. Sound can be
enabled in the target definition file, and two suitable files
<filename>sound1.au</filename> and <filename>sound2.au</filename> are
supplied as standard:
</para>
<programlisting>
synth_device watchdog {
sound sound1.au
&hellip;
}
</programlisting>
<para>
An absolute path can be specified if desired:
</para>
<programlisting>
synth_device watchdog {
sound /usr/share/emacs/site-lisp/emacspeak/sounds/default-8k/alarm.au
&hellip;
}
</programlisting>
<para>
Sound facilities are not built into the I/O auxiliary itself, instead
an external program is used. The default player is
<command>play</command>, a front-end to the
<application>sox</application> application shipped with some Linux
distributions. If another player should be used then this can be
specified in the target definition file:
</para>
<programlisting>
synth_device watchdog {
&hellip;
sound_player my_sound_player
</programlisting>
<para>
The specified program will be run in the background with a single
argument, the sound file.
</para>
</refsect1>
 
<refsect1 id="devs-watchdog-synth-args"><title>Command Line Arguments</title>
<para>
The watchdog support does not use any command line arguments. All
configuration is handled through the target definition file.
</para>
</refsect1>
 
<refsect1 id="devs-watchdog-synth-hooks"><title>Hooks</title>
<para>
The watchdog support does not provide any hooks for use by other
scripts. There is rarely any need for customizing the system's
behaviour when a watchdog triggers because those should be rare
events, even during application development.
</para>
</refsect1>
 
<refsect1 id="devs-watchdog-synth-tcl"><title>Additional Tcl Procedures</title>
<para>
The watchdog support does not provide any additional Tcl procedures or
variables for use by other scripts.
</para>
</refsect1>
 
</refentry>
</part>
<!-- /reference -->
/v2_0/doc/awake.png Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
v2_0/doc/awake.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: v2_0/doc/asleep.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: v2_0/doc/asleep.png =================================================================== --- v2_0/doc/asleep.png (nonexistent) +++ v2_0/doc/asleep.png (revision 174)
v2_0/doc/asleep.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: v2_0/doc/makefile =================================================================== --- v2_0/doc/makefile (nonexistent) +++ v2_0/doc/makefile (revision 174) @@ -0,0 +1,34 @@ +#============================================================================= +# +# makefile +# +# For building the synthetic target watchdog package documentation +# +#============================================================================= +#####COPYRIGHTBEGIN#### +# +# =============================================================== +# Copyright (C) 2002 Bart Veer +# 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/) +# =============================================================== +# +#####COPYRIGHTEND#### +#============================================================================= +#####DESCRIPTIONBEGIN#### +# +# Author(s): bartv +# Date: 2002-09-09 +#####DESCRIPTIONEND#### +#============================================================================= + +TOPLEVEL := ../../../../.. +MAIN_SGML := synth_watchdog.sgml +MAIN_HTML := devs-watchdog-synth.html +MAIN_PDF := devs-watchdog-synth.pdf +OTHER_SGML := +PICTURES := + +include $(TOPLEVEL)/pkgconf/rules.doc Index: v2_0/src/synth_watchdog.cxx =================================================================== --- v2_0/src/synth_watchdog.cxx (nonexistent) +++ v2_0/src/synth_watchdog.cxx (revision 174) @@ -0,0 +1,159 @@ +//========================================================================== +// +// synth_watchdog.cxx +// +// Watchdog driver for the synthetic target +// +//========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 2002 Bart Veer +// +// eCos is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 or (at your option) any later version. +// +// eCos is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. +// +// You should have received a copy of the GNU General Public License along +// with eCos; if not, write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +// +// As a special exception, if other files instantiate templates or use macros +// or inline functions from this file, or you compile this file and link it +// with other works to produce a work based on this file, this file does not +// by itself cause the resulting work to be covered by the GNU General Public +// License. However the source code for this file must still be made available +// in accordance with section (3) of the GNU General Public License. +// +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// +// Alternative licenses for eCos may be arranged by contacting the +// copyright holder(s). +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): bartv +// Contributors: bartv +// Date: 2002-09-04 +// +//####DESCRIPTIONEND#### +//========================================================================== + +#include +#include + +#ifdef CYGIMP_WATCHDOG_HARDWARE + +#include +#include +#include +#include +#include + +// FIXME: right now the generic watchdog header depends on the +// kernel. That should be fixed in the watchdog code, but will +// affect some device drivers as well +#include +#include + +// Protocol between host and target +#define SYNTH_WATCHDOG_START 0x01 +#define SYNTH_WATCHDOG_RESET 0x02 + +// The synthetic target's watchdog implementation involves interaction +// with a watchdog.tcl script running in the I/O auxiliary. The device +// must be instantiated during system initialization, preferably via +// a prioritized C++ static constructor. The generic watchdog package +// does have a static object, but it is not prioritized. If +// CYGSEM_HAL_STOP_CONSTRUCTORS_ON_FLAG is enabled then that object's +// constructor would get called too late. +// +// Instead a private class is defined here, and once instance is created. +// That instance gets referenced by the Cyg_Watchdog members, so +// selective linking does not get in the way. Instantiation happens inside +// the constructor, and the main Cyg_Watchdog::start() and reset() functions +// involve passing a message to the host-side. +// +// There is an open issue re. resolution. Usually the hardware imposes +// limits on what resolutions are valid, in fact there may be only one. +// With the synthetic target it would be possible to configure the +// desired resolution either on the target-side using a CDL option, or +// on the host-side using the target definition file. The resolution +// would have to be fairly coarse, probably at least 0.1 seconds, +// to allow for communication overheads. It is not clear whether +// target-side or host-side configuration is more appropriate, so for +// now a fixed resolution of one second is used. + +class _Synth_Watchdog { + public: + _Synth_Watchdog(); + ~_Synth_Watchdog() { } + + cyg_uint64 resolution; +}; + +// A static instance of the _Synth_Watchdog class, whose constructor will +// be called at the right time to instantiate host-side support. +static _Synth_Watchdog _synth_watchdog_object CYGBLD_ATTRIB_INIT_PRI(CYG_INIT_DRIVERS); + +// Id for communicating with the watchdog instance in the auxiliary +static int aux_id = -1; + +_Synth_Watchdog::_Synth_Watchdog() +{ + // SIGPWR is disabled by default. It has to be reenabled. + struct cyg_hal_sys_sigset_t blocked; + CYG_HAL_SYS_SIGEMPTYSET(&blocked); + CYG_HAL_SYS_SIGADDSET(&blocked, CYG_HAL_SYS_SIGPWR); + cyg_hal_sys_sigprocmask(CYG_HAL_SYS_SIG_UNBLOCK, &blocked, (cyg_hal_sys_sigset_t*) 0); + + resolution = 1000000000LL; + if (synth_auxiliary_running) { + aux_id = synth_auxiliary_instantiate("devs/watchdog/synth", + SYNTH_MAKESTRING(CYGPKG_DEVS_WATCHDOG_SYNTH), + "watchdog", + (const char*) 0, + (const char*) 0); + } +} + +// Hardware initialization. This has already happened in the +// _Synth_Watchdog constructor, all that is needed here is to +// propagate the resolution. +void +Cyg_Watchdog::init_hw(void) +{ + resolution = _synth_watchdog_object.resolution; +} + +void +Cyg_Watchdog::start(void) +{ + if (synth_auxiliary_running && (-1 != aux_id)) { + synth_auxiliary_xchgmsg(aux_id, SYNTH_WATCHDOG_START, 0, 0, + (const unsigned char*)0, 0, + (int *) 0, + (unsigned char*) 0, (int*) 0, 0); + } +} + +void +Cyg_Watchdog::reset() +{ + if (synth_auxiliary_running && (-1 != aux_id)) { + synth_auxiliary_xchgmsg(aux_id, SYNTH_WATCHDOG_RESET, 0, 0, + (const unsigned char*)0, 0, + (int *) 0, + (unsigned char*) 0, (int*) 0, 0); + } +} + +#endif // CYGIMP_WATCHDOG_HARDWARE Index: v2_0/ChangeLog =================================================================== --- v2_0/ChangeLog (nonexistent) +++ v2_0/ChangeLog (revision 174) @@ -0,0 +1,69 @@ +2003-03-23 Iztok Zupet + + * doc/synth_watchdog.sgml: Replaced .gif with .png to allow for + PDF build. + + * doc/asleep.gif, doc/awake.gif: Converted to *.png and deleted. + * doc/asleep.png, doc/awake.png: New files. + +2003-02-25 Jonathan Larmour + + * doc/synth_watchdog.sgml: Declare as not to get + correct TOC numbering. + +2003-02-24 Jonathan Larmour + + * cdl/synth_watchdog.cdl: Add doc link. + + * doc/synth_watchdog.sgml: Comment out DOCTYPE for now to allow + building with standard doc build. + Add an enclosing so it's structured better with standard + doc build. + +2003-02-12 Bart Veer + + * host/Makefile.in: + Regenerate after toplevel acinclude.m4 update + +2002-09-16 Bart Veer + + * cdl/synth_watchdog.cdl: + Synthetic watchdog device should only be active if the + generic watchdog support is present + +2002-09-04 Bart Veer + + * Synthetic target watchdog package created + +//=========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 2002, 2003 Bart Veer +// +// eCos is free software; you can redistribute it and/or modify it under +// the terms of the GNU General Public License as published by the Free +// Software Foundation; either version 2 or (at your option) any later version. +// +// eCos is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +// for more details. +// +// You should have received a copy of the GNU General Public License along +// with eCos; if not, write to the Free Software Foundation, Inc., +// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. +// +// As a special exception, if other files instantiate templates or use macros +// or inline functions from this file, or you compile this file and link it +// with other works to produce a work based on this file, this file does not +// by itself cause the resulting work to be covered by the GNU General Public +// License. However the source code for this file must still be made available +// in accordance with section (3) of the GNU General Public License. +// +// This exception does not invalidate any other reasons why a work based on +// this file might be covered by the GNU General Public License. +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//=========================================================================== + Index: v2_0/host/alarm.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: v2_0/host/alarm.gif =================================================================== --- v2_0/host/alarm.gif (nonexistent) +++ v2_0/host/alarm.gif (revision 174)
v2_0/host/alarm.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: v2_0/host/doghouse.pov =================================================================== --- v2_0/host/doghouse.pov (nonexistent) +++ v2_0/host/doghouse.pov (revision 174) @@ -0,0 +1,161 @@ +// A simple "doghouse" picture, used for the synthetic target +// watchdog device host-side. +// +// This file is normally built using the following command line: +// +// x-povray +Idoghouse.pov +W128 +H128 +D +Q9 +AM2 +A0.9 +FP + +#include "consts.inc" +#include "colors.inc" +#include "shapes.inc" +#include "textures.inc" +#include "skies.inc" +#include "woods.inc" + +camera { + location <4.5, 2.2, -5> + look_at <2, 2, 2> +} + +light_source { + <7, 4, -1.5> + color White +} + +sky_sphere { S_Cloud2 scale 2 } +background { colour LightBlue } + +plane { + y 0 + texture { + pigment { color red 0.5 green 0.98 blue 0 turbulence 0.5} + normal { bumps 0.4 scale 0.1 } + } +} + +fog { + distance 40 + fog_type Ground_Fog + fog_offset 1 + fog_alt 1 + colour rgbf<0, 0.2, 0.2, 0.3> + turbulence 0.2 +} + +// A plank is a 1x1x0.1 block with a corner at the origin. The edges are +// slightly rounded, to make sure that the plank boundaries are just +// about visible. +#declare Plank = + superellipsoid { <0.03,0.03> scale <0.5,0.5,0.05> translate <0.5,0.5,0.05> texture { T_Wood10 } } + +// A variant, for the roof +#declare RoofPlank = + superellipsoid { <0.05,0.05> scale <0.5,0.5,0.05> translate <0.5,0.5,0.05> texture { T_Wood14 } } + +// The front and back, a rectangle with a triangle on top. +// Going clockwise from the bottom left, the coordinates are: +// <0,0> <0,3.2>, <2.4.5>, <4,3.2>, <4.0> +// Each is made from five horizontal planks. +// +// Note: this doghouse is not intended to be an example of good +// woodworking. For example, butt joints for the walls are a bad idea. +// Most importantly the roof should involve lapped joints with a +// sensible ridge, the current construction is not going to keep the +// rain out. +#declare RoofAngle = degrees(atan2(1.3,2)); +#declare RoofAngleR = atan2(1.3,2); + +#declare FrontBack = + difference { + union { + object { Plank scale <4,1,1> translate <0,0,0> } + object { Plank scale <4,1,1> translate <0,1,0> } + object { Plank scale <4,1,1> translate <0,2,0> } + object { Plank scale <4,1,1> translate <0,3,0> } + object { Plank scale <4,1,1> translate <0,4,0> } + } + union { + box { <0,0,0> <4,4,1> rotate <0,0,RoofAngle> translate <0,3.2,-0.5> } + box { <0,0,0> <4,4,1> rotate <0,0, -1 * RoofAngle> translate <2,4.5,-0.5> } + pigment { Black } + } + } + +// The front also has some text to name the dog, and a +// cutout for the opening. +object { + difference { + object { FrontBack } + union { + text { + ttf "cyrvetic.ttf" "FIFI" 0.1 0 + translate <1.2, 2.8, -0.05> + } + box { <1,0,-0.5> <3,2.2,0.5> } + object { + cylinder { <0,0,0> <0,0,1> 1 } + scale <1,0.33,1> + translate <2,2.2,-0.5> + } + pigment { Black } + } + } +} + +// The back, nothing fancy needed here. The doghouse is twice +// as deep as it is wide. +object { FrontBack translate <0,0,8> } + +// A floor, to prevent any bright grass showing inside +box { <0.05,0,0.05> <3.95,0.05,7.95> texture { T_Wood3 } } + +// LHS +object { Plank scale <8,1,1> rotate <0,-90,0> translate <0,0,0.1> } +object { Plank scale <8,1,1> rotate <0,-90,0> translate <0,1,0.1> } +object { Plank scale <8,1,1> rotate <0,-90,0> translate <0,2,0.1> } + +// RHS +object { Plank scale <8,1,1> rotate <0,-90,0> translate <4,0,0.1> } +object { Plank scale <8,1,1> rotate <0,-90,0> translate <4,1,0.1> } +object { Plank scale <8,1,1> rotate <0,-90,0> translate <4,2,0.1> } + +// Now for the roof. The top of the roof is at <2,4.5,0>, and the +// corners are at <0,3.2,0> and <4,3.2,0>. The planks are 0.1 units +// thick. + +#declare RoofPlank = + superellipsoid { <0.05,0.05> scale <0.5,0.5,0.05> translate <0.5,0.5,0.05> texture { T_Wood14 } } + +#declare RoofPlank_L = object { + RoofPlank + rotate <0, -90, RoofAngle - 90> + scale<1,1,8.5> +} + +#declare RoofPlank_R = object { + RoofPlank + rotate <0, -90, -90 - RoofAngle> + scale<1,1,8.5> +} + +object { RoofPlank_L translate<2 - (1 * cos(RoofAngleR)), 4.5 - (1 * sin(RoofAngleR)), -0.25> } +object { RoofPlank_L translate<2 - (2 * cos(RoofAngleR)), 4.5 - (2 * sin(RoofAngleR)), -0.25> } +object { RoofPlank_L translate<2 - (3 * cos(RoofAngleR)), 4.5 - (3 * sin(RoofAngleR)), -0.25> } + +object { RoofPlank_R translate<2 + (-0.1 * cos(RoofAngleR)), 4.5 - (-0.1 * sin(RoofAngleR)), -0.25> } +object { RoofPlank_R translate<2 + (0.9 * cos(RoofAngleR)), 4.5 - (0.9 * sin(RoofAngleR)), -0.25> } +object { RoofPlank_R translate<2 + (1.9 * cos(RoofAngleR)), 4.5 - (1.9 * sin(RoofAngleR)), -0.25> } + +// And just for fun, a dog bowl. +object { + merge { + difference { + torus { 1.0 0.5 } + box { <-1,-1,-1> <1,0,1> pigment { Black } } + } + cylinder { <0,0,0> <0,0.2,0> 0.9 } + } + scale <0.5,0.5,0.5> + translate <-0.5,0,-0.7> + pigment { Yellow } +} Index: v2_0/host/watchdog.tcl =================================================================== --- v2_0/host/watchdog.tcl (nonexistent) +++ v2_0/host/watchdog.tcl (revision 174) @@ -0,0 +1,425 @@ +# {{{ Banner + +# ============================================================================ +# +# watchdog.tcl +# +# Watchdog support for the eCos synthetic target I/O auxiliary +# +# ============================================================================ +# ####COPYRIGHTBEGIN#### +# +# ---------------------------------------------------------------------------- +# Copyright (C) 2002 Bart Veer +# +# This file is part of the eCos host tools. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ---------------------------------------------------------------------------- +# +# ####COPYRIGHTEND#### +# ============================================================================ +# #####DESCRIPTIONBEGIN#### +# +# Author(s): bartv +# Contact(s): bartv +# Date: 2002/09/04 +# Version: 0.01 +# Description: +# Implementation of the watchdog device. This script should only ever +# be run from inside the ecosynth auxiliary. +# +# ####DESCRIPTIONEND#### +# ============================================================================ + +# }}} + +namespace eval watchdog { + + # Was initialization successful? + variable init_ok 1 + + # Has the alarm triggered? + variable alarm_triggered 0 + + # The eCos application process id. This is needed to send a SIGPWR signal + # if the watchdog triggers, and to access /proc//stat to obtain + # timing information. Strictly speaking _ppid is not exported by + # the I/O auxiliary. + if { ! [info exists synth::_ppid] } { + synth::report_error "Watchdog initialization failed, _ppid variable required" + return "" + } + variable ecos_pid $synth::_ppid + + # Resolution, i.e. how long to go between checks. Currently this is hard-wired + # to one second, or 1000 ms. This may become configurable, either on the + # target-side via CDL or on the host-side via the target definition file. + # Note that currently the watchdog device and the GUI get updated via the + # same timer. If the resolution is changed to e.g. 10 seconds then it might + # be a good idea to update the GUI more frequently, although there are + # arguments for keeping the animation in step with the real work. + variable resolution 1000 + + # Options from the target definition file + variable use_wallclock 0 + variable window_pack "-in .main.n -side right" + variable sound_file "" + variable sound_player "play" + + if { [synth::tdf_has_device "watchdog"] } { + if { [synth::tdf_has_option "watchdog" "use"] } { + set _use [synth::tdf_get_option "watchdog" "use"] + if { "wallclock_time" == $_use } { + set watchdog::use_wallclock 1 + } elseif { "consumed_cpu_time" == $_use } { + set watchdog::use_wallclock 0 + } else { + synth::report_error "Invalid entry in target definition file $synth::target_definition\n\ + \ Device watchdog, option \"use\" should be \"wallclock_time\" or \"consumed_cpu_time\"\n" + } + unset _use + } + if { [synth::tdf_has_option "watchdog" "watchdog_pack"] } { + set watchdog::window_pack [synth::tdf_get_option "watchdog" "watchdog_pack"] + # Too complicated to validate here, instead leave it to a catch statement + # when the window actually gets packed + } + if { [synth::tdf_has_option "watchdog" "sound"] } { + set _sound_file [synth::tdf_get_option "watchdog" "sound"] + # Look for this sound file in the install tree first, then absolute or relative + if { [file exists [file join $synth::device_install_dir $_sound_file] ] } { + set _sound_file [file join $synth::device_install_dir $_sound_file] + } + if { ![file exists $_sound_file] } { + synth::report_error "Invalid entry in target definition file $synth::target_definition\n\ + \ Device watchdog, option \"sound\", failed to find $_sound_file\n" + } elseif { ! [file readable $_sound_file] } { + synth::report_error "Invalid entry in target definition file $synth::target_definition\n\ + \ Device watchdog, option \"sound\", no read access to file $_sound_file\n" + } else { + set watchdog::sound_file $_sound_file + } + unset _sound_file + } + if { [synth::tdf_has_option "watchdog" "sound_player"] } { + set watchdog::sound_player [synth::tdf_get_option "watchdog" "sound_player"] + } + } + + # There is no point in creating the watchdog window if any of the image files are missing + if { $synth::flag_gui } { + foreach _image [list "doghouse.gif" "alarm.gif" "eye.gif" "asleep.gif"] { + variable image_[file rootname $_image] + if { ! [synth::load_image "watchdog::image_[file rootname $_image]" [file join $synth::device_install_dir $_image]] } { + synth::report_error "Watchdog device, unable to load image $_image\n\ + \ This file should have been installed in $synth::device_install_dir\n" + set watchdog::init_ok 0 + } + } + } + if { $synth::flag_gui && $watchdog::init_ok } { + canvas .watchdog -width [image width $image_doghouse] -height [image height $image_doghouse] \ + -borderwidth 0 + variable background [.watchdog create image 0 0 -anchor nw -image $image_doghouse] + + # Eye positions inside the doghouse. The eye is an 8x10 gif, + # mostly white but transparent around the corners + variable left_eye_x 48 + variable left_eye_y 70 + variable right_eye_x 58 + variable right_eye_y 70 + + # Pupil positions relative to the eye. The pupils are 3x3 rectangles. + # The dog can look in one of nine different directions, with both eyes + # looking in the same direction (if visible) + variable pupil_positions { { 1 6 } { 1 5 } { 1 3 } { 3 1 } { 3 4 } { 3 6 } { 4 3 } { 4 5 } { 4 6 } } + + # Which eyes are currently visible: none, left, right or both + variable eyes "none" + # What is the current pupil position? + variable pupils 4 + + variable left_eye [.watchdog create image $left_eye_x $left_eye_y -anchor nw -image $image_eye] + variable right_eye [.watchdog create image $right_eye_x $right_eye_y -anchor nw -image $image_eye] + + variable left_pupil \ + [.watchdog create rectangle \ + [expr $left_eye_x + [lindex [lindex $pupil_positions $pupils] 0]] \ + [expr $left_eye_y + [lindex [lindex $pupil_positions $pupils] 1]] \ + [expr $left_eye_x + [lindex [lindex $pupil_positions $pupils] 0] + 2] \ + [expr $left_eye_y + [lindex [lindex $pupil_positions $pupils] 1] + 2] \ + -fill black] + variable right_pupil \ + [.watchdog create rectangle \ + [expr $right_eye_x + [lindex [lindex $pupil_positions $pupils] 0]] \ + [expr $right_eye_y + [lindex [lindex $pupil_positions $pupils] 1]] \ + [expr $right_eye_x + [lindex [lindex $pupil_positions $pupils] 0] + 2] \ + [expr $right_eye_y + [lindex [lindex $pupil_positions $pupils] 1] + 2] \ + -fill black] + + + # The dog is asleep until the eCos application activates the watchdog device + .watchdog lower $left_eye $background + .watchdog lower $right_eye $background + .watchdog lower $left_pupil $background + .watchdog lower $right_pupil $background + + # Prepare for an alarm, but obviously the alarm picture should be hidden for now. + variable alarm [.watchdog create image 30 56 -anchor nw -image $image_alarm] + .watchdog lower $alarm $background + + # Start asleep + variable asleep [.watchdog create image 48 70 -anchor nw -image $image_asleep] + + # Now try to pack the watchdog window using the option provided by the + # user. If that fails, report the error and pack in a default window. + if { [catch { eval pack .watchdog $watchdog::window_pack } message] } { + synth::report_error "Watchdog device, failed to pack window in $watchdog::window_pack\n $message" + pack .watchdog -in .main.n -side right + } + + # Updating the display. This happens once a second. + # If neither eye is visible, choose randomly between + # left-only, right-only or both. Otherwise there is + # a one in eight chance of blinking, probably switching + # to one of the other eye modes + # + # Also, the visible pupil(s) will move every second, to one + # of nine positions + proc gui_update { } { + + if { "none" == $watchdog::eyes} { + set rand [expr int(3 * rand())] + if { 0 == $rand } { + set watchdog::eyes "left" + .watchdog raise $watchdog::left_eye $watchdog::background + .watchdog raise $watchdog::left_pupil $watchdog::left_eye + } elseif { 1 == $rand } { + set watchdog::eyes "right" + .watchdog raise $watchdog::right_eye $watchdog::background + .watchdog raise $watchdog::right_pupil $watchdog::right_eye + } else { + set watchdog::eyes "both" + .watchdog raise $watchdog::left_eye $watchdog::background + .watchdog raise $watchdog::left_pupil $watchdog::left_eye + .watchdog raise $watchdog::right_eye $watchdog::background + .watchdog raise $watchdog::right_pupil $watchdog::right_eye + } + } else { + if { 0 == [expr int(8 * rand())] } { + set watchdog::eyes "none" + .watchdog lower $watchdog::left_eye $watchdog::background + .watchdog lower $watchdog::right_eye $watchdog::background + .watchdog lower $watchdog::left_pupil $watchdog::background + .watchdog lower $watchdog::right_pupil $watchdog::background + + # There is no point in moving the pupils if both eyes are shut + return + } + } + + set watchdog::pupils [expr int(9 * rand())] + set new_pupil_x [lindex [lindex $watchdog::pupil_positions $watchdog::pupils] 0] + set new_pupil_y [lindex [lindex $watchdog::pupil_positions $watchdog::pupils] 1] + + if { ("left" == $watchdog::eyes) || ("both" == $watchdog::eyes) } { + .watchdog coords $watchdog::left_pupil \ + [expr $watchdog::left_eye_x + $new_pupil_x] \ + [expr $watchdog::left_eye_y + $new_pupil_y] \ + [expr $watchdog::left_eye_x + $new_pupil_x + 2] \ + [expr $watchdog::left_eye_y + $new_pupil_y + 2] + } + if { ("right" == $watchdog::eyes) || ("both" == $watchdog::eyes) } { + .watchdog coords $watchdog::right_pupil \ + [expr $watchdog::right_eye_x + $new_pupil_x] \ + [expr $watchdog::right_eye_y + $new_pupil_y] \ + [expr $watchdog::right_eye_x + $new_pupil_x + 2] \ + [expr $watchdog::right_eye_y + $new_pupil_y + 2] + } + } + + # Cancel the gui display when the eCos application has exited. + # The watchdog is allowed to go back to sleep. If the application + # exited because of the watchdog then of course the alarm picture + # should remain visible, otherwise it would be just a flash. + proc gui_cancel { } { + .watchdog lower $watchdog::left_eye $watchdog::background + .watchdog lower $watchdog::right_eye $watchdog::background + .watchdog lower $watchdog::left_pupil $watchdog::background + .watchdog lower $watchdog::right_pupil $watchdog::background + if { ! $watchdog::alarm_triggered } { + .watchdog raise $watchdog::asleep $watchdog::background + } + } + + # Raise the alarm. This involves hiding the eyes and raising + # the alarm picture. If sound is enabled, the sound player + # should be invoked + proc gui_alarm { } { + .watchdog lower $watchdog::asleep $watchdog::background + .watchdog lower $watchdog::left_eye $watchdog::background + .watchdog lower $watchdog::right_eye $watchdog::background + .watchdog lower $watchdog::left_pupil $watchdog::background + .watchdog lower $watchdog::right_pupil $watchdog::background + .watchdog raise $watchdog::alarm $watchdog::background + + if { "" != $watchdog::sound_file } { + # Catch errors on the actual exec, e.g. if the sound player is + # invalid, but play the sound in the background. If there are + # problems actually playing the sound then the user should + # still see a message on stderr. Blocking the entire auxiliary + # for a few seconds is not acceptable. + if { [catch { eval exec -- $watchdog::sound_player $watchdog::sound_file & } message] } { + synth::report_warning "Watchdog device, failed to play alarm sound file\n $message\n" + } + } + } + + set _watchdog_help [file join $synth::device_src_dir "doc" "devs-watchdog-synth.html"] + if { ![file readable $_watchdog_help] } { + synth::report_warning "Failed to locate synthetic watchdog documentation $_watchdog_help\n\ + \ Help->Watchdog target menu option disabled.\n" + set _watchdog_help "" + } + if { "" == $_watchdog_help } { + .menubar.help add command -label "Watchdog" -state disabled + } else { + .menubar.help add command -label "Watchdog" -command [list synth::handle_help "file://$_watchdog_help"] + } + } + + # Now for the real work. By default the watchdog is asleep. The eCos + # application can activate it with a start message, which results + # in an "after" timer. That runs once a second to check whether or not + # the watchdog should trigger, and also updates the GUI. + # + # The target-side code should perform a watchdog reset at least once + # a second, which involves another message to this script and the + # setting of the reset_received flag. + # + # The update handler gets information about the eCos application using + # /proc//stat (see man 5 proc). The "state" field is important: + # a state of T indicates that the application is stopped, probably + # inside gdb, so cannot reset the watchdog. The other important field + # is utime, the total number of jiffies (0.01 seconds) executed in + # user space. The code maintains an open file handle to the /proc file. + + variable reset_received 0 + variable after_id "" + variable proc_stat "" + variable last_jiffies 0 + + set _filename "/proc/[set watchdog::ecos_pid]/stat" + if { [catch { open $_filename "r" } proc_stat ] } { + synth::report_error "Watchdog device, failed to open $_filename\n $proc_stat\n" + set watchdog::init_ok 0 + } + unset _filename + + proc update { } { + set watchdog::after_id [after $watchdog::resolution watchdog::update] + if { $synth::flag_gui } { + watchdog::gui_update + } + seek $watchdog::proc_stat 0 "start" + set line [gets $watchdog::proc_stat] + scan $line "%*d %*s %s %*d %*d %*d %*d %*d %*lu %*lu %*lu %*lu %*lu %lu" state jiffies + + # In theory it is possible to examine the state field (the third argument). + # If set to T then that indicates the eCos application is traced or + # stopped, probably inside gdb, and it would make sense to act as if + # the application had sent a reset. Unfortunately the state also appears + # to be set to T if the application is blocked in a system call while + # being debugged - including the idle select(), making the test useless. + # FIXME: figure out how to distinguish between being blocked inside gdb + # and being in a system call. + #if { "T" == $state } { + # set watchdog::reset_received 1 + # return + #} + + # If there has been a recent reset the eCos application can continue to run for a bit longer. + if { $watchdog::reset_received } { + set watchdog::last_jiffies $jiffies + set watchdog::reset_received 0 + return + } + + # We have not received a reset. If the watchdog is using wallclock time then + # that is serious. If the watchdog is using elapsed cpu time then the eCos + # application may not actually have consumed a whole second of cpu time yet. + if { $watchdog::use_wallclock || (($jiffies - $watchdog::last_jiffies) > ($watchdog::resolution / 10)) } { + set watchdog::alarm_triggered 1 + # Report the situation via the main text window + synth::report "Watchdog device: the eCos application has not sent a recent reset\n Raising SIGPWR signal.\n" + # Then kill off the eCos application + exec kill -PWR $watchdog::ecos_pid + # There is no point in another run of the timer + after cancel $watchdog::after_id + # And if the GUI is running, raise the alarm visually + if { $synth::flag_gui } { + watchdog::gui_alarm + } + } + } + + # When the eCos application has exited, cancel the timer and + # clean-up the GUI. Also get rid of the open file since the + # /proc//stat file is no longer meaningful + proc exit_hook { arg_list } { + if { "" != $watchdog::after_id } { + after cancel $watchdog::after_id + } + if { $synth::flag_gui } { + watchdog::gui_cancel + } + close $watchdog::proc_stat + } + synth::hook_add "ecos_exit" watchdog::exit_hook + + proc handle_request { id reqcode arg1 arg2 reqdata reqlen reply_len } { + if { 0x01 == $reqcode } { + # A "start" request. If the watchdog has already started, + # this request is a no-op. Otherwise a timer is enabled. + # This is made to run almost immediately, so that the + # GUI gets a quick update. Setting the reset_received flag + # ensures that the watchdog will not trigger immediately + set watchdog::reset_received 1 + if { "" == $watchdog::after_id } { + set watchdog::after_id [after 1 watchdog::update] + } + if { $synth::flag_gui } { + .watchdog lower $watchdog::asleep $watchdog::background + } + } elseif { 0x02 == $reqcode } { + # A "reset" request. Just set a flag, the update handler + # will detect this next time it runs. + set watchdog::reset_received 1 + } + } + + proc instantiate { id name data } { + return watchdog::handle_request + } +} + +if { $watchdog::init_ok } { + return watchdog::instantiate +} else { + synth::report "Watchdog cannot be instantiated, initialization failed.\n" + return "" +} Index: v2_0/host/doghouse.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: v2_0/host/doghouse.gif =================================================================== --- v2_0/host/doghouse.gif (nonexistent) +++ v2_0/host/doghouse.gif (revision 174)
v2_0/host/doghouse.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: v2_0/host/configure =================================================================== --- v2_0/host/configure (nonexistent) +++ v2_0/host/configure (revision 174) @@ -0,0 +1,1171 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=watchdog.tcl + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + +ac_aux_dir= +for ac_dir in ../../../../../../acsupport $srcdir/../../../../../../acsupport; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in ../../../../../../acsupport $srcdir/../../../../../../acsupport" 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + + + + echo $ac_n "checking that a separate build tree is being used""... $ac_c" 1>&6 +echo "configure:551: checking that a separate build tree is being used" >&5 + ecos_cwd=`/bin/pwd` + if test "${srcdir}" = "." ; then + srcdir=${ecos_cwd} + fi + if test "${ecos_cwd}" = "${srcdir}" ; then + echo "$ac_t""no" 1>&6 + { echo "configure: error: This configure script should not be run inside the source tree. Instead please use a separate build tree" 1>&2; exit 1; } + else + echo "$ac_t""yes" 1>&6 + fi + + +# Make sure we can run config.sub. +if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:570: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:602: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:655: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 +if test "$program_transform_name" = s,x,x,; then + program_transform_name= +else + # Double any \ or $. echo might interpret backslashes. + cat <<\EOF_SED > conftestsed +s,\\,\\\\,g; s,\$,$$,g +EOF_SED + program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + rm -f conftestsed +fi +test "$program_prefix" != NONE && + program_transform_name="s,^,${program_prefix},; $program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" + +# sed with no file args requires a program. +test "$program_transform_name" = "" && program_transform_name="s,x,x," + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:712: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=eCos_synthetic_target_watchdog + +VERSION=0.1 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi + + + +missing_dir=`cd $ac_aux_dir && pwd` +echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 +echo "configure:751: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:764: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:777: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:790: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:803: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + +echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 +echo "configure:817: checking whether to enable maintainer-specific portions of Makefiles" >&5 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + MAINT=$MAINTAINER_MODE_TRUE + + + +case "${host}" in + i[34567]86-*-linux-gnu* ) SUPPORTED="yes";; + * ) SUPPORTED="no" +esac + + +if test "${SUPPORTED}" = "yes"; then + SUPPORTED_TRUE= + SUPPORTED_FALSE='#' +else + SUPPORTED_TRUE='#' + SUPPORTED_FALSE= +fi + +if test "${SUPPORTED}" = "yes" ; then + + + package_dir=`cd ${srcdir} && /bin/pwd` + PACKAGE_VERSION=`dirname ${package_dir}` + PACKAGE_VERSION=`basename ${PACKAGE_VERSION}` + + package_dir=`dirname ${package_dir}` + package_dir=`dirname ${package_dir}` + + possibles="${package_dir}/.. ${package_dir}/../.. ${package_dir}/../../.. ${package_dir}/../../../.." + possibles="${possibles} ${package_dir}/../../../../.. ${package_dir}/../../../../../.." + + repository_root="" + for i in ${possibles}; do + if test -d "$i/"acsupport""; then + repository_root=$i + break + fi + done + + if test "${repository_root}" = "" ; then + { echo "configure: error: Failed to identify this package's position within the eCos repository" 1>&2; exit 1; } + fi + ECOS_REPOSITORY=`cd "${repository_root}/packages/pkgconf/.." && /bin/pwd` + + PACKAGE_DIR=`echo ${package_dir} | sed -e "s:${ECOS_REPOSITORY}/::"` + + PACKAGE_INSTALL="${PACKAGE_DIR}/${PACKAGE_VERSION}" + + + + + + +fi + +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile:Makefile.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g +s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g +s%@MAINT@%$MAINT%g +s%@SUPPORTED_TRUE@%$SUPPORTED_TRUE%g +s%@SUPPORTED_FALSE@%$SUPPORTED_FALSE%g +s%@ECOS_REPOSITORY@%$ECOS_REPOSITORY%g +s%@PACKAGE_DIR@%$PACKAGE_DIR%g +s%@PACKAGE_VERSION@%$PACKAGE_VERSION%g +s%@PACKAGE_INSTALL@%$PACKAGE_INSTALL%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + Index: v2_0/host/Makefile.in =================================================================== --- v2_0/host/Makefile.in (nonexistent) +++ v2_0/host/Makefile.in (revision 174) @@ -0,0 +1,289 @@ +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +######COPYRIGHTBEGIN#### +# +# ---------------------------------------------------------------------------- +# Copyright (C) 2002 Bart Veer +# +# This file is part of the eCos synthetic target ethernet support. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# ---------------------------------------------------------------------------- +# +######COPYRIGHTEND#### +#######DESCRIPTIONBEGIN#### +######DESCRIPTIONEND#### + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +host_alias = @host_alias@ +host_triplet = @host@ +CC = @CC@ +CXX = @CXX@ +ECOS_REPOSITORY = @ECOS_REPOSITORY@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MSVC_SRCDIR = @MSVC_SRCDIR@ +PACKAGE = @PACKAGE@ +PACKAGE_DIR = @PACKAGE_DIR@ +PACKAGE_INSTALL = @PACKAGE_INSTALL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +VERSION = @VERSION@ +ecos_CFLAGS = @ecos_CFLAGS@ +ecos_CXXFLAGS = @ecos_CXXFLAGS@ +ecos_INCLUDES = @ecos_INCLUDES@ +ecos_LDADD = @ecos_LDADD@ +ecos_LIBS = @ecos_LIBS@ +ecos_infra_incdir = @ecos_infra_incdir@ +ecos_infra_libdir = @ecos_infra_libdir@ +ecos_libcdl_incdir = @ecos_libcdl_incdir@ +ecos_libcdl_libdir = @ecos_libcdl_libdir@ +ecos_tk_includes = @ecos_tk_includes@ +ecos_tk_libs = @ecos_tk_libs@ + +AUTOMAKE_OPTIONS = 1.3 foreign + +@SUPPORTED_TRUE@watchdogdir = @SUPPORTED_TRUE@$(libexecdir)/ecos/@PACKAGE_INSTALL@ +@SUPPORTED_TRUE@watchdog_DATA = @SUPPORTED_TRUE@watchdog.tcl \ +@SUPPORTED_TRUE@ watchdog.tdf \ +@SUPPORTED_TRUE@ alarm.gif doghouse.gif eye.gif asleep.gif \ +@SUPPORTED_TRUE@ sound1.au sound2.au +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../../../acsupport/mkinstalldirs +CONFIG_CLEAN_FILES = +DATA = $(watchdog_DATA) + +DIST_COMMON = Makefile.am Makefile.in acinclude.m4 aclocal.m4 configure \ +configure.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +install-watchdogDATA: $(watchdog_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(watchdogdir) + @list='$(watchdog_DATA)'; for p in $$list; do \ + if test -f $(srcdir)/$$p; then \ + echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(watchdogdir)/$$p"; \ + $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(watchdogdir)/$$p; \ + else if test -f $$p; then \ + echo " $(INSTALL_DATA) $$p $(DESTDIR)$(watchdogdir)/$$p"; \ + $(INSTALL_DATA) $$p $(DESTDIR)$(watchdogdir)/$$p; \ + fi; fi; \ + done + +uninstall-watchdogDATA: + @$(NORMAL_UNINSTALL) + list='$(watchdog_DATA)'; for p in $$list; do \ + rm -f $(DESTDIR)$(watchdogdir)/$$p; \ + done +tags: TAGS +TAGS: + + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + here=`cd $(top_builddir) && pwd`; \ + top_distdir=`cd $(distdir) && pwd`; \ + distdir=`cd $(distdir) && pwd`; \ + cd $(top_srcdir) \ + && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --foreign Makefile + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: install-watchdogDATA +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-watchdogDATA +uninstall: uninstall-am +all-am: Makefile $(DATA) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(watchdogdir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + -rm -f config.status + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + -rm -f config.status + +.PHONY: uninstall-watchdogDATA install-watchdogDATA tags distdir info-am \ +info dvi-am dvi check check-am installcheck-am installcheck \ +install-exec-am install-exec install-data-am install-data install-am \ +install uninstall-am uninstall all-redirect all-am all installdirs \ +mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: Index: v2_0/host/eye.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: v2_0/host/eye.gif =================================================================== --- v2_0/host/eye.gif (nonexistent) +++ v2_0/host/eye.gif (revision 174)
v2_0/host/eye.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: v2_0/host/acinclude.m4 =================================================================== --- v2_0/host/acinclude.m4 (nonexistent) +++ v2_0/host/acinclude.m4 (revision 174) @@ -0,0 +1,45 @@ +dnl Process this file with aclocal to get an aclocal.m4 file. Then +dnl process that with autoconf. +dnl ==================================================================== +dnl +dnl acinclude.m4 +dnl +dnl ==================================================================== +dnl####COPYRIGHTBEGIN#### +dnl +dnl ---------------------------------------------------------------------------- +dnl Copyright (C) 2002 Bart Veer +dnl +dnl This file is part of the eCos host tools. +dnl +dnl This program is free software; you can redistribute it and/or modify it +dnl under the terms of the GNU General Public License as published by the Free +dnl Software Foundation; either version 2 of the License, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but WITHOUT +dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +dnl more details. +dnl +dnl You should have received a copy of the GNU General Public License along with +dnl this program; if not, write to the Free Software Foundation, Inc., +dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +dnl ---------------------------------------------------------------------------- +dnl +dnl####COPYRIGHTEND#### +dnl ==================================================================== +dnl#####DESCRIPTIONBEGIN#### +dnl +dnl Author(s): bartv +dnl Contact(s): bartv +dnl Date: 2002/09/04 +dnl Version: 0.01 +dnl +dnl####DESCRIPTIONEND#### +dnl ==================================================================== + +dnl Access shared macros. +dnl AM_CONDITIONAL needs to be mentioned here or else aclocal does not +dnl incorporate the macro into aclocal.m4 +sinclude(../../../../../../acsupport/acinclude.m4) Index: v2_0/host/configure.in =================================================================== --- v2_0/host/configure.in (nonexistent) +++ v2_0/host/configure.in (revision 174) @@ -0,0 +1,73 @@ +dnl Process this file with autoconf to produce a configure script. +dnl ==================================================================== +dnl +dnl configure.in +dnl +dnl configure script for eCos synthetic target watchdog +dnl host-side support +dnl +dnl ==================================================================== +dnl####COPYRIGHTBEGIN#### +dnl +dnl ---------------------------------------------------------------------------- +dnl Copyright (C) 2002 Bart Veer +dnl +dnl This file is part of the eCos synthetic target support. +dnl +dnl This program is free software; you can redistribute it and/or modify it +dnl under the terms of the GNU General Public License as published by the Free +dnl Software Foundation; either version 2 of the License, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but WITHOUT +dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +dnl more details. +dnl +dnl You should have received a copy of the GNU General Public License along with +dnl this program; if not, write to the Free Software Foundation, Inc., +dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +dnl ---------------------------------------------------------------------------- +dnl +dnl####COPYRIGHTEND#### +dnl ==================================================================== +dnl#####DESCRIPTIONBEGIN#### +dnl +dnl Author(s): bartv +dnl Contact(s): bartv +dnl Date: 2002/09/04 +dnl Version: 0.01 +dnl +dnl####DESCRIPTIONEND#### +dnl ==================================================================== + + +AC_INIT(watchdog.tcl) + +dnl Pick up the support files from the top-level acsupport directory. +AC_CONFIG_AUX_DIR(../../../../../../acsupport) + +ECOS_CHECK_BUILD_ne_SRC +AC_CANONICAL_HOST +AM_INIT_AUTOMAKE(eCos_synthetic_target_watchdog,0.1,0) +AM_MAINTAINER_MODE + +dnl The current version of the synthetic target is implemented only for +dnl x86 Linux platforms, so a test is appropriate here. However +dnl it is not a good idea for the configure script to report an error: +dnl that would prevent any top-level configury working for other +dnl platforms. Instead an automake conditional is used to suppress adding +dnl targets to the build. +case "${host}" in + i[[34567]]86-*-linux-gnu* ) SUPPORTED="yes";; + * ) SUPPORTED="no" +esac +AM_CONDITIONAL(SUPPORTED, test "${SUPPORTED}" = "yes") + +dnl The watchdog host-side support only involves a Tcl +dnl script and data files, so nothing needs to be compiled +if test "${SUPPORTED}" = "yes" ; then + ECOS_PACKAGE_DIRS +fi + +AC_OUTPUT(Makefile:Makefile.in) Index: v2_0/host/Makefile.am =================================================================== --- v2_0/host/Makefile.am (nonexistent) +++ v2_0/host/Makefile.am (revision 174) @@ -0,0 +1,61 @@ +## Process this file with automake to produce Makefile.in +## ===================================================================== +## +## Makefile.am +## +## Build support for the host-side synthetic target support, +## the watchdog package +## +## ===================================================================== +######COPYRIGHTBEGIN#### +# +# ---------------------------------------------------------------------------- +# Copyright (C) 2002 Bart Veer +# +# This file is part of the eCos synthetic target ethernet support. +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2 of the License, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +# more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# ---------------------------------------------------------------------------- +# +######COPYRIGHTEND#### +## ===================================================================== +#######DESCRIPTIONBEGIN#### +## +## Author(s): bartv +## Contact(s): bartv +## Date: 2002/09/04 +## Version: 0.01 +## +######DESCRIPTIONEND#### +## ===================================================================== + +AUTOMAKE_OPTIONS = 1.3 foreign + +## Only some platforms are supported. Having the configure script throw +## an error when attempting to configure on an unsupported platform +## would be a mistake, since that would prevent any configury from +## the toplevel on unsupported platforms. Instead an automake conditional +## is used, leading to null makefiles on unsupported platforms. + +if SUPPORTED + +## The only thing that needs to be installed is a Tcl script and some +## data files. +watchdogdir = $(libexecdir)/ecos/@PACKAGE_INSTALL@ +watchdog_DATA = watchdog.tcl \ + watchdog.tdf \ + alarm.gif doghouse.gif eye.gif asleep.gif \ + sound1.au sound2.au +endif Index: v2_0/host/watchdog.tdf =================================================================== --- v2_0/host/watchdog.tdf (nonexistent) +++ v2_0/host/watchdog.tdf (revision 174) @@ -0,0 +1,63 @@ +synth_device watchdog { + + ## How should the watchdog device decide that the watchdog has + ## triggered, assuming the eCos application has failed to + ## reset the device in time. There are two options: wallclock + ## time, where the watchdog will trigger after a second + ## irrespective of what the eCos application has been doing; + ## or consumed cpu time, where the watchdog will only trigger + ## if the eCos application has actually run for a whole second. + ## + ## Using wallclock time matches most real hardware, + ## but can give spurious results if there are other processes + ## running and consuming cpu cycles. Also, if the user has + ## halted the application in gdb then the watchdog will trigger + ## even though the application has no chance to reset the + ## watchdog. + ## + ## Using consumed cpu cycles avoids these problems. + ## However the default implementation of the idle thread action + ## is to block in a select() system call, so if the eCos + ## application spends most of its time idling but not resetting + ## the watchdog then the device will not trigger. The + ## configuration option CYGIMP_HAL_IDLE_THREAD_SPIN can be used + ## to change the synthetic target HAL's implementation of the + ## idle thread action. + ## + ## The default is to use consumed_cpu_time. Wallclock time can + ## be selected by uncommenting the next line. + # use wallclock_time + # use consumed_cpu_time + + ## When running in GUI mode there will be a small window showing + ## the current state of the watchdog: asleep, watching, or giving + ## the alarm. This window can be packed as desired, using one + ## of the container frames .main.nw .main.n .main.ne .main.w + ## .main.e .main.sw .main.s or .main.se, and with a position of + ## left, right, top or bottom. The default is to pack inside the + ## .main.n frame, on the right, thus causing the watchdog to + ## appear above the central text window. + # watchdog_pack -in .main.n -side right + + ## If running in GUI mode, when the watchdog triggers and resets + ## the eCos application this will be shown in the display. + ## Optionally the watchdog device can also give an audible alert + ## when this happens. This is disabled by default to avoid + ## annoying co-workers, but can be enabled by specifying a suitable + ## sound file. Two such files, sound1.au and sound2.au, are supplied + ## with the watchdog device itself. Alternatively the user can + ## specify a different sound file using a suitable path + # sound sound1.au + # sound sound2.au + # sound ~/sounds/my_watchdog_alert.au + + ## If sound is enabled then the watchdog device needs some way to + ## access the host's sound hardware. Rather than accessing + ## /dev/audio or /dev/dsp directly the watchdog.tcl script will + ## run an external program. This can avoid complications with + ## different sound file formats etc. The default program is + ## "play", a front-end to the sox utility, but a different + ## program or script can be specified if desired. It will be run + ## simply as " &" + # sound_player play +} Index: v2_0/host/sound1.au =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: v2_0/host/sound1.au =================================================================== --- v2_0/host/sound1.au (nonexistent) +++ v2_0/host/sound1.au (revision 174)
v2_0/host/sound1.au Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: v2_0/host/aclocal.m4 =================================================================== --- v2_0/host/aclocal.m4 (nonexistent) +++ v2_0/host/aclocal.m4 (revision 174) @@ -0,0 +1,183 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4-p5 + +dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +dnl Process this file with aclocal to get an aclocal.m4 file. Then +dnl process that with autoconf. +dnl ==================================================================== +dnl +dnl acinclude.m4 +dnl +dnl ==================================================================== +dnl####COPYRIGHTBEGIN#### +dnl +dnl ---------------------------------------------------------------------------- +dnl Copyright (C) 2002 Bart Veer +dnl +dnl This file is part of the eCos host tools. +dnl +dnl This program is free software; you can redistribute it and/or modify it +dnl under the terms of the GNU General Public License as published by the Free +dnl Software Foundation; either version 2 of the License, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, but WITHOUT +dnl ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +dnl FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for +dnl more details. +dnl +dnl You should have received a copy of the GNU General Public License along with +dnl this program; if not, write to the Free Software Foundation, Inc., +dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +dnl ---------------------------------------------------------------------------- +dnl +dnl####COPYRIGHTEND#### +dnl ==================================================================== +dnl#####DESCRIPTIONBEGIN#### +dnl +dnl Author(s): bartv +dnl Contact(s): bartv +dnl Date: 2002/09/04 +dnl Version: 0.01 +dnl +dnl####DESCRIPTIONEND#### +dnl ==================================================================== + +dnl Access shared macros. +dnl AM_CONDITIONAL needs to be mentioned here or else aclocal does not +dnl incorporate the macro into aclocal.m4 +sinclude(../../../../../../acsupport/acinclude.m4) + +# Define a conditional. + +AC_DEFUN([AM_CONDITIONAL], +[AC_SUBST($1_TRUE) +AC_SUBST($1_FALSE) +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi]) + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN([AM_MISSING_PROG], +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + +# Add --enable-maintainer-mode option to configure. +# From Jim Meyering + +# serial 1 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT($USE_MAINTAINER_MODE) + AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + Index: v2_0/host/asleep.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: v2_0/host/asleep.gif =================================================================== --- v2_0/host/asleep.gif (nonexistent) +++ v2_0/host/asleep.gif (revision 174)
v2_0/host/asleep.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: v2_0/host/sound2.au =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: v2_0/host/sound2.au =================================================================== --- v2_0/host/sound2.au (nonexistent) +++ v2_0/host/sound2.au (revision 174)
v2_0/host/sound2.au Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.