Esben Haabendal 81758004fd Improve synchronization of master->domains list
Introduce a new lock for synchronization of the master->domains list, and use
that instead of the big master_sem lock, improving real-time performance of
fx. ecrt_domain_process() when EoE thread is being shut down (or other
use-cases where master_sem is held for extended periods).

The following locking order is used:

* master->master_sem
* master->domains_lock
* master->io_sem
* domain->datagram_pairs_lock

Meaning that it is allowed to take domains_lock while holding master_sem, and
it is allowed to hold domains_lock while locking io_sem and
datagram_pairs_lock.

[RV: For now, the lockdep_assert_held() annotations are commented out,
since they don't compile with CONFIG_PROVE_LOCKING and (the default)
--disable-rtmutex.]
2022-09-01 15:38:01 +02:00
2022-05-17 14:06:42 +02:00
2022-06-23 11:55:13 +02:00
2022-06-23 11:55:13 +02:00
2022-04-01 12:20:45 +00:00
2021-08-24 17:35:36 +02:00
2021-12-13 10:00:16 +00:00
2021-08-24 17:37:01 +02:00

------------------------------------------------------------------------------

This is the README file of the IgH EtherCAT Master.

$Id$

vim: spelllang=en spell tw=78

------------------------------------------------------------------------------

Contents:
1) General Information
2) Requirements
3) Building and installing
4) Realtime & Tuning
5) License
6) Coding Style

------------------------------------------------------------------------------

1) General Information
======================

This is an open-source EtherCAT master implementation for Linux 2.6.

See the FEATURES file for a list of features. For more information, see
http://etherlab.org/en/ethercat.

or contact

Dipl.-Ing. (FH) Florian Pose <fp@igh-essen.com>
Ingenieurgemeinschaft IgH
Heinz-Baecker-Str. 34
D-45356 Essen
http://igh-essen.com

------------------------------------------------------------------------------

2) Requirements
===============

1) Software requirements

Configured sources for the Linux 2.6 kernel are required to build the EtherCAT
master.

2) Hardware requirements

A table of supported hardware can be found at
http://etherlab.org/en/ethercat/hardware.php.

------------------------------------------------------------------------------

3) Building and installing
==========================

See the INSTALL file.

------------------------------------------------------------------------------

4) Realtime & Tuning
====================

Realtime patches for the Linux kernel are supported, but not required. The
realtime processing has to be done by the calling module (see API
documentation). The EtherCAT master code itself is passive (except for the
idle mode and EoE).

To avoid frame timeouts, deactivating DMA access for hard drives is
recommended (hdparm -d0 <DEV>).

------------------------------------------------------------------------------

5) License
==========

Copyright (C) 2006-2009  Florian Pose, Ingenieurgemeinschaft IgH

This file is part of the IgH EtherCAT Master.

The IgH EtherCAT Master is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License version 2, as
published by the Free Software Foundation.

The IgH EtherCAT Master 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
the IgH EtherCAT Master; if not, write to the Free Software Foundation, Inc.,
51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

---

The license mentioned above concerns the source code only. Using the EtherCAT
technology and brand is only permitted in compliance with the industrial
property and similar rights of Beckhoff Automation GmbH.

------------------------------------------------------------------------------

6) Coding Style
===============

Developers shall use the coding style rules in the CodingStyle.txt file.

------------------------------------------------------------------------------
Description
IgH EtherCAT Master for Linux
Readme 48 MiB
Languages
C 99.3%
C++ 0.5%