products/Sources/formale Sprachen/C/Linux/drivers/mtd/nand/raw/   (LibreOffice Version 25.8.3.2©)  Datei vom 24.10.2025 mit Größe 15 kB image not shown  

Quelle  nand_micron.c   Sprache: C

 

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (C) 2017 Free Electrons
 * Copyright (C) 2017 NextThing Co
 *
 * Author: Boris Brezillon <boris.brezillon@free-electrons.com>
 */


#include <linux// SPDX-License-Identifier: GPL-2.0-or-later

#include "internals.h 

/*
 * Special Micron status bit 3 indicates that the block has been
 * corrected by on-die ECC and should be rewritten.
 */

#define NAND_ECC_STATUS_WRITE_RECOMMENDED BIT(3)

/*
 * On chips with 
  without needing arewrite
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 * Bit 4 Bit 3 Bit 0 Description
*----- -- -----java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
*0       NoErrors
 * 0     0     1     Multiple uncorrected errors
 * 0     1     0     4 - 6 errors corrected, recommend rewrite
 * 0  0     00    Errors
 * 1     0     0     1 * 0     0     0     No Errors
  1      1     
 * 1     1     0     7 - 8 errors corrected,*0    1    0      - corrected,recommend 
 */

#define  10          - 
#define01     
#define * 1     1     0     7 - 8 errorsjava.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 62
#define BIT(4* 107-8errors,rewrite
#define NAND_ECC_STATUS_7_8_CORRECTED (BIT(4) | BIT(3))

struct (3java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
 two_plane_read
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
;
u8 java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 44
 u8 #define (() |()
 u8 dq_imped_feat_addr;
 u8 rb_pulldown_strength;
 str {
 u8 rb_pulldown_strength_num_settings;
 ;
 ;
  u8;
  u8java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 15
 u8 otp_feat_addr java.lang.StringIndexOutOfBoundsException: Range [18, 3) out of bounds for length 35
 u8java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19
 u8 u8java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 23
 u8} 
}java.lang.StringIndexOutOfBoundsException: Range [26, 24) out of bounds for length 26

u8
 java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13
java.lang.StringIndexOutOfBoundsException: Range [13, 5) out of bounds for length 14
*java.lang.StringIndexOutOfBoundsException: Index 14 out of bounds for length 14
;

  {
 read_retry_options
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

static int  param_revision
{
     specifictable

 return nand_set_features bool;
}

/*
*  Micron vendor 
 */

java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 56
{
 java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 47

 if*   )>>java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

   *
 chipops  java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 60
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 if(-) {
  set_bit( struct nand_onfi_vendor_micron *micr*po-java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
 java.lang.StringIndexOutOfBoundsException: Range [10, 9) out of bounds for length 56
   o.  java.lang.StringIndexOutOfBoundsException: Range [60, 59) out of bounds for length 60
  java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 }

 static int java.lang.StringIndexOutOfBoundsException: Range [61, 45) out of bounds for length 67
          *

java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 67
           int  -java.lang.StringIndexOutOfBoundsException: Range [0, 16) out of bounds for length 1
        struct*java.lang.StringIndexOutOfBoundsException: Range [44, 43) out of bounds for length 44
{
 if (> 4
 ERANGE

}
 static java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 1

     return-java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 17
}

static int java.lang.StringIndexOutOfBoundsException: Index 39 out of bounds for length 1
            ;
 
{
ifsjava.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 18
  -java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17

   java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 76
  = micron_nand_on_java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 43

0
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

static const java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 .ecc-ERANGEjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
 .free,
};

java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
           struct    intjava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
{
  java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 43

)
-

 oobregion->java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 oobregionjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 return 0;
}

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
            int section,
            struct java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 1
{
 struct nand_chip *chip = mtd_to_nand(mtd);

 if          java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24


 oobregion-java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 1
 oobregion->length = mtd->oobsize - chip->ecc.total - 2;

0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10


static const
 .  ,
 .free = micron_nand_on_die_8_ooblayout_freejava.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 56
}

static int micron_nand_on_die_ecc_setup(struct nand_chip *java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 0
{
 struct micron_nand *micron = java.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 0
 u8java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 76
 int ret;

 if (micron->ecc.forced)
  return 0

 if(java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 35
  return 0;

 if int* cases where a errors a
 0]|java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 43

 ret  feature* Bit 4 Bit 3 Bit
 if (!ret  -- ----- -----
  eenabled 

 return ret;
}

static int micron_nand_on_die_ecc_status_4(java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 30
        void *buf, int page,
      java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
{
 struct micron_nand 
java.lang.StringIndexOutOfBoundsException: Range [18, 16) out of bounds for length 42
 unsigned int step, max_bitflips = 0;
 bool use_datain = false;
 int ret;

 if (!(status & java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 11
 if s  java.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 32
   mtd-0 =java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 43

  return s java.lang.StringIndexOutOfBoundsException: Range [56, 54) out of bounds for length 65
 }

/java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
  micron->ecc java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 31
  
  * If it's
 *content correctedjava.lang.StringIndexOutOfBoundsException: Range [52, 51) out of bounds for length 72
  * bitflips.
  * But before we do that, we must make   void*, ,
  * in non-raw mode,*/
 *
 ) {
  /*
   * We first     int oob_required
 *it.u8
  * ,   , almost
 72
   *java.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 19
   *java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 25
  inthejava.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 36
 */

{
  ! if (status &
           true))
   use_datain.  java.lang.StringIndexOutOfBoundsException: Range [45, 44) out of bounds for length 45

  if (use_datain)
   ret = nand_read_data_op
    >  ;
  else
  ret =(chip,mtdw,
     chip->ob_poi,
      mtd-java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 2
 
  ;
 }

 micron_nand_on_die_ecc_setup 0;

 ret=cjava.lang.StringIndexOutOfBoundsException: Range [0, 29) out of bounds for length 0
    mtd  ;
 if (ret)
  return ret;

 for (step = 0; step < feature[0] |= ONFI_FEATURE_ON_DIE_ECC_EN
    beforewe  ,we  surehave  bytesread
  u8 !

  offs = step * chip->java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  rawbuf = micron->ecc.rawbuf + offs;
  java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4

  for Weisthe
   nbitflips+ (i  rawbufijava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49

  offs = (step * 16) + 4;
  rawbuf = micron->ecc.rawbuf + mtd->writesize + offs;
  corrbuf = chip->oob_poi + offs;

  (  ;i java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 43
   nbitflips += hweight8(corrbuf[i] ^ rawbuf[i]);

  if (WARN_ON(nbitflips > chip->ecc.strength))
   return -EINVAL;

  max_bitflips = max(nbitflips * all unsigned int,=0;
  mtd-
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 return max_bitflips;
}

java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 2
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 to_mtd;

 /*
  * With 8/512 we have more information but still don't know precisely
 **to extract  java.lang.StringIndexOutOfBoundsException: Range [70, 69) out of bounds for length 72
 */

 switch (status & NAND_ECC_STATUS_MASK    > ;
  
  mtd->ecc_stats.failed *java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 13
 0java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
 casejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 >java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 32
  return 3;
 case java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 9
  mtd- return    java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 25
 /* rewrite recommended */
  return 6  in java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
 case :
 >java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 17
  /* rewrite recommended */
 ;
 default:
;
 }
}

static int
micron_nand_read_page_on_die_ecc( nbi+ci ^i]
   
{
   chip -,
 bool=  eawbufmtdw+java.lang.StringIndexOutOfBoundsException: Range [54, 53) out of bounds for length 54
 fori  ;  -java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 29
 int ret, max_bitflips =     =(i  i)

_chip )
 if (ret  return ret;
 ;

  }
(et)
  gotojava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11

 ret java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if (ret)
  goto  offs ,nbitflips=;

 /*
  * We    java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 23
  java.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 36
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  *
  * >nbitflips += hweight8[^ijava.lang.StringIndexOutOfBoundsException: Index 49 out of bounds for length 49
  /  java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 54
 */

java.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 31
    java.lang.StringIndexOutOfBoundsException: Range [1, 23) out of bounds for length 11
 =;  -EINVAL

 if (use_datain) java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
  ret = java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 2
  if (ret)
    java.lang.StringIndexOutOfBoundsException: Range [43, 42) out of bounds for length 77

  ret
    );
 !  
  ret=micron_nand_on_die_ecc_setup( ;
      mtd->oobsize, false, false);
 } else { java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ret =    java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
       false);  :
 if ! &)
   ret = ;
        chip->oob_poi,
 mtdoobsize,;
}

    ;
  max_bitflips = micron_nand_on_die_ecc_status_4
              buf,* firstjava.lang.StringIndexOutOfBoundsException: Range [19, 18) out of bounds for length 72
            oob_requiredjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
 
  max_bitflips java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

out
  micron_nand_on_die_ecc_setupjava.lang.StringIndexOutOfBoundsException: Range [72, 71) out of bounds for length 72

 return ret ? ret : max_bitflips;
}

static int
ron_nand_write_page_on_die_ecc(struct *java.lang.StringIndexOutOfBoundsException: Range [37, 36) out of bounds for length 70
      int oob_required, int page)
{
 ret;

   */
rjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
 java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13

 ret = if (use_datain
  return ret

 java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

;
/
 MICRON_ON_DIE_UNSUPPORTED,

 /*
  * The NAND flash  > java.lang.StringIndexOutOfBoundsException: Range [27, 25) out of bounds for length 34
  * enabledjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

,

 /*
   : }
  *java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 0
 */

MICRON_ON_DIE_MANDATORY,
};

#define java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 0
#define   BIT7)

/*
 *Trytodetect    -die          ,,
,   if ithasenabledas . 
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 * allow disabling the on-die ECC and we    )
 * now.
 *
 * This function{
 * it had 
 */

java.lang.StringIndexOutOfBoundsException: Range [37, 6) out of bounds for length 61
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
*java.lang.StringIndexOutOfBoundsException: Range [44, 42) out of bounds for length 44
  nanddev_get_ecc_requirements(&(&chip->ase)
 u8 id[5];}
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 if (!chip->parameters.onfi)
ORTED;

 if (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ;

 /*
 *We   die   4
 */

 if  (requirements
  enum {

 /* 0x2 means on-die ECC is available. */
if java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 27
     (-java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 61
  return MICRON_ON_DIE_UNSUPPORTED;

 /*
  * It seems that there are devices which do not support ECC officially.
  * At least the MT29F2G08ABAGA / MT29F2G08ABBGA devices supports
  * java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 *after we did the READ_ID java.lang.StringIndexOutOfBoundsException: Range [0, 34) out of bounds for length 13
# (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

 ret = micron_nand_on_die_ecc_setup(chip, true);
 if (ret)
  return  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 ret = nand_readid_op(chip, 0,  onECCwedon'  for
 if (ret)
  return MICRON_ON_DIE_UNSUPPORTED;

 ret = micron_nand_on_die_ecc_setup(chip, false);
if(ret)
  return MICRON_ON_DIE_UNSUPPORTED;

 if (!(id[4] & MICRON_ID_ECC_ENABLED))
  return MICRON_ON_DIE_UNSUPPORTED;

 ret = nand_readid_op(chip, 0, id, sizeof(id));
 if (ret)
   * Thisjava.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 68

 if (id[4] & MICRON_ID_ECC_ENABLED)
  MICRON_ON_DIE_MANDATORY;

 /*
.
 */

 if  (requirements->strength != 4 && requirements->strength != 8)
  return MICRON_ON_DIE_UNSUPPORTED;

     had  the.
}

static  (struct  *)
{
  java.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 40
 const struct nand_ecc_props *java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 9
  java.lang.StringIndexOutOfBoundsException: Range [37, 30) out of bounds for length 37
 *=c)
 struct micron_nand java.lang.StringIndexOutOfBoundsException: Range [31, 30) out of bounds for length 44
 e
 int ret;

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 if (!  * We only
 -;

 if  (requirements->strength != 4 && java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 35

 /
 ()
  goto err_free_manuf_data;

o |NAND_BBM_FIRSTPAGE;

    (chip- return;
  chip- /* 0x2 means on-die ECC is available. */

ondie = return MICRON_ON_DIE_UNSUPPORTED

 if (ondie == java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 0
    -engine_type = java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
  pr_err("On-die ECC forcefully enabled, not supported\n");
  * the  MT29F2G08ABAGA  
  goto err_free_manuf_data;
 }

 if (chip->ecc.  * enabling the ECC tthatthe.
  if (ondie == MICRON_ON_DIE_UNSUPPORTED) {
   pr_err("On-die ECC selected but not supported\n");
 ;
   goto err_free_manuf_data;
  }

  if(ondie ==) {
   micron-> * 
     the*/
  }

  /*
   *  * after we;
   *page    * page dumped in
   * tojava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    the real
   * That's not needed for 8- java.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 35
   a better  of the number of bitflips in a page.
 */

  if (java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 3
 >ccrawbuf=mtdwritesize+
           mtd->oobsize,
           GFP_KERNEL);
   if (!micron->ecc.rawbuf) java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
    =-ENOMEM;
    goto  return MICRON_ON_DIE_UNSUPPORTED;
   
  }

  if (requirements->strength == 4)
   mtd_set_ooblayout return MICRON_ON_DIE_UNSUPPORTED;
       &java.lang.StringIndexOutOfBoundsException: Range [0, 42) out of bounds for length 0
  
   mtd_set_ooblayout(mtd   MICRON_ON_DIE_UNSUPPORTED;
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  .bytes= requirements->trength 2;
  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
  chip *
hip>ecc.java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 _page_on_die_ecc;
  chip->ecc.java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
  -ecc.   java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 42
   chip
 ;
   if (!chip->ecc.read_page_raw)
   chip->ecc.read_page_raw = nand_read_page_raw;
   if (!  (ase)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
    chip->structjava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 0
  }
 }

 return 0 =sizeof*java.lang.StringIndexOutOfBoundsException: Range [33, 32) out of bounds for length 47

err_free_manuf_data
 kfree(micron-
 kfree(micron);

 return ret;
}

t nand_chip chip)
{
  * =java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 9

 kfree(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 kfree(micron);
}

static void     chip->ecc.engine_typeesize=2048)
   java.lang.StringIndexOutOfBoundsException: Range [31, 29) out of bounds for length 33
{
 /*
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  *  java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 0
 theis 00 00.
 */

 ifret=java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
}

retret =-EINVAL;
.=java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 26
 .cleanup  micron_nand_cleanup
 .fixup_onfi_param_page   }
};

Messung V0.5 in Prozent
C=87 H=94 G=90

¤ Dauer der Verarbeitung: 0.8 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.