Commit Graph

111 Commits

Author SHA1 Message Date
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
Esben Haabendal 19b8ddea18 Add lock protection of domain->datagram_pairs
While domain->datagram_pairs was previously partly protected by the
master->master_sem lock (it was not done consistently though), the fix
to protection of master->datagram_queue made it even worse.

This change adds protection of domain->datagram_pairs using a new lock
dedicated to this.  The domain->datagram_pairs_lock is acquired in the actual
functions accessing the domain->datagram_pairs, and this currently means that
it is acquired both in situations where master->master_sem is held and in
situations where master->io_sem is held.
2022-09-01 15:37:58 +02:00
Florian Pose 44c6c3d1da Merge branch 'master' of ../git 2022-06-23 11:55:13 +02:00
Florian Pose 9955855f7e Applied 0016-If-enable-rtmutex-use-rtmutexes-instead-of-semaphore.patch 2022-06-23 11:21:51 +02:00
Florian Pose 4fe2599530 Strictly using KERN_CONT for continued printk() calls to avoid newlines. 2021-08-31 13:29:16 +02:00
Florian Pose 0e8ee10933 Avoided unused variables. 2021-08-24 18:12:27 +02:00
Florian Pose dd49a34f83 Defined list_next_entry for older kernels. 2015-04-17 11:32:54 +02:00
Dave Page 8350b85879 Fix datagram overflow layout issue 2015-04-07 21:07:16 -04:00
Dave Page fad06b32f1 overlapping PDO split datagram support 2015-04-06 14:39:31 -04:00
Dave Page 69b5eb3a4f overlapping PDO initial working. datagram size is not correct 2015-04-02 16:49:36 -04:00
Dave Page 7beb81207d Refactor fmmu->logical_start_address to fmmu->logical_domain_offset 2015-03-26 17:41:57 -04:00
Florian Pose 99418519bd Reverted default branch to stable-1.5. 2014-11-03 15:20:05 +01:00
Florian Pose 89cbcd86bb Avoided casting-away constness in expected working counter calculation. 2011-08-11 19:43:48 +02:00
Martin Troxler c059ec6f49 use rt_mutex instead of semaphore for mutual exclusion (use --enable-mutex) 2011-01-05 08:36:53 +01:00
Martin Troxler d135711521 merged 2010-05-11 13:57:58 +02:00
Florian Pose 62b722ab33 Improved syslog macros. 2010-05-03 18:07:57 +02:00
Martin Troxler 196bc7db4d Inplace I/O: let input Pdos use the same bus space as Output Pdos 2010-04-29 16:33:32 +02:00
Florian Pose d24bede41c Added missing code documentation. 2010-04-19 21:56:16 +02:00
Dominik Staubli 60b6807f24 Domain datagram working counter calculation bugfix: increment expected wc for a given slave & direction just once for each datagram
This bug occurs if you configure more than one SM in the same direction on the same slave
2010-01-21 11:09:31 +01:00
Florian Pose 49c2f676d5 Bugfix: Unqueue datagram before destroying. 2009-10-29 17:28:49 +01:00
Florian Pose 7ac08b531f Avoid warnings on x86_64 platform. Thanks to Thomas Elste. 2009-10-19 13:12:40 +02:00
Florian Pose 12c12b1bab Improved and added license headers. 2009-02-24 12:51:39 +00:00
Florian Pose 5ca3d24337 merge -c1603 branches/stable-1.4: Changed licence headers to avoid conflicts with the GPL; restricted licence to GPLv2 only. 2009-01-26 11:16:10 +00:00
Florian Pose 8d46a283f6 Improved error case return codes of many functions. 2008-11-17 17:18:02 +00:00
Florian Pose 72381046c2 merge -c1554 branches/stable-1.4: Fixed WC calculation for multiple datagrams. 2008-11-05 10:16:11 +00:00
Florian Pose ffe107b658 Made ecrt_domain_size() const. 2008-10-10 07:58:48 +00:00
Florian Pose 64e1d6f678 Introduced ec_datagram_zero(). 2008-09-30 07:34:55 +00:00
Florian Pose 1cf5448e88 Added debugging for configuration function of the application interface. 2008-08-01 09:24:26 +00:00
Florian Pose d4fec010cb Improved WC changes message. 2008-07-18 08:39:28 +00:00
Florian Pose c0b7fca9b6 Improved source code doc. 2008-07-04 12:06:10 +00:00
Florian Pose d942e87cef Implemented master semaphore to secure concurrent access from ioctls, state machine and realtime interface. 2008-07-01 15:38:20 +00:00
Florian Pose a81228a587 Store sync manager configurations in ec_slave_config_t instead of Pdo
lists for each direction; changed realtime interface to allow sync
manager configuration.
2008-06-26 13:16:15 +00:00
Florian Pose dfa4860546 working_counter = 0x0000; 2008-06-18 14:37:00 +00:00
Florian Pose 9aa0789b33 Reverted revision number checking from r1228. 2008-06-17 09:44:46 +00:00
Florian Pose 541c2a0cd8 Added revision number to slave type checking. 2008-06-16 09:30:58 +00:00
Florian Pose 448eb13820 Removed kobject from domain. 2008-06-12 07:26:38 +00:00
Florian Pose b5bee09143 Fixed calculation of expected working counter. 2008-06-10 09:54:30 +00:00
Florian Pose 4d5b2a41a8 'ethercat domain' shows domain contents and process data. 2008-06-04 13:17:15 +00:00
Florian Pose 94bb141623 Working counter as uint16_t. 2008-06-04 08:43:08 +00:00
Florian Pose e6f758b4de Some improvements concerning bit_position. 2008-05-30 08:56:47 +00:00
Richard Hacker 8e0484b1c4 Changed Pdo entry registration function - return byte and bit positions 2008-05-30 07:11:27 +00:00
Florian Pose bf2e1b9ee1 Added bitwise Pdo registration. 2008-05-28 07:26:28 +00:00
Florian Pose c8b67e13ee Improved working counter output; fixed problem with slaves that have a single sync manager used for outputs. 2008-05-13 16:07:06 +00:00
Florian Pose 5cbdbc6d4b Removed unused domain state. 2008-04-07 10:19:59 +00:00
Florian Pose b4322990e2 Calculate expected working counter for domains. 2008-02-22 17:23:05 +00:00
Florian Pose 49baa165af Support for slaves that don't support the LRW datagram type. 2008-02-22 16:04:23 +00:00
Florian Pose 7db358b508 External domain memory. 2008-02-21 15:49:02 +00:00
Florian Pose 873e517741 Moved ecrt_domain_reg_pdo_entry() to
ecrt_slave_config_reg_pdo_entry().
2008-02-21 09:50:54 +00:00
Florian Pose 6189092aed Implemented most realtime interface changes for version 1.4, improved
ec_pdo_t and ec_pdo_entry_t classes, added fmmu_config_t, adjusted
minimal example, etc...
2008-02-19 08:22:20 +00:00
Florian Pose 52e374dd95 Esthetic surgery for domain. 2008-02-01 20:58:57 +00:00