Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  locking.rst   Sprache: unbekannt

 
=================
SoundWire Locking
=================

This document explains locking mechanism of the SoundWire Bus. Bus uses
following locks in order to avoid race conditions in Bus operations on
shared resources.

  - Bus lock

  - Message lock

Bus lock
========

SoundWire Bus lock is a mutex and is part of Bus data structure
(sdw_bus) which is used for every Bus instance. This lock is used to
serialize each of the following operations(s) within SoundWire Bus instance.

  - Addition and removal of Slave(s), changing Slave status.

  - Prepare, Enable, Disable and De-prepare stream operations.

  - Access of Stream data structure.

Message lock
============

SoundWire message transfer lock. This mutex is part of
Bus data structure (sdw_bus). This lock is used to serialize the message
transfers (read/write) within a SoundWire Bus instance.

Below examples show how locks are acquired.

Example 1
---------

Message transfer.

  1. For every message transfer

     a. Acquire Message lock.

     b. Transfer message (Read/Write) to Slave1 or broadcast message on
        Bus in case of bank switch.

     c. Release Message lock

     ::

 +----------+                    +---------+
 |          |                    |         |
 |   Bus    |                    | Master  |
 |          |                    | Driver  |
 |          |                    |         |
 +----+-----+                    +----+----+
      |                               |
      |     bus->ops->xfer_msg()      |
      <-------------------------------+   a. Acquire Message lock
      |                               |   b. Transfer message
      |                               |
      +------------------------------->   c. Release Message lock
      |    return success/error       |   d. Return success/error
      |                               |
      +                               +

Example 2
---------

Prepare operation.

  1. Acquire lock for Bus instance associated with Master 1.

  2. For every message transfer in Prepare operation

     a. Acquire Message lock.

     b. Transfer message (Read/Write) to Slave1 or broadcast message on
        Bus in case of bank switch.

     c. Release Message lock.

  3. Release lock for Bus instance associated with Master 1 ::

 +----------+                    +---------+
 |          |                    |         |
 |   Bus    |                    | Master  |
 |          |                    | Driver  |
 |          |                    |         |
 +----+-----+                    +----+----+
      |                               |
      |    sdw_prepare_stream()       |
      <-------------------------------+   1. Acquire bus lock
      |                               |   2. Perform stream prepare
      |                               |
      |                               |
      |     bus->ops->xfer_msg()      |
      <-------------------------------+   a. Acquire Message lock
      |                               |   b. Transfer message
      |                               |
      +------------------------------->   c. Release Message lock
      |    return success/error       |   d. Return success/error
      |                               |
      |                               |
      |    return success/error       |   3. Release bus lock
      +------------------------------->   4. Return success/error
      |                               |
      +                               +

[ Dauer der Verarbeitung: 0.23 Sekunden  (vorverarbeitet)  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge