[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cdi-devel] [PATCH] doc.h: English translation



Added English translation of the general interface description.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 doc/doc.h |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/doc/doc.h b/doc/doc.h
index d1f60e5..94c4ccc 100644
--- a/doc/doc.h
+++ b/doc/doc.h
@@ -4,6 +4,7 @@
  */
 
 /**
+ * \german
  * \page general_interface Allgemeine Schnittstellenbeschreibung
  *
  * Diese Seite beschreibt allgemeine Regeln für das Zusammenspiel von Treibern
@@ -53,4 +54,58 @@
  *   (z.B. durch ein Lock auf das cdi_device). Treiber dürfen nicht davon
  *   ausgehen, dass irgendwelche Funktionen nebenläufig ausgeführt werden.
  *   Nebenläufigkeit ist für die Implementierung optional.
+ * \endgerman
+ */
+
+/**
+ * \english
+ * \page general_interface General interface description
+ *
+ * This page describes general rules for the interaction between drivers and
+ * the operating system which are not related to just one specific module or
+ * data structure.
+ *
+ * The two major parts of it are conditions that the operating systems needs to
+ * guarantee on the source code level (e.g. availability of certain functions)
+ * and runtime conditions.
+ *
+ * \section gi_source Source code
+ * \subsection gi_source_naming Naming
+ * In order to avoid name space conflicts, the following rules should be
+ * applied:
+ * - Public names of the CDI implementation (i.e. globally visible symbol names
+ *   and names used in CDI header files) start with cdi_ or CDI_.
+ * - Public names of a CDI driver start with the driver name followed by an
+ *   underscore (e.g. e1000_send_packet)
+ *
+ * \subsection gi_source_libc Functions of the C standard library
+ * The CDI implementation doesn't have to provide a complete C standard
+ * library. Drivers are limited to following parts of the library, which the
+ * CDI implementation must provide:
+ * - Everything in stddef.h
+ * - Everything in stdint.h
+ * - Everything in string.h
+ * - Memory management functions in stdlib.h: malloc, calloc, realloc, free
+ * - printf family in stdio.h, without fprintf and vfprintf. Additionally
+ *   asprintf.
+ *   \todo Further restrictions for stdio.h
+ *
+ * \section gi_runtime Runtime
+ * \subsection gi_runtime_intr Concurrency and interruptions
+ * Concurrency means (seemingly) parallel execution of code (e.g.
+ * multithreading). An interruption means that running code is stopped in order
+ * to execute different code, and only afterwards the stopped code is continued
+ * (e.g. Unix signals).
+ *
+ * Both concepts require that source code is protected against unwanted effects
+ * like race conditions, e.g. by locks. The respective method is OS dependent,
+ * and to keep drivers simple, for CDI the following restrictions are made:
+ *
+ * - Driver code is never interrupted. The only exception is the function
+ *   cdi_wait_irq: While it is running, IRQ handler may be executed.
+ * - The use of threading is allowed if the CDI implementation ensures that for
+ *   each device only one function is executed at the same time (e.g. by
+ *   putting a lock in cdi_device). Drivers may not assume that threading is
+ *   used, it is optional for the CDI implementation.
+ * \endenglish
  */
-- 
1.6.0.2