Multiple files in libcamera are missing SPDX headers. Add them with the following licenses: - CC-BY-SA-4.0 for documentation - CC0-1.0 for build system, development tool configuration files and TODO lists, as we consider them non-copyrightable, and for example configuration files to facilitate their use - BSD-2-Clause for a file copied from the Raspberry Pi tuning tool (and add the corresponding copyright information) While at it, add a missing blank line to src/libcamera/pipeline/virtual/README.md. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
47 lines
2.0 KiB
Plaintext
47 lines
2.0 KiB
Plaintext
// SPDX-License-Identifier: CC-BY-SA-4.0
|
|
|
|
/**
|
|
* \page thread-safety Reentrancy and Thread-Safety
|
|
*
|
|
* Through the documentation, several terms are used to define how classes and
|
|
* their member functions can be used from multiple threads.
|
|
*
|
|
* - A **reentrant** function may be called simultaneously from multiple
|
|
* threads if and only if each invocation uses a different instance of the
|
|
* class. This is the default for all member functions not explictly marked
|
|
* otherwise.
|
|
*
|
|
* - \anchor thread-safe A **thread-safe** function may be called
|
|
* simultaneously from multiple threads on the same instance of a class. A
|
|
* thread-safe function is thus reentrant. Thread-safe functions may also be
|
|
* called simultaneously with any other reentrant function of the same class
|
|
* on the same instance.
|
|
*
|
|
* \internal
|
|
* - \anchor thread-bound A **thread-bound** function may be called only from
|
|
* the thread that the class instances lives in (see section \ref
|
|
* thread-objects). For instances of classes that do not derive from the
|
|
* Object class, this is the thread in which the instance was created. A
|
|
* thread-bound function is not thread-safe, and may or may not be reentrant.
|
|
* \endinternal
|
|
*
|
|
* Neither reentrancy nor thread-safety, in this context, mean that a function
|
|
* may be called simultaneously from the same thread, for instance from a
|
|
* callback invoked by the function. This may deadlock and isn't allowed unless
|
|
* separately documented.
|
|
*
|
|
* \if internal
|
|
* A class is defined as reentrant, thread-safe or thread-bound if all its
|
|
* member functions are reentrant, thread-safe or thread-bound respectively.
|
|
* \else
|
|
* A class is defined as reentrant or thread-safe if all its member functions
|
|
* are reentrant or thread-safe respectively.
|
|
* \endif
|
|
* Some member functions may additionally be documented as having additional
|
|
* thread-related attributes.
|
|
*
|
|
* Most classes are reentrant but not thread-safe, as making them fully
|
|
* thread-safe would incur locking costs considered prohibitive for the
|
|
* expected use cases.
|
|
*/
|