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
    from Rev 27 to Rev 174
    Reverse comparison

Rev 27 → Rev 174

/arm/aeb/v2_0/cdl/watchdog_aeb.cdl
0,0 → 1,102
# ====================================================================
#
# watchdog_aeb.cdl
#
# eCos watchdog for ARM/AEB driver configuration data
#
# ====================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
##
## 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 Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): jskov
# Contributors: jskov
# Date: 2000-05-31
#
#####DESCRIPTIONEND####
#
# ====================================================================
 
cdl_package CYGPKG_DEVICES_WATCHDOG_ARM_AEB {
parent CYGPKG_IO_WATCHDOG
active_if CYGPKG_IO_WATCHDOG
display "AEB watchdog driver"
requires CYGPKG_HAL_ARM_AEB
requires CYGPKG_KERNEL
hardware
compile watchdog_aeb.cxx
implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS
implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT
active_if CYGIMP_WATCHDOG_HARDWARE
 
cdl_option CYGIMP_WATCHDOG_HARDWARE {
parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION
display "Hardware watchdog"
default_value 1
implements CYGINT_WATCHDOG_IMPLEMENTATIONS
}
 
cdl_component CYGPKG_DEVICES_WATCHDOG_ARM_AEB_OPTIONS {
display "AEB watchdog build options"
flavor none
description "
Package specific build options including control over
compiler flags used only in building this package,
and details of which tests are built."
 
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_AEB_CFLAGS_ADD {
display "Additional compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are used in addition
to the set of global flags."
}
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_AEB_CFLAGS_REMOVE {
display "Suppressed compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are removed from
the set of global flags if present."
}
 
}
}
/arm/aeb/v2_0/src/watchdog_aeb.cxx
0,0 → 1,161
//==========================================================================
//
// devs/watchdog/arm/aeb/watchdog_aeb.cxx
//
// Watchdog implementation for ARM AEB1 board (SHARP LH77790 CPU)
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): jskov
// Contributors: jskov
// Date: 1999-09-01
// Purpose: Watchdog class implementation
// Description: Contains an implementation of the Watchdog class for use
// with the SHARP LH77790 watchdog timer.
//
//####DESCRIPTIONEND####
//
//==========================================================================
 
#include <pkgconf/system.h> // system configuration file
#include <pkgconf/watchdog.h> // configuration for this package
#include <pkgconf/kernel.h> // kernel config
 
#include <cyg/infra/cyg_trac.h> // tracing macros
#include <cyg/kernel/instrmnt.h> // instrumentation
 
#include <cyg/hal/hal_io.h> // IO register access
 
#include <cyg/io/watchdog.hxx> // watchdog API
 
// -------------------------------------------------------------------------
// Register definitions
#define CYGARC_REG_WATCHDOG_BASE 0xFFFFAC00
#define CYGARC_REG_WATCHDOG_WDCTLR (CYGARC_REG_WATCHDOG_BASE+0x30)
#define CYGARC_REG_WATCHDOG_WDCNTR (CYGARC_REG_WATCHDOG_BASE+0x34)
 
// Control register bits
#define CYGARC_REG_WATCHDOG_WDCTLR_EN 0x01 // enable
#define CYGARC_REG_WATCHDOG_WDCTLR_RSP_NMF 0x00 // non-maskable fiq
#define CYGARC_REG_WATCHDOG_WDCTLR_RSP_ER 0x04 // external reset
#define CYGARC_REG_WATCHDOG_WDCTLR_RSP_SR 0x06 // system reset
#define CYGARC_REG_WATCHDOG_WDCTLR_FRZ 0x08 // lock enable bit
#define CYGARC_REG_WATCHDOG_WDCTLR_TOP_MASK 0x70 // time out period
 
#define CYGARC_REG_WATCHDOG_WDCTLR_TOP_17 0x00 // 2^17
#define CYGARC_REG_WATCHDOG_WDCTLR_TOP_17_P 5242880 // = 5.2ms
 
#define CYGARC_REG_WATCHDOG_WDCTLR_TOP_25 0x40 // 2^25
#define CYGARC_REG_WATCHDOG_WDCTLR_TOP_25_P 1342177300 // = 1.3421773s
 
 
// -------------------------------------------------------------------------
// Constructor
 
void
Cyg_Watchdog::init_hw(void)
{
CYG_REPORT_FUNCTION();
// No HW init.
 
resolution = CYGARC_REG_WATCHDOG_WDCTLR_TOP_25_P;
 
CYG_REPORT_RETURN();
}
 
// -------------------------------------------------------------------------
// Start the watchdog running.
 
void
Cyg_Watchdog::start()
{
CYG_REPORT_FUNCTION();
 
// Clear the watchdog counter.
HAL_WRITE_UINT32(CYGARC_REG_WATCHDOG_WDCNTR, 0);
 
// Enable the watchdog (and lock/FRZ it).
HAL_WRITE_UINT8(CYGARC_REG_WATCHDOG_WDCTLR,
(CYGARC_REG_WATCHDOG_WDCTLR_TOP_25
| CYGARC_REG_WATCHDOG_WDCTLR_FRZ
| CYGARC_REG_WATCHDOG_WDCTLR_RSP_SR
| CYGARC_REG_WATCHDOG_WDCTLR_EN));
CYG_REPORT_RETURN();
}
 
// -------------------------------------------------------------------------
// Reset watchdog timer. This needs to be called regularly to prevent
// the watchdog firing.
 
void
Cyg_Watchdog::reset()
{
CYG_REPORT_FUNCTION();
 
HAL_WRITE_UINT32(CYGARC_REG_WATCHDOG_WDCNTR, 0);
CYG_REPORT_RETURN();
}
 
#if 0
// -------------------------------------------------------------------------
// Action which will do a board reset. Application can register this
// action to get a board reset on watchdog timeout.
 
void
Cyg_Watchdog::reset_action(void)
{
CYG_REPORT_FUNCTION();
// Clear the watchdog counter.
HAL_WRITE_UINT32(CYGARC_REG_WATCHDOG_WDCNTR, 0);
 
// Enable the watchdog with the smallest timeout.
HAL_WRITE_UINT8(CYGARC_REG_WATCHDOG_WDCTLR,
(CYGARC_REG_WATCHDOG_WDCTLR_TOP_17
| CYGARC_REG_WATCHDOG_WDCTLR_FRZ
| CYGARC_REG_WATCHDOG_WDCTLR_RSP_SR
| CYGARC_REG_WATCHDOG_WDCTLR_EN));
 
CYG_REPORT_RETURN();
}
#endif
 
// -------------------------------------------------------------------------
// EOF watchdog_aeb.cxx
/arm/aeb/v2_0/ChangeLog
0,0 → 1,44
2000-05-31 Jesper Skov <jskov@redhat.com>
 
* cdl/watchdog_aeb.cdl:
* src/watchdog_aeb.cxx:
Driver moved to devs/watchdog/arm/aeb. Stripped out
unrelated ChangeLog entries.
 
1999-09-07 Jesper Skov <jskov@cygnus.co.uk>
 
* src/aeb1.cxx: [added]
Added watchdog driver for AEB-1 board.
 
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
/arm/ebsa285/v2_0/cdl/watchdog_ebsa285.cdl
0,0 → 1,102
# ====================================================================
#
# watchdog_ebsa285.cdl
#
# eCos watchdog for ARM/EBSA285 driver configuration data
#
# ====================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
##
## 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 Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): jskov
# Contributors: jskov
# Date: 2000-05-31
#
#####DESCRIPTIONEND####
#
# ====================================================================
 
cdl_package CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285 {
parent CYGPKG_IO_WATCHDOG
active_if CYGPKG_IO_WATCHDOG
display "EBSA285 watchdog driver"
requires CYGPKG_HAL_ARM_EBSA285
requires CYGPKG_KERNEL
hardware
compile watchdog_ebsa285.cxx
implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS
implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT
active_if CYGIMP_WATCHDOG_HARDWARE
 
cdl_option CYGIMP_WATCHDOG_HARDWARE {
parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION
display "Hardware watchdog"
default_value 1
implements CYGINT_WATCHDOG_IMPLEMENTATIONS
}
 
cdl_component CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285_OPTIONS {
display "EBSA285 watchdog build options"
flavor none
description "
Package specific build options including control over
compiler flags used only in building this package,
and details of which tests are built."
 
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285_CFLAGS_ADD {
display "Additional compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are used in addition
to the set of global flags."
}
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_EBSA285_CFLAGS_REMOVE {
display "Suppressed compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are removed from
the set of global flags if present."
}
 
}
}
/arm/ebsa285/v2_0/src/watchdog_ebsa285.cxx
0,0 → 1,151
//==========================================================================
//
// watchdog/ebsa285.cxx
//
// Watchdog implementation for Intel EBSA-285 StronARM board
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): jskov (based on the MN10300 watchdog code by nickg)
// Contributors: jskov, nickg
// Date: 1999-08-26
// Purpose: Watchdog class implementation
// Description: Contains an implementation of the Watchdog class for use
// with the EBSA285/21285 hardware watchdog timer.
//
//####DESCRIPTIONEND####
//
//==========================================================================
 
#include <pkgconf/system.h> // system configuration file
#include <pkgconf/watchdog.h> // configuration for this package
#include <pkgconf/kernel.h> // kernel config
 
#include <cyg/infra/cyg_trac.h> // tracing macros
#include <cyg/kernel/instrmnt.h> // instrumentation
 
#include <cyg/hal/hal_io.h> // IO register access
 
#include <cyg/io/watchdog.hxx> // watchdog API
 
// -------------------------------------------------------------------------
// 21285 watchdog works by letting timer4 run; if it ever underflows,
// it resets the system.
// Timer 4 is set to run at fclk_in/16 = 50MHz/16 = 3.125MHz
// The timer register is 24 bits, so it can easily hold a value that
// gives a 1s timeout.
#define WATCHDOG_TIMER_TICKS 3125000
#define WATCHDOG_RESOLUTION (1000000000)
 
// -------------------------------------------------------------------------
// Constructor
 
void
Cyg_Watchdog::init_hw(void)
{
CYG_REPORT_FUNCTION();
 
// HW doesn't need init
resolution = WATCHDOG_RESOLUTION;
CYG_REPORT_RETURN();
}
 
 
 
// -------------------------------------------------------------------------
// Start the watchdog running.
 
void
Cyg_Watchdog::start(void)
{
CYG_REPORT_FUNCTION();
 
// Init the watchdog timer.
HAL_WRITE_UINT32(SA110_TIMER4_LOAD, WATCHDOG_TIMER_TICKS);
HAL_WRITE_UINT32(SA110_TIMER4_CLEAR, 0);
HAL_WRITE_UINT32(SA110_TIMER4_CONTROL,
SA110_TIMER_CONTROL_ENABLE|SA110_TIMER_CONTROL_SCALE_16);
// Enable the watchdog.
cyg_uint32 ctrl;
HAL_READ_UINT32(SA110_CONTROL, ctrl);
ctrl |= SA110_CONTROL_WATCHDOG;
HAL_WRITE_UINT32(SA110_CONTROL, ctrl);
 
CYG_REPORT_RETURN();
}
 
// -------------------------------------------------------------------------
// Reset watchdog timer. This needs to be called regularly to prevent
// the watchdog firing.
 
void
Cyg_Watchdog::reset()
{
CYG_REPORT_FUNCTION();
 
HAL_WRITE_UINT32(SA110_TIMER4_LOAD, WATCHDOG_TIMER_TICKS);
CYG_REPORT_RETURN();
}
 
#if 0
// -------------------------------------------------------------------------
// Trigger the watchdog as if the timer had expired.
 
void
Cyg_Watchdog::reset_action(void)
{
CYG_REPORT_FUNCTION();
// Init the watchdog timer.
HAL_WRITE_UINT32(SA110_TIMER4_LOAD, 1);
HAL_WRITE_UINT32(SA110_TIMER4_CONTROL, SA110_TIMER_CONTROL_ENABLE);
// Enable the watchdog.
cyg_uint32 ctrl;
HAL_READ_UINT32(SA110_CONTROL, ctrl);
ctrl |= SA110_CONTROL_WATCHDOG;
HAL_WRITE_UINT32(SA110_CONTROL, ctrl);
 
CYG_REPORT_RETURN();
}
#endif
 
 
// -------------------------------------------------------------------------
// EOF watchdog_ebsa285.cxx
/arm/ebsa285/v2_0/ChangeLog
0,0 → 1,44
2000-05-31 Jesper Skov <jskov@redhat.com>
 
* cdl/watchdog_ebsa285.cdl:
* src/watchdog_ebsa285.cxx:
Driver moved to devs/watchdog/arm/ebsa285. Stripped out
unrelated ChangeLog entries.
 
1999-08-27 Jesper Skov <jskov@cygnus.co.uk>
 
* src/ebsa285.cxx:
Added watchdog device for 21285.
 
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
/arm/sa11x0/v2_0/cdl/watchdog_sa11x0.cdl
0,0 → 1,102
# ====================================================================
#
# watchdog_sa11x0.cdl
#
# eCos watchdog for ARM/SA11X0 driver configuration data
#
# ====================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
##
## 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 Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): jskov
# Contributors: hmt, jskov
# Date: 2001-02-27
#
#####DESCRIPTIONEND####
#
# ====================================================================
 
cdl_package CYGPKG_DEVICES_WATCHDOG_ARM_SA11X0 {
parent CYGPKG_IO_WATCHDOG
active_if CYGPKG_IO_WATCHDOG
display "SA11X0 watchdog driver"
requires CYGPKG_HAL_ARM_SA11X0
requires CYGPKG_KERNEL
hardware
compile watchdog_sa11x0.cxx
implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS
implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT
active_if CYGIMP_WATCHDOG_HARDWARE
 
cdl_option CYGIMP_WATCHDOG_HARDWARE {
parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION
display "Hardware watchdog"
default_value 1
implements CYGINT_WATCHDOG_IMPLEMENTATIONS
}
 
cdl_component CYGPKG_DEVICES_WATCHDOG_ARM_SA11X0_OPTIONS {
display "SA11X0 watchdog build options"
flavor none
description "
Package specific build options including control over
compiler flags used only in building this package,
and details of which tests are built."
 
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_SA11X0_CFLAGS_ADD {
display "Additional compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are used in addition
to the set of global flags."
}
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_SA11X0_CFLAGS_REMOVE {
display "Suppressed compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are removed from
the set of global flags if present."
}
 
}
}
/arm/sa11x0/v2_0/src/watchdog_sa11x0.cxx
0,0 → 1,147
//==========================================================================
//
// watchdog/sa11x0.cxx
//
// Watchdog implementation for StrongARM SA11x0s
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): hmt, jskov (based on the MN10300 watchdog code by nickg)
// Contributors: jskov, nickg
// Date: 2001-02-27
// Purpose: Watchdog class implementation
// Description: Contains an implementation of the Watchdog class for use
// with the SA11X0 hardware watchdog timer.
//
//####DESCRIPTIONEND####
//
//==========================================================================
 
#include <pkgconf/system.h> // system configuration file
#include <pkgconf/watchdog.h> // configuration for this package
#include <pkgconf/kernel.h> // kernel config
 
#include <cyg/infra/cyg_trac.h> // tracing macros
#include <cyg/kernel/instrmnt.h> // instrumentation
 
#include <cyg/hal/hal_io.h> // IO register access
#include <cyg/hal/hal_intr.h> // Interrupts
#include <cyg/hal/hal_sa11x0.h> // IO registers per se
 
#include <cyg/io/watchdog.hxx> // watchdog API
 
// -------------------------------------------------------------------------
// SA11x0 watchdog works by enabling the watchdog (duh!) which means that
// when OS Timer Match Register #3 "OSMR3" compares equal to the 3.6864MHz
// clock in OSCR, then the system resets.
//
// To stay ahead of this, we must repeatedly set OSMR3 to OSCR + K where K
// is the watchdog timeout. This REQUIRES that the OSCR be freerunning.
//
// OSCR runs at 3.6864MHz, so one second is 3686400 ticks.
//
// The match register is 32 bits, and wraps as an int32 does (the
// comparison is exact, so you don't need to take special care.) So we can
// literally do the addition in the obvious way.
 
#define WATCHDOG_TIMER_TICKS 3686400
#define WATCHDOG_RESOLUTION (1000000000)
 
// -------------------------------------------------------------------------
// Constructor
 
void
Cyg_Watchdog::init_hw(void)
{
CYG_REPORT_FUNCTION();
 
// HW doesn't need init
resolution = WATCHDOG_RESOLUTION;
CYG_REPORT_RETURN();
}
 
 
 
// -------------------------------------------------------------------------
// Start the watchdog running.
 
void
Cyg_Watchdog::start(void)
{
int old;
CYG_REPORT_FUNCTION();
HAL_DISABLE_INTERRUPTS( old );
 
// Init the watchdog timer.
*SA11X0_OSMR3 = *SA11X0_OSCR + WATCHDOG_TIMER_TICKS;
*SA11X0_OSSR = SA11X0_OSSR_TIMER3; // Ack any pending intr
*SA11X0_OIER |= SA11X0_OIER_TIMER3; // Enable interrupt is necessary
 
CYG_ASSERT( *SA11X0_OSCR < *SA11X0_OSMR3 ||
*SA11X0_OSMR3 <= WATCHDOG_TIMER_TICKS, "Watchdog wierdness" );
 
// Enable the watchdog.
*SA11X0_OWER = SA11X0_OWER_ENABLE;
 
HAL_RESTORE_INTERRUPTS( old );
 
CYG_REPORT_RETURN();
}
 
// -------------------------------------------------------------------------
// Reset watchdog timer. This needs to be called regularly to prevent
// the watchdog firing.
 
void
Cyg_Watchdog::reset()
{
CYG_REPORT_FUNCTION();
 
*SA11X0_OSMR3 = *SA11X0_OSCR + WATCHDOG_TIMER_TICKS;
CYG_ASSERT( *SA11X0_OSCR < *SA11X0_OSMR3 ||
*SA11X0_OSMR3 <= WATCHDOG_TIMER_TICKS, "Watchdog wierdness" );
 
CYG_REPORT_RETURN();
}
 
 
// -------------------------------------------------------------------------
// EOF watchdog_sa11x0.cxx
/arm/sa11x0/v2_0/ChangeLog
0,0 → 1,50
2001-02-28 Hugo Tyson <hmt@redhat.com>
 
* src/watchdog_sa11x0.cxx: New file.
* cdl/watchdog_sa11x0.cdl: New file.
Copied from those referred to below.
 
2000-05-31 Jesper Skov <jskov@redhat.com>
 
* cdl/watchdog_ebsa285.cdl:
* src/watchdog_ebsa285.cxx:
Driver moved to devs/watchdog/arm/ebsa285. Stripped out
unrelated ChangeLog entries.
 
1999-08-27 Jesper Skov <jskov@cygnus.co.uk>
 
* src/ebsa285.cxx:
Added watchdog device for 21285.
 
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
/arm/at91/v2_0/cdl/watchdog_at91.cdl
0,0 → 1,133
# ====================================================================
#
# watchdog_at91.cdl
#
# eCos watchdog for ARM AT91 driver configuration data
#
# ====================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
##
## 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 Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): tkoeller
# Contributors: tkoeller
# Date: 2000-05-05
#
#####DESCRIPTIONEND####
#
# ====================================================================
 
cdl_package CYGPKG_DEVICES_WATCHDOG_ARM_AT91 {
parent CYGPKG_IO_WATCHDOG
active_if CYGPKG_IO_WATCHDOG
display "ARM AT91 watchdog driver"
requires CYGPKG_HAL_ARM_AT91
requires CYGPKG_KERNEL
hardware
define_header devs_watchdog_arm_at91.h
compile watchdog_at91.cxx
implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS
active_if CYGIMP_WATCHDOG_HARDWARE
description "
This package uses the watchdog device integrated
in the ARM CPU to execute a predefined action if the
application fails to call the reset function for
longer than a given timeout interval."
 
cdl_option CYGIMP_WATCHDOG_HARDWARE {
parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION
display "Hardware watchdog"
calculated 1
implements CYGINT_WATCHDOG_IMPLEMENTATIONS
}
cdl_option CYGNUM_DEVS_WATCHDOG_ARM_AT91_DESIRED_TMEOUT_MS {
display "Desired timeout value"
flavor data
legal_values 1 to 2047
default_value 100
description "
This parameter controls the watchdog timeout interval.
Note that you may not get the exact value requested
here, the timeout interval may have to be adjusted
because of hardware limitations. The actual timeout
used will be the smallest possible value that is not
less than this parameter."
}
cdl_option CYGSEM_DEVS_WATCHDOG_ARM_AT91_RESET {
display "Generate reset on watchdog expiration"
flavor bool
default_value 1
implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT
description "
Enabling this option changes the watchdog operation mode
to generate a system reset upon expiration instead of
invoking an application-defined action."
}
 
cdl_component CYGPKG_DEVICES_WATCHDOG_ARM_AT91_OPTIONS {
display "AT91 watchdog build options"
flavor none
description "
Package specific build options including control over
compiler flags used only in building this package,
and details of which tests are built."
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_AT91_CFLAGS_ADD {
display "Additional compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are used in addition
to the set of global flags."
}
 
cdl_option CYGPKG_DEVICES_WATCHDOG_ARM_AT91_CFLAGS_REMOVE {
display "Suppressed compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are removed from
the set of global flags if present."
}
 
}
}
 
# EOF watchdog_at91.cdl
/arm/at91/v2_0/src/watchdog_at91.cxx
0,0 → 1,200
//==========================================================================
//
// devs/watchdog/arm/at91/watchdog_at91.cxx
//
// Watchdog implementation for ARM AT91 CPU
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): tkoeller
// Contributors: tkoeller
// Date: 2002-05-05
// Purpose: Watchdog class implementation
// Description: Contains an implementation of the Watchdog class for use
// with the ATMEL AT91 watchdog timer.
//
//####DESCRIPTIONEND####
//
//==========================================================================
 
#include <pkgconf/kernel.h>
#include <pkgconf/infra.h>
#include <pkgconf/kernel.h>
#include <pkgconf/watchdog.h>
#include <pkgconf/devs_watchdog_arm_at91.h>
#include <cyg/infra/cyg_type.h>
#include <cyg/infra/cyg_ass.h>
#include <cyg/infra/cyg_trac.h>
#include <cyg/hal/hal_io.h>
#include <cyg/hal/plf_io.h>
#include <cyg/hal/hal_diag.h>
#include <cyg/io/watchdog.hxx>
#if !defined(CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT)
#include <cyg/hal/hal_platform_ints.h>
#include <cyg/kernel/intr.hxx>
#endif
 
#define MCLK_FREQUENCY_KHZ 32768
#define MAX_TICKS 0x0000ffff
#define BASE_TICKS (MCLK_FREQUENCY_KHZ * CYGNUM_DEVS_WATCHDOG_ARM_AT91_DESIRED_TMEOUT_MS)
 
#if BASE_TICKS / 8 <= MAX_TICKS
#define DIVIDER 0
#define DIV_FACTOR 8
#elif BASE_TICKS / 32 <= MAX_TICKS
#define DIVIDER 1
#define DIV_FACTOR 32
#elif BASE_TICKS / 128 <= MAX_TICKS
#define DIVIDER 2
#define DIV_FACTOR 128
#elif BASE_TICKS / 1024 <= MAX_TICKS
#define DIVIDER 3
#define DIV_FACTOR 1024
#else
#error Desired resolution beyond hardware capabilities
#endif
 
#define TICKS ((BASE_TICKS / DIV_FACTOR) | 0xfff)
#define RESOLUTION ((cyg_uint64) (TICKS * DIV_FACTOR ) * 1000000 / MCLK_FREQUENCY_KHZ)
 
 
 
#if defined(CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT)
 
#define OMRVAL (AT91_WD_OMR_OKEY | AT91_WD_OMR_RSTEN | AT91_WD_OMR_WDEN)
 
void
Cyg_Watchdog::init_hw(void)
{
CYG_REPORT_FUNCTION();
CYG_REPORT_FUNCARGVOID();
resolution = RESOLUTION;
CYG_REPORT_RETURN();
}
 
#else /* defined(CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT) */
 
#define OMRVAL (AT91_WD_OMR_OKEY | AT91_WD_OMR_IRQEN | AT91_WD_OMR_WDEN)
#define INT_PRIO 7
 
 
static void *
operator new(size_t size)
{
static cyg_uint8 buf[sizeof (Cyg_Interrupt)];
CYG_REPORT_FUNCTION();
CYG_REPORT_FUNCARG1XV(size);
CYG_ASSERTC(size == sizeof buf);
CYG_REPORT_RETVAL(buf);
return buf;
}
 
static cyg_uint32
isr(cyg_vector vector, CYG_ADDRWORD data)
{
Cyg_Watchdog &wd = *(Cyg_Watchdog *) data;
 
CYG_REPORT_FUNCTION();
CYG_REPORT_FUNCARG2XV(vector, data);
 
wd.trigger();
Cyg_Interrupt::acknowledge_interrupt(CYGNUM_HAL_INTERRUPT_WATCHDOG);
CYG_REPORT_RETVAL(Cyg_Interrupt::HANDLED);
return Cyg_Interrupt::HANDLED;
}
 
static Cyg_Interrupt * wdint;
 
void
Cyg_Watchdog::init_hw(void)
{
CYG_REPORT_FUNCTION();
CYG_REPORT_FUNCARGVOID();
 
resolution = RESOLUTION;
wdint = new Cyg_Interrupt(
CYGNUM_HAL_INTERRUPT_WATCHDOG,
INT_PRIO,
(CYG_ADDRWORD) this,
isr,
NULL
);
wdint->configure_interrupt(CYGNUM_HAL_INTERRUPT_WATCHDOG, false, true);
wdint->attach();
wdint->acknowledge_interrupt(CYGNUM_HAL_INTERRUPT_WATCHDOG);
wdint->unmask_interrupt(CYGNUM_HAL_INTERRUPT_WATCHDOG);
CYG_REPORT_RETURN();
}
 
#endif /* defined(CYGSEM_WATCHDOG_RESETS_ON_TIMEOUT) */
 
 
 
/*
* Reset watchdog timer. This needs to be called regularly to prevent
* the watchdog from firing.
*/
void
Cyg_Watchdog::reset(void)
{
CYG_REPORT_FUNCTION();
CYG_REPORT_FUNCARGVOID();
 
/* Write magic code to reset the watchdog. */
HAL_WRITE_UINT32(AT91_WD + AT91_WD_CR, AT91_WD_CR_RSTKEY);
CYG_REPORT_RETURN();
}
 
/*
* Start watchdog to generate a hardware reset
* or interrupt when expiring.
*/
void
Cyg_Watchdog::start(void)
{
CYG_REPORT_FUNCTION();
CYG_REPORT_FUNCARGVOID();
HAL_WRITE_UINT32(AT91_WD + AT91_WD_OMR, AT91_WD_OMR_OKEY);
HAL_WRITE_UINT32(
AT91_WD + AT91_WD_CMR,
AT91_WD_CMR_CKEY | ((TICKS >> 10) & AT91_WD_CMR_HPCV) | DIVIDER
);
HAL_WRITE_UINT32(AT91_WD + AT91_WD_CR, AT91_WD_CR_RSTKEY);
HAL_WRITE_UINT32(AT91_WD + AT91_WD_OMR, OMRVAL);
CYG_REPORT_RETURN();
}
/arm/at91/v2_0/ChangeLog
0,0 → 1,36
2002-08-06 Thomas Koeller <thomas@koeller.dyndns.org>
 
* Added watchdog driver for ARM AT91 board.
 
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
/h8300/h8300h/v2_0/cdl/watchdog_h8300h.cdl
0,0 → 1,103
# ====================================================================
#
# watchdog_h8300h.cdl
#
# eCos watchdog for the Hitachi H8/300H driver configuration data
#
# ====================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
##
## 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 Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s): ysato
# Contributors: ysato
# Date: 2002-04-29
#
#####DESCRIPTIONEND####
#
# ====================================================================
 
cdl_package CYGPKG_DEVICES_WATCHDOG_H8300_H8300H {
parent CYGPKG_IO_WATCHDOG
active_if CYGPKG_IO_WATCHDOG
display "H8/300H watchdog driver"
requires CYGPKG_HAL_H8300_H8300H
hardware
compile watchdog_h8300h.cxx
implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS
implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT
active_if CYGIMP_WATCHDOG_HARDWARE
 
cdl_option CYGIMP_WATCHDOG_HARDWARE {
parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION
display "Hardware watchdog"
default_value 1
implements CYGINT_WATCHDOG_IMPLEMENTATIONS
}
 
cdl_component CYGPKG_DEVICES_WATCHDOG_H8300_H8300H_OPTIONS {
display "H8/300H watchdog build options"
flavor none
description "
Package specific build options including control over
compiler flags used only in building this package,
and details of which tests are built."
 
 
cdl_option CYGPKG_DEVICES_WATCHDOG_H8300_H8300H_CFLAGS_ADD {
display "Additional compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are used in addition
to the set of global flags."
}
 
cdl_option CYGPKG_DEVICES_WATCHDOG_H8300_H8300H_CFLAGS_REMOVE {
display "Suppressed compiler flags"
flavor data
no_define
default_value { "" }
description "
This option modifies the set of compiler flags for
building the watchdog device. These flags are removed from
the set of global flags if present."
}
 
}
}
 
# EOF watchdog_h8300h.cdl
/h8300/h8300h/v2_0/src/watchdog_h8300h.cxx
0,0 → 1,113
//==========================================================================
//
// devs/watchdog/h8300/h83000/watchdog_h8300.cxx
//
// Watchdog implementation for Hitachi H8/300H CPUs
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s): yoshinori sato
// Contributors: yoshinori sato
// Date: 2002-04-29
// Purpose: Watchdog class implementation
// Description: Contains an implementation of the Watchdog class for use
// with the Hitachi H8/300H watchdog timer.
//
//####DESCRIPTIONEND####
//
//==========================================================================
 
#include <pkgconf/system.h> // system configuration file
#include <pkgconf/watchdog.h> // configuration for this package
 
#include <cyg/infra/cyg_trac.h> // tracing macros
 
#include <cyg/hal/hal_io.h> // IO register access
#include <cyg/hal/mod_regs_wdt.h> // watchdog register definitions
 
#include <cyg/io/watchdog.hxx> // watchdog API
 
// -------------------------------------------------------------------------
// Constructor
 
void
Cyg_Watchdog::init_hw(void)
{
CYG_REPORT_FUNCTION();
// No hardware init needed.
 
resolution = CYGARC_WDT_PERIOD;
 
CYG_REPORT_RETURN();
}
 
// -------------------------------------------------------------------------
// Start the watchdog running.
 
void
Cyg_Watchdog::start()
{
CYG_REPORT_FUNCTION();
 
//Stop WDT
HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCSR_MAGIC);
//Clear WDT Count
HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCNT_MAGIC);
//Start WDT
HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCSR_MAGIC|
CYGARC_WDT_WT|CYGARC_WDT_TME|CYGARC_WDT_CKS);
CYG_REPORT_RETURN();
}
 
// -------------------------------------------------------------------------
// Reset watchdog timer. This needs to be called regularly to prevent
// the watchdog firing.
 
void
Cyg_Watchdog::reset()
{
CYG_REPORT_FUNCTION();
 
HAL_WRITE_UINT16(CYGARC_TCSR,CYGARC_TCNT_MAGIC);
CYG_REPORT_RETURN();
}
 
// -------------------------------------------------------------------------
// EOF watchdog_h8300.cxx
/h8300/h8300h/v2_0/ChangeLog
0,0 → 1,36
2002-08-14 Yoshinori Sato <qzb04471@nifty.ne.jp>
 
* New package.
 
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
//
// 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 Red Hat, Inc.
// at http://sources.redhat.com/ecos/ecos-license/
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
/synth/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."
}
}
}
 
/synth/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
>
/synth/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 -->
/synth/v2_0/doc/awake.png Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
synth/v2_0/doc/awake.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: synth/v2_0/doc/asleep.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: synth/v2_0/doc/asleep.png =================================================================== --- synth/v2_0/doc/asleep.png (nonexistent) +++ synth/v2_0/doc/asleep.png (revision 174)
synth/v2_0/doc/asleep.png Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: synth/v2_0/doc/makefile =================================================================== --- synth/v2_0/doc/makefile (nonexistent) +++ synth/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: synth/v2_0/src/synth_watchdog.cxx =================================================================== --- synth/v2_0/src/synth_watchdog.cxx (nonexistent) +++ synth/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: synth/v2_0/ChangeLog =================================================================== --- synth/v2_0/ChangeLog (nonexistent) +++ synth/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: synth/v2_0/host/alarm.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: synth/v2_0/host/alarm.gif =================================================================== --- synth/v2_0/host/alarm.gif (nonexistent) +++ synth/v2_0/host/alarm.gif (revision 174)
synth/v2_0/host/alarm.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: synth/v2_0/host/doghouse.pov =================================================================== --- synth/v2_0/host/doghouse.pov (nonexistent) +++ synth/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: synth/v2_0/host/watchdog.tcl =================================================================== --- synth/v2_0/host/watchdog.tcl (nonexistent) +++ synth/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: synth/v2_0/host/doghouse.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: synth/v2_0/host/doghouse.gif =================================================================== --- synth/v2_0/host/doghouse.gif (nonexistent) +++ synth/v2_0/host/doghouse.gif (revision 174)
synth/v2_0/host/doghouse.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: synth/v2_0/host/configure =================================================================== --- synth/v2_0/host/configure (nonexistent) +++ synth/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: synth/v2_0/host/Makefile.in =================================================================== --- synth/v2_0/host/Makefile.in (nonexistent) +++ synth/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: synth/v2_0/host/eye.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: synth/v2_0/host/eye.gif =================================================================== --- synth/v2_0/host/eye.gif (nonexistent) +++ synth/v2_0/host/eye.gif (revision 174)
synth/v2_0/host/eye.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: synth/v2_0/host/acinclude.m4 =================================================================== --- synth/v2_0/host/acinclude.m4 (nonexistent) +++ synth/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: synth/v2_0/host/configure.in =================================================================== --- synth/v2_0/host/configure.in (nonexistent) +++ synth/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: synth/v2_0/host/Makefile.am =================================================================== --- synth/v2_0/host/Makefile.am (nonexistent) +++ synth/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: synth/v2_0/host/watchdog.tdf =================================================================== --- synth/v2_0/host/watchdog.tdf (nonexistent) +++ synth/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: synth/v2_0/host/sound1.au =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: synth/v2_0/host/sound1.au =================================================================== --- synth/v2_0/host/sound1.au (nonexistent) +++ synth/v2_0/host/sound1.au (revision 174)
synth/v2_0/host/sound1.au Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: synth/v2_0/host/aclocal.m4 =================================================================== --- synth/v2_0/host/aclocal.m4 (nonexistent) +++ synth/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: synth/v2_0/host/asleep.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: synth/v2_0/host/asleep.gif =================================================================== --- synth/v2_0/host/asleep.gif (nonexistent) +++ synth/v2_0/host/asleep.gif (revision 174)
synth/v2_0/host/asleep.gif Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: synth/v2_0/host/sound2.au =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: synth/v2_0/host/sound2.au =================================================================== --- synth/v2_0/host/sound2.au (nonexistent) +++ synth/v2_0/host/sound2.au (revision 174)
synth/v2_0/host/sound2.au Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: sh/sh3/v2_0/cdl/watchdog_sh3.cdl =================================================================== --- sh/sh3/v2_0/cdl/watchdog_sh3.cdl (nonexistent) +++ sh/sh3/v2_0/cdl/watchdog_sh3.cdl (revision 174) @@ -0,0 +1,102 @@ +# ==================================================================== +# +# watchdog_sh3.cdl +# +# eCos watchdog for the Hitachi SH3 driver configuration data +# +# ==================================================================== +#####ECOSGPLCOPYRIGHTBEGIN#### +## ------------------------------------------- +## This file is part of eCos, the Embedded Configurable Operating System. +## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +## +## 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 Red Hat, Inc. +## at http://sources.redhat.com/ecos/ecos-license/ +## ------------------------------------------- +#####ECOSGPLCOPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): jskov +# Contributors: jskov +# Date: 2000-05-31 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVICES_WATCHDOG_SH_SH3 { + parent CYGPKG_IO_WATCHDOG + active_if CYGPKG_IO_WATCHDOG + display "SH3 watchdog driver" + requires CYGPKG_HAL_SH + requires CYGPKG_KERNEL + hardware + compile watchdog_sh3.cxx + implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS + implements CYGINT_WATCHDOG_RESETS_ON_TIMEOUT + active_if CYGIMP_WATCHDOG_HARDWARE + + cdl_option CYGIMP_WATCHDOG_HARDWARE { + parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION + display "Hardware watchdog" + default_value 1 + implements CYGINT_WATCHDOG_IMPLEMENTATIONS + } + + cdl_component CYGPKG_DEVICES_WATCHDOG_SH_SH3_OPTIONS { + display "SH3 watchdog build options" + flavor none + description " + Package specific build options including control over + compiler flags used only in building this package, + and details of which tests are built." + + + cdl_option CYGPKG_DEVICES_WATCHDOG_SH_SH3_CFLAGS_ADD { + display "Additional compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the watchdog device. These flags are used in addition + to the set of global flags." + } + + cdl_option CYGPKG_DEVICES_WATCHDOG_SH_SH3_CFLAGS_REMOVE { + display "Suppressed compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the watchdog device. These flags are removed from + the set of global flags if present." + } + + } +} Index: sh/sh3/v2_0/src/watchdog_sh3.cxx =================================================================== --- sh/sh3/v2_0/src/watchdog_sh3.cxx (nonexistent) +++ sh/sh3/v2_0/src/watchdog_sh3.cxx (revision 174) @@ -0,0 +1,141 @@ +//========================================================================== +// +// devs/watchdog/sh/sh3/watchdog_sh3.cxx +// +// Watchdog implementation for Hitachi SH CPUs +// +//========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// +// 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 Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): jskov +// Contributors: jskov +// Date: 1999-09-01 +// Purpose: Watchdog class implementation +// Description: Contains an implementation of the Watchdog class for use +// with the Hitachi SH watchdog timer. +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include // system configuration file +#include // configuration for this package +#include // kernel config + +#include // tracing macros +#include // instrumentation + +#include // IO register access +#include // watchdog register definitions + +#include // watchdog API + +// ------------------------------------------------------------------------- +// Constructor + +void +Cyg_Watchdog::init_hw(void) +{ + CYG_REPORT_FUNCTION(); + + // No hardware init needed. + + resolution = CYGARC_REG_WTCSR_PERIOD; + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// Start the watchdog running. + +void +Cyg_Watchdog::start() +{ + CYG_REPORT_FUNCTION(); + + // Init the watchdog timer (note: 8 bit reads, 16 bit writes) + cyg_uint16 csr; + // First disable without changing other bits. + HAL_READ_UINT8(CYGARC_REG_WTCSR, csr); + csr |= CYGARC_REG_WTCSR_WRITE; + csr &= ~CYGARC_REG_WTCSR_TME; + HAL_WRITE_UINT16(CYGARC_REG_WTCSR, csr); + // Then set control bits and clear counter. + csr = (CYGARC_REG_WTCSR_WRITE + |CYGARC_REG_WTCSR_WT_IT + |CYGARC_REG_WTCSR_CKSx_SETTING); + HAL_WRITE_UINT16(CYGARC_REG_WTCSR, csr); + HAL_WRITE_UINT16(CYGARC_REG_WTCNT, CYGARC_REG_WTCNT_WRITE); + // Finally enable timer. + csr |= CYGARC_REG_WTCSR_TME; + HAL_WRITE_UINT16(CYGARC_REG_WTCSR, csr); + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// Reset watchdog timer. This needs to be called regularly to prevent +// the watchdog firing. + +void +Cyg_Watchdog::reset() +{ + CYG_REPORT_FUNCTION(); + + HAL_WRITE_UINT16(CYGARC_REG_WTCNT, CYGARC_REG_WTCNT_WRITE); + + CYG_REPORT_RETURN(); +} + +#if 0 +// ------------------------------------------------------------------------- +// Trigger the watchdog as if the timer had expired. + +void +Cyg_Watchdog::action_reset(void) +{ + CYG_REPORT_FUNCTION(); + + start(); + + HAL_WRITE_UINT16(CYGARC_REG_WTCNT, CYGARC_REG_WTCNT_WRITE|0xfe); + + CYG_REPORT_RETURN(); +} +#endif + +// ------------------------------------------------------------------------- +// EOF watchdog_sh3.cxx Index: sh/sh3/v2_0/ChangeLog =================================================================== --- sh/sh3/v2_0/ChangeLog (nonexistent) +++ sh/sh3/v2_0/ChangeLog (revision 174) @@ -0,0 +1,44 @@ +2000-05-31 Jesper Skov + + * cdl/watchdog_sh3.cdl: + * src/watchdog_sh3.cxx: + Driver moved to devs/watchdog/sh/sh3. Stripped out + unrelated ChangeLog entries. + +1999-09-01 Jesper Skov + + * src/sh.cxx: + Added watchdog driver for SH. + +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// +// 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 Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### Index: mn10300/mn10300/v2_0/cdl/watchdog_mn10300.cdl =================================================================== --- mn10300/mn10300/v2_0/cdl/watchdog_mn10300.cdl (nonexistent) +++ mn10300/mn10300/v2_0/cdl/watchdog_mn10300.cdl (revision 174) @@ -0,0 +1,101 @@ +# ==================================================================== +# +# watchdog_mn10300.cdl +# +# eCos watchdog for VR4300/Mn10300 driver configuration data +# +# ==================================================================== +#####ECOSGPLCOPYRIGHTBEGIN#### +## ------------------------------------------- +## This file is part of eCos, the Embedded Configurable Operating System. +## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +## +## 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 Red Hat, Inc. +## at http://sources.redhat.com/ecos/ecos-license/ +## ------------------------------------------- +#####ECOSGPLCOPYRIGHTEND#### +# ==================================================================== +######DESCRIPTIONBEGIN#### +# +# Author(s): jskov +# Contributors: jskov +# Date: 2000-05-31 +# +#####DESCRIPTIONEND#### +# +# ==================================================================== + +cdl_package CYGPKG_DEVICES_WATCHDOG_MN10300_MN10300 { + parent CYGPKG_IO_WATCHDOG + active_if CYGPKG_IO_WATCHDOG + display "MN10300 watchdog driver" + requires CYGPKG_HAL_MN10300 + requires CYGPKG_KERNEL + hardware + compile watchdog_mn10300.cxx + implements CYGINT_WATCHDOG_HW_IMPLEMENTATIONS + active_if CYGIMP_WATCHDOG_HARDWARE + + cdl_option CYGIMP_WATCHDOG_HARDWARE { + parent CYGPKG_IO_WATCHDOG_IMPLEMENTATION + display "Hardware watchdog" + default_value 1 + implements CYGINT_WATCHDOG_IMPLEMENTATIONS + } + + cdl_component CYGPKG_DEVICES_WATCHDOG_MN10300_MN10300_OPTIONS { + display "MN10300 watchdog build options" + flavor none + description " + Package specific build options including control over + compiler flags used only in building this package, + and details of which tests are built." + + + cdl_option CYGPKG_DEVICES_WATCHDOG_MN10300_MN10300_CFLAGS_ADD { + display "Additional compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the watchdog device. These flags are used in addition + to the set of global flags." + } + + cdl_option CYGPKG_DEVICES_WATCHDOG_MN10300_MN10300_CFLAGS_REMOVE { + display "Suppressed compiler flags" + flavor data + no_define + default_value { "" } + description " + This option modifies the set of compiler flags for + building the watchdog device. These flags are removed from + the set of global flags if present." + } + + } +} Index: mn10300/mn10300/v2_0/src/watchdog_mn10300.cxx =================================================================== --- mn10300/mn10300/v2_0/src/watchdog_mn10300.cxx (nonexistent) +++ mn10300/mn10300/v2_0/src/watchdog_mn10300.cxx (revision 174) @@ -0,0 +1,199 @@ +//========================================================================== +// +// devs/watchdog/mn10300/mn10300/watchdog_mn10300.cxx +// +// Watchdog implementation for MN10300 +// +//========================================================================== +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// +// 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 Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND#### +//========================================================================== +//#####DESCRIPTIONBEGIN#### +// +// Author(s): nickg +// Contributors: nickg +// Date: 1999-02-18 +// Purpose: Watchdog class implementation +// Description: Contains an implementation of the Watchdog class for use +// with the MN10300 hardware watchdog timer. +// +//####DESCRIPTIONEND#### +// +//========================================================================== + +#include // system configuration file +#include // configuration for this package +#include // Kernel config + +#include // base kernel types +#include // tracing macros +#include // instrumentation + +#include // IO register access + +#include // interrupts + +#include // watchdog API + +// ------------------------------------------------------------------------- +// MN10300 watchdog timer registers + +#if defined(CYGPKG_HAL_MN10300_AM31) + +#define WATCHDOG_BASE 0x34004000 +#define WATCHDOG_COUNTER (WATCHDOG_BASE) +#define WATCHDOG_CONTROL (WATCHDOG_BASE+2) +#define WATCHDOG_RESET (WATCHDOG_BASE+4) + +#define WATCHDOG_WDCK0 0x07 +#define WATCHDOG_WDCK0_DEFAULT 0x04 // 1016.801ms cycle +#define WATCHDOG_WDRST 0x40 +#define WATCHDOG_WDCNE 0x80 + +#define WATCHDOG_RESOLUTION 1016801000 // cycle time in nanoseconds + +#elif defined(CYGPKG_HAL_MN10300_AM33) + +#define WATCHDOG_BASE 0xC0001000 +#define WATCHDOG_COUNTER (WATCHDOG_BASE) +#define WATCHDOG_CONTROL (WATCHDOG_BASE+2) +#define WATCHDOG_RESET (WATCHDOG_BASE+4) + +#define WATCHDOG_WDCK0 0x07 +#define WATCHDOG_WDCK0_DEFAULT 0x04 // 621.387ms cycle +#define WATCHDOG_WDRST 0x40 +#define WATCHDOG_WDCNE 0x80 + +#define WATCHDOG_RESOLUTION 621387000 // cycle time in nanoseconds + +#else + +#error Unsupported MN10300 variant + +#endif + +// ------------------------------------------------------------------------- +// Forward definitions + +static cyg_ISR watchdog_isr; + +// ------------------------------------------------------------------------- +// Statics + +// Interrupt object +static Cyg_Interrupt interrupt( + CYGNUM_HAL_INTERRUPT_WATCHDOG, + 0, + 0, + watchdog_isr, + NULL // no DSR + ); + +// ------------------------------------------------------------------------- +// Constructor + +void +Cyg_Watchdog::init_hw(void) +{ + CYG_REPORT_FUNCTION(); + + // HW doesn't need init. + + resolution = WATCHDOG_RESOLUTION; + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// Start the watchdog running. + +void +Cyg_Watchdog::start(void) +{ + CYG_REPORT_FUNCTION(); + + interrupt.attach(); + + HAL_WRITE_UINT8( WATCHDOG_COUNTER, 0 ); + + // Set overflow cycle + // Enable and reset counter + HAL_WRITE_UINT8( WATCHDOG_CONTROL, + WATCHDOG_WDCK0_DEFAULT|WATCHDOG_WDCNE|WATCHDOG_WDRST); + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// Reset watchdog timer. This needs to be called regularly to prevent +// the watchdog firing. + +void +Cyg_Watchdog::reset() +{ + CYG_REPORT_FUNCTION(); + + cyg_uint8 ctrl; + + HAL_READ_UINT8( WATCHDOG_CONTROL, ctrl ); + + ctrl |= WATCHDOG_WDRST; + + HAL_WRITE_UINT8( WATCHDOG_CONTROL, ctrl ); + + CYG_REPORT_RETURN(); +} + +// ------------------------------------------------------------------------- +// ISR + +cyg_uint32 +watchdog_isr( cyg_vector vector, CYG_ADDRWORD data) +{ + CYG_REPORT_FUNCTION(); + + // Disable interrupt just in case + interrupt.detach(); + + // Turn watchdog off to prevent it re-triggering. + HAL_WRITE_UINT8( WATCHDOG_CONTROL, 0 ); + + Cyg_Watchdog::watchdog.trigger(); + + CYG_REPORT_RETURN(); + + return Cyg_Interrupt::HANDLED; +} + +// ------------------------------------------------------------------------- +// EOF watchdog_mn10300.cxx Index: mn10300/mn10300/v2_0/ChangeLog =================================================================== --- mn10300/mn10300/v2_0/ChangeLog (nonexistent) +++ mn10300/mn10300/v2_0/ChangeLog (revision 174) @@ -0,0 +1,90 @@ +2000-05-31 Jesper Skov + + * cdl/watchdog_mn10300.cdl: + * src/watchdog_mn10300.cxx: + Driver moved to devs/watchdog/mn10300/mn10300. Stripped out + unrelated ChangeLog entries. + +1999-08-24 Nick Garnett + + * src/mn10300.cxx: Turn watchdog off in Cyg_Watchdog::trigger() to + prevent it repeating. + +1999-08-18 Nick Garnett + + * src/mn10300.cxx: + Added support for AM33 variant. Since the AM33 can only provide a + maximum watchdog cycle time of 621ms, this has motiviated the + addition of the get_resolution() call described above. + +1999-07-14 Jesper Skov + + * src/mn10300.cxx: + Include pkgconf/kernel.h. + +1999-02-20 Jonathan Larmour + + * src/mn10300.cxx: + Change CYG_VECTOR_WATCHDOG to CYGNUM_HAL_INTERRUPT_WATCHDOG in line + with HAL changes. + General QA improvements + +Tue Oct 20 15:52:46 1998 Jonathan Larmour + + * src/mn10300.cxx: + Include so that we get CYGIMP_WATCHDOG_EMULATE + defined appropriately + +1998-09-01 Nick Garnett + + * src/mn10300.cxx: + Added include for , for scheduler lock and + unlock functions. + +1998-07-31 Nick Garnett + + * src/PKGconf.mak: + Added mn10300.cxx to COMPILE list. + + * src/mn10300.cxx: + Completed implementation using MN10300 watchdog timer. + + * include/watchdog.hxx: + Renamed 'register' functions to 'install'. Added install() and + uninstall() to Cyg_Watchdog_Action class. + + * include/pkgconf/watchdog.h: + Added this file to contain watchdog config options. + +//####ECOSGPLCOPYRIGHTBEGIN#### +// ------------------------------------------- +// This file is part of eCos, the Embedded Configurable Operating System. +// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. +// +// 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 Red Hat, Inc. +// at http://sources.redhat.com/ecos/ecos-license/ +// ------------------------------------------- +//####ECOSGPLCOPYRIGHTEND####

powered by: WebSVN 2.1.0

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