diff --git a/README.md b/README.md index 2e91840..a6bd8e0 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -Embedded Multicore Building Blocks (EMBB) +Embedded Multicore Building Blocks (EMB²) ========================================= Overview ======== -The Embedded Multicore Building Blocks (EMBB) are an easy to use yet powerful -and efficient C/C++ library for the development of parallel applications. EMBB +The Embedded Multicore Building Blocks (EMB²) are an easy to use yet powerful +and efficient C/C++ library for the development of parallel applications. EMB² has been specifically designed for embedded systems and the typical requirements that accompany them, such as real-time capability and constraints on memory consumption. As a major advantage, low-level operations are hidden @@ -15,18 +15,18 @@ management and synchronization. This not only improves productivity of parallel software development, but also results in increased reliability and performance of the applications. -EMBB is independent of the hardware architecture (x86, ARM, ...) and runs on +EMB² is independent of the hardware architecture (x86, ARM, ...) and runs on various platforms, from small devices to large systems containing numerous processor cores. It builds on MTAPI, a standardized programming interface for leveraging task parallelism in embedded systems containing symmetric or asymmetric multicore processors. A core feature of MTAPI is low-overhead scheduling of fine-grained tasks among the available cores during runtime. -Unlike existing libraries, EMBB supports task priorities, which allows the +Unlike existing libraries, EMB² supports task priorities, which allows the creation of soft real-time systems. Additionally, the scheduling strategy can be optimized for non-functional requirements such as minimal latency and fairness. -Besides the task scheduler, EMBB provides basic parallel algorithms, concurrent +Besides the task scheduler, EMB² provides basic parallel algorithms, concurrent data structures, and skeletons for implementing stream processing applications. These building blocks are largely implemented in a non-blocking fashion, thus preventing frequently encountered pitfalls like lock contention, @@ -81,7 +81,7 @@ the following OS/compiler/architecture combinations: Other compilers and operating systems may be supported without any changes to the source code. The project includes unit tests that can be used to find out -whether a system not officially supported is suitable to run EMBB. If there is +whether a system not officially supported is suitable to run EMB². If there is a requirement to support a system on which the unit tests do not pass, please contact us: embb-dev@googlegroups.com. @@ -89,10 +89,10 @@ contact us: embb-dev@googlegroups.com. Directory Structure =================== -EMBB is a technology stack consisting of various building blocks. For some of +EMB² is a technology stack consisting of various building blocks. For some of them, there exist C and C++ versions, others are only implemented in C++. The directory names are postfixed with either "_cpp" or "_c" for the C++ and C -versions, respectively. Currently, EMBB contains the following components: +versions, respectively. Currently, EMB² contains the following components: - base: base_c, base_cpp - mtapi: mtapi_c, mtapi_cpp @@ -117,7 +117,7 @@ data structures for storing object in an organized and thread-safe way. Build and Installation ====================== -EMBB is built using CMake (version 2.8.9 or higher). CMake is a build file +EMB² is built using CMake (version 2.8.9 or higher). CMake is a build file generator which allows to abstract from the concrete build tools. To generate and invoke the platform-specific build files, open a shell (on Windows, use the Visual Studio developer shell to have the correct environment variables) @@ -147,12 +147,12 @@ option -DCMAKE_BUILD_TYPE=[Release|Debug]. If no build mode is given on Linux, the default (Release) is used. The Visual Studio generators create build files for both modes (the selection is done at build time). -EMBB can be built with and without C++ exception handling, which has to be +EMB² can be built with and without C++ exception handling, which has to be specified on build file generation. When exceptions are turned off, an error -message is emitted and the program aborts in case of an exception within EMBB. +message is emitted and the program aborts in case of an exception within EMB². To disable exceptions, add the option -DUSE_EXCEPTIONS=OFF. -The tutorial of EMBB comes with example source files in doc/examples/. These +The tutorial of EMB² comes with example source files in doc/examples/. These can be built with the other source files using CMake option -DBUILD_EXAMPLES=ON in the generation step. Note, however, that the examples use C++11 features and require a corresponding compiler. @@ -188,7 +188,7 @@ For a Windows Release build, type 3. Running the tests -------------------- -To check whether EMBB was compiled correctly, run the tests. The test +To check whether EMB² was compiled correctly, run the tests. The test executables are contained in the subfolder "binaries". On Linux, type @@ -199,7 +199,7 @@ On Windows, type binaries\run_tests.bat -If no error message occurs, EMBB is working fine. +If no error message occurs, EMB² is working fine. 4. Installation --------------- @@ -232,13 +232,13 @@ installation has to be run with administrator / root privileges. Using the Library ================= -To use EMBB, the include files have to be made available during compilation of +To use EMB², the include files have to be made available during compilation of your application and the libraries have to be added during linking. 1. Using C++ ------------ -If you want to use the C++ functionalities of EMBB, you have to link the +If you want to use the C++ functionalities of EMB², you have to link the following libraries (names will be different on Windows and on Linux) in the given order: @@ -268,7 +268,7 @@ The C header files can be included as follows: Documentation ============= -EMBB comes with a tutorial, example programs, and an HTML reference +EMB² comes with a tutorial, example programs, and an HTML reference documentation describing the APIs, which can be found in the "doc" folder. The root document of the HTML reference is "doc/reference/index.html". @@ -276,7 +276,7 @@ The root document of the HTML reference is "doc/reference/index.html". Code Quality ============ -For the C++ parts of EMBB, we respect most rules of the "Google C++ Style +For the C++ parts of EMB², we respect most rules of the "Google C++ Style Guide" which are checked using the cpplint tool. However, we ignore some rules, as they are not applicable or yield false results for this project. For example, we respect the include order of the Google Style Guide, but use @@ -290,7 +290,7 @@ Known Bugs and Limitations - The MTAPI implementation is currently limited to homogeneous systems. Support for heterogeneous systems will be added in the near future. -- For memory management reasons, the number of threads EMBB can deal with +- For memory management reasons, the number of threads EMB² can deal with is bounded by a predefined but modifiable constant (see functions embb_thread_get_max_count() / embb_thread_set_max_count() and class embb::base::Thread). @@ -305,7 +305,7 @@ Links http://www.multicore-association.org/workgroup/mtapi.php - CMake: http://www.cmake.org/ - - Google C++ Style Guide + - Google C++ Style Guide: http://google-styleguide.googlecode.com/svn/trunk/cppguide.html - cpplint: http://google-styleguide.googlecode.com/svn/trunk/cpplint/