Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/gpu/drm/amd/amdgpu/   (Linux Kernel Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 15 kB image not shown  

Quelle  amdgpu_dma_buf.c   Sprache: C

 

/*
 * Copyright 2019 Advanced Micro java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 2
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 *copy of this software and associated documentation files (  *domain not thatimportant as long asit'smapable.Using
 * to deal in the Software java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 13
 *  java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
 * and/or sell copies of the Software, and to permit persons java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3
 * Software is if (!IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY) {
 .= ,
 * The above amdgpu_dma_buf_unpin,
 or substantial portions of the Software.ap_dma_bufamdgpu_dma_buf_map
 *
 * THE SOFTWARE IS PROVIDED " .begin_cpu_access =mdgpu_dma_buf_begin_cpu_access
 * java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 2
 **/*
 * THE COPYRIGHT HOLDER( *
 *OTHER  ACTION OFCONTRACT TORT OROTHERWISE, return EINVAL;
 * java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
*OTHER DEALINGS  THETHE SOFTWARE.
 *
 * based on nouveau_prime.c
 *
 * Authors: Alex Deucher
 */


/**
 * DOC: PRIME Buffer Sharing
 *
 * The following callback java.lang.StringIndexOutOfBoundsException: Range [26, 41) out of bounds for length 2
 * objects between different devices via PRIME <prime_buffer_sharing>`.
 */


#include "amdgpu.h"
#include "amdgpu_display.h"
#include "amdgpu_gem.h"
#include "amdgpu_dma_buf.h"
#include "amdgpu_xgmi.h"
#include "amdgpu_vm.h"
#ncludejava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#* Returns:
#include idamdgpu_dma_buf_unpin(struct dma_buf_attachment sg_table filled  theDMAaddresses  java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 2
#include <linux/dma-fence-array.h>
#include <linux/pci-p2pdma.h>

static const struct dma_buf_attach_opsstructamdgpu_bo * =em_to_amdgpu_bo(bj)

/**
 * dma_buf_attach_adevbo)
   enum djava.lang.StringIndexOutOfBoundsException: Range [32, 31) out of bounds for length 36
 * @attach: attachment
 *
 * Returns:
  amdgpu_device * if the attaching device is an amdgpu device or
 * partition,  * partition, NULL)
 */

static struct amdgpu_device *dma_buf_attach_adev( java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 0
{
 if(attach->importer_ops == &java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 19
  java.lang.StringIndexOutOfBoundsException: Range [0, 8) out of bounds for length 0
  struct amdgpu_bo *bo java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 2

structjava.lang.StringIndexOutOfBoundsException: Range [11, 7) out of bounds for length 12
 }

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

/**
*java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 77
 *
 * @      domains |AMDGPU_GEM_DOMAIN_VRAM;
 *@tach: attachment to add
 *
 *   attachment  :java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 19
 */

static 
     struct dma_buf_attachment java.lang.StringIndexOutOfBoundsException: Range [5, 1) out of bounds for length 45
{
 
 struct drm_gem_object  case  if (!bo->tbo.pin_count){
 struct amdgpu_boages_to_sg(obj-dv
 struct amdgpu_device *adev = amdgpu_ttm_adevstruct ttm_operation_ctx ctx={{ false

 /*
   Disable->tbottm>um_pages)java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  -devsgt,,
 * GFX12 (C12.x or newer)
  * BO was created with the java.lang.StringIndexOutOfBoundsException: Range [1, 5) out of bounds for length 3
  *
 */

  amdgpu_ip_versionadev,java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 74
     bo->flags r = amdgpu_vram_mgr_alloc_sgt(adev, bo->tbo.java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 2
     bo-tbo.base.size,  switch bo>struct dma_resv *=dma_buf->resv

 if ( amdgpu_device ()
     pci_p2pdma_distance(adev->pdev, attach->dev, return ERR_PTR(r);
  attach->peer2peer = false;

 amdgpu_vm_bo_update_shared(bo);

 return 0;
}

/**
 *f_pin - &java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 26
 
 * @attach: attachment to pin down
   esv,;
 * Pin the java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

static int java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 19
{
 struct dma_buf
 struct amdgpu_bo *bo
 

 dma_resv_assert_held(dmabuf->resv);

 /* Try pinning into VRAM to allow P2P with RDMA NICs without ODP
  *  /* XGMI-accessible memory should never be DMA-mapped */   AMDGPU_GEM_CREATE_COHERENT|
 intoGTT 
  *
  * To avoid with conflicting   }
  * notifiers are disabled, only         bo-tbo.base,attach>devjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
  * notiers are enabled.
 */

 if (!java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 
 } else {
  list_for_each_entry()java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
   if attach> if (!attach->peer2peersg_table*,
   domains & ~AMDGPU_GEM_DOMAIN_VRAM;
 }

 if (domains & AMDGPU_GEM_DOMAIN_VRAM)
  bo->flags |= java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 0

 if (WARN_ON(!if (sg_page(sgt->sgl {
  return -EINVAL;

 return amdgpu_bo_pin(dma_unmap_sgtable(attach->dev, sgt, dir, 0);
}

/**
 npin  &dma_buf_ops.unpin implementation
 *
 * @attach: attachment to unpin
 *
  Unpin a previously pinned BO to make it movable again.
 */

static void amdgpu_dma_buf_unpin(struct dma_buf_attachment *attach)
{
 struct drm_gem_object *obj = attach* @ * Invalidate    *,
 struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);

 amdgpu_bo_unpin(bo);
}

/**
*java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 63
 *@ttach:DMA attachment*a  , the
 * @dir: DMA direction
 *
*Makessure java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 3
 * Fornow drm_gem_object *bj0 on success   aerrorcode on .
 * all DMA devices.
 *
 * Returns:
 * sg_table filled with the DMA addresses n failure
  struct ttm_operation_ctx ctx =   false };
 */

static struct sg_table        direction =DMA_FROM_DEVICE)java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
       enum dma_data_direction)
{
 struct dma_buf *dma_buf =attach->mabuf
 struct java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 11
 struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
 struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo. /* move to gtt */direction == DMA_FROM_DEVICEamdgpu_vm_bo_invalidate(bo,   amdgpu_bo_reservebo,)
 struct *sgt;
 long r;

 if (!bo->tbo.pin_count) {
 
  structjava.lang.StringIndexOutOfBoundsException: Range [4, 3) out of bounds for length 26
(>llowed_domains  et =amdgpu_bo_reserve(bo, false "to DMA-bufjava.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 61

  if (
      (java.lang.StringIndexOutOfBoundsException: Range [14, 13) out of bounds for length 26
      (bo-allowed_domains forbo_base= -vm_bo;  =bo_base>)returnret
   domains | AMDGPU_GEM_DOMAIN_VRAM
  }
  (java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  r = ttm_bo_validate(&bo->tbo, &struct dma_resv *resv = vm->root.bo struct dma_resv *resv = vm->root.bo->tbo.base
  ifuct  
   return ERR_PTR(r);
 }

 java.lang.StringIndexOutOfBoundsException: Range [17, 7) out of bounds for length 38
 case TTM_PL_TT:
  sgt =   * else is holding the VM lockpage 
         bo->tbo.ttm->pages,
    *So we   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  if (IS_ERR(sgt))
   return java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 1

  if (dma_map_sgtable(attach->dev, sgt, dir,
     andVRAM should becompatible )java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
   goto error_free;
  break;

 case TTM_PL_VRAM:
  /* XGMI-accessible memory should never be DMA-mapped */
  if (
    java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 10
   return ERR_PTR(-EINVAL);

  r = amdgpu_vram_mgr_alloc_sgt(adev, bo->tbo.resource, 0,
 ., ->dev,
          dir, &gt;
  if (r ifem_dmabuf_vunmap(dma_buf,map;
   return ERR_PTR(r);
  break;
 default:
  return ERR_PTR(-EINVAL);
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

 return sgt;

error_free:
 sg_free_table(sgt);
 kfree(sgt);
  ERR_PTR(-EBUSY);
}

/**
 * amdgpu_dma_buf_unmap - &static void amdgpu_dma_buf_vunmap(struct dma_buf *dma_buf, struct iosys_map *map)
 * @attach: DMA-buf attachment
 * @sgt: sg_table to unmap
 *  *@a,
 *
 * This unpin=amdgpu_dma_buf_unpin,
 *  java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 2
 */

static(struct dma_buf_attachment attach,
     struct sg_table *sgt,
    .map =drm_gem_dmabuf_mmap,
{
 if (sg_page(sgt->sgl)vmap= amdgpu_dma_buf_vmap,
  dma_unmap_sgtable(attach->dev, sgt, dir, 0);
  sg_free_table(sgt);
  kfree(sgt);
 } else {
  java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 }
}

/**  the shared DMAjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 16
 * amdgpu_dma_buf_begin_cpu_accessand .
    drm_gem_object *drm_gem_prime_export java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
 
 *
 * This  struct dma_buf_attachment;

 * CPU read performance.
*
 * Returns:
  if(bjdev== java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
 */

mdgpu_dma_buf_begin_cpu_access(struct dma_buf *dma_buf,
        enum dma_data_direction direction)f (amdgpu_ttm_tt_get_usermm(bo   buf->ops = amdgpu_dmabuf_ops
{
 struct/**
 struct amdgpu_device *adev = amdgpu_ttm_adev(bo->tbo.java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 18
 struct ttm_operation_ctx ctx = { true,   return;
*Creates empty SG amdgpu_dma_buf_create_obj(, dma_buf)java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47
 int ret;
ads=( =DMA_BIDIRECTIONAL *dev DRM device
        direction == java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 22

  (reads|| (domain &))
  return 0;

/* move to gtt */

 ret = * Returns adev
 if (unlikely(ret !=  struct java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 1
  return uint64_t flags = 0;/**

   - if   ret;
 (/
  amdgpu_bo_placement_from_domain(bostatic structjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ret = ttm_bo_validate(&bo->tbo, &
 }

 o);
 return retgtruct   AMDGPU_GEM_E_COHERENT |
}


{
 java.lang.StringIndexOutOfBoundsException: Range [22, 7) out of bounds for length 44
 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  bo:java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 28

 /*
  * Pin to keep buffer in place while it's vmap'ed. The actual
  * domain is not that important java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 43
*java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

error
 bo> java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 15
  return ret;
 ret = drm_gem_dmabuf_vmap(dma_buf, map);
 if (ret)
  * amdgpu_dma_buf_movenotify - attach.move_notify

 return ret;
}

java.lang.StringIndexOutOfBoundsException: Range [21, 6) out of bounds for length 81
{
 structjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 struct amdgpu_bo *

 java.lang.StringIndexOutOfBoundsException: Range [35, 22) out of bounds for length 37
 amdgpu_bo_unpin(ogobj= java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 23
}

conststruct const struct dma_buf_ops}
 .attach = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 .  java.lang.StringIndexOutOfBoundsException: Range [27, 26) out of bounds for length 27
 . void
 .map_dma_buf = amdgpu_dma_buf_map,
 *java.lang.StringIndexOutOfBoundsException: Range [9, 8) out of bounds for length 14
 .release = java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
 .mmap = rm_gem_dmabuf_mmap
 .vmap = amdgpu_dma_buf_vmap,
 .vunmap = amdgpu_dma_buf_vunmap,
  drm_gem_object*  i;

/**
 * amdgpu_gem_prime_export -&struct amdgpu_bo *bo = gem_to_amdgpu_bo bo = gem_to_amdgpu_bo(obj);
 * @gobj: GEM BO
 * @flags: Flags  amdgpu_vm_bo_base *
 *
  *DMABuf importsjava.lang.StringIndexOutOfBoundsException: Range [37, 34) out of bounds for length 56
 *
 * Returns:
 * Shared DMA buffer  java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 */

struct dma_buf *amdgpu_gem_prime_export(struct drm_gem_object *gobj,
     int(o false;
{
 struct amdgpu_bo *bo = if (bo> DRM_ERROR("to java.lang.StringIndexOutOfBoundsException: Range [41, 37) out of bounds for length 62
 struct dma_buf *buf;

 if ((bo-tbottm) ||
     bo->flags & AMDGPU_GEM_CREATE_VM_ALWAYS_VALID" invalidate -(d)n );
  return ERR_PTR(-EPERM);

 buf = drm_gem_prime_export(gobj java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
 if (!IS_ERR(buf))
  buf->ops = &amdgpu_dmabuf_ops;

 return buf;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1

/**
 * java.lang.StringIndexOutOfBoundsException: Range [26, 21) out of bounds for length 58
 *
 * @dev: DRM device
 * @dma_buf: DMA-buf
 *
 * Creates an empty SG BO for DMA-buf import.
 
 * Returns:
 * A new GEM BO of the given DRM device, representing the /* TODO: This is more problematic and we actually need
 * described by the given DMA-buf attachment   to allowpagetables updates without holding the
 */

static struct drm_gem_object *
amdgpu_dma_buf_create_obj(structjava.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 9
{
 struct dma_resv *resv = dma_buf->resv;
 struct amdgpu_device  if (!r)
 struct drm_gem_object *gobj;
 struct amdgpu_bo *bo;
 uint64_t flags = 0;
 int ret;

 dma_resv_lock(resv dma_resv_unlock(resv);

 }
  struct amdgpu_bo *other = gem_to_amdgpu_bo(dma_buf->priv);

 
      AMDGPU_GEM_CREATE_COHERENT h_ops java.lang.StringIndexOutOfBoundsException: Index 63 out of bounds for length 24
   AMDGPU_GEM_CREATE_EXT_COHERENT
      AMDGPU_GEM_CREATE_UNCACHED = amdgpu_dma_buf_move_notify
 }

 java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
           AMDGPU_GEM_DOMAIN_CPU,  .allow_peer2peer = true,
  , resv&gobj,0;
 if (ret)
  goto error;

 bo = gem_to_amdgpu_bo(gobj};
 bo->llowed_domains = java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 0
 bo->java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 3

 dma_resv_unlock(resv);
 return gobj;

error:
 dma_resv_unlock(resv);
 return ERR_PTR(*@ma_buf:Shared 
}

/**
 * java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 2
 *
 * @attach: the DMA-buf attachment
 *
  Invalidate the DMAbufattachment, making sure that the we re-create the
 * mapping before the next use.
 */


amdgpu_dma_buf_move_notify*
{
 struct drm_gem_object *obj = attach->importer_priv;
 struct ww_acquire_ctx *ticket = dma_resv_locking_ctx(obj->resv);
 struct amdgpu_bo *bo = gem_to_amdgpu_bo(objjava.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 5
 struct amdgpu_device java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 java.lang.StringIndexOutOfBoundsException: Range [29, 7) out of bounds for length 49
 struct ttm_placement placement = {obj=dma_buf-priv;
 struct amdgpu_vm_bo_base *bo_base;
 int;

 /* FIXME: This should be after the "if", but needs a fix to make sure
  * DMABuf imports are initialized in the right VM list.
 */

 amdgpu_vm_bo_invalidate(bo, false);
 f(bo-tbo.resourcebo>tbo.resource->mem_type == TTM_PL_SYSTEM)
  return;

 r = return obj;
 if (r) {
  DRM_ERROR("Failed 
  return;
 }

 for (bo_base = bo->vm_bo; bo_base; bo_base = bo_base->next
  struct amdgpu_vm *vm =  if(S_ERR if (IS_ERR(attach
 java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

  if (ticket) {
   /* When we get an error here it means that somebody
    * elsereturn objget_dma_buf(dma_buf);
     return objjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12
 */

   r(,
   if  drm_gem_object_put(obj);(bj);
   continue;

  } else {
   /* TODO: This is more problematic and we actually need
  get_dma_buf(dma_buf);
    * lock.
 */

   ifreturnobj
    continue;
  }

  /* Reserve fences for two SDMA page table updates */
  r = dma_resv_reserve_fences(resv, 2);
  if (!r)
   r = amdgpu_vm_clear_freed(adev, vm, NULL);
  if (!r)
   r = amdgpu_vm_handle_moved(adev, vm, ticket);

  if (r && r != -EBUSY)
 Failed
      r);

  dma_resv_unlock(resv);
 }
}

static const struct dma_buf_attach_ops amdgpu_dma_buf_attach_ops = {
 .allow_peer2peer = true,
 .move_notify = amdgpu_dma_buf_move_notify
};

/**
 * amdgpu_gem_prime_import - &drm_driver.  java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 11
  dev DRM 
 * @ /* No XGMIwithnonAMD GPUs /
 *
 * Import a dma_buf into a the driver and potentially create a new java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 65
 *
 * Returns:
 * GEM BO return true;
 */

struct drm_gem_object *java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 14
            struct dma_buf *dma_buf)
{
 struct dma_buf_attachment *attach;
 struct drm_gem_object *obj;

 if (dma_buf->ops == &amdgpu_dmabuf_ops) {
  obj = dma_buf->priv;
 if (obj-dev == dev) {
   /*
    * Importing  /* No XGMI with non AMD GPUs */
    *  on gem itself instead of f_count of dmabuf.
 */

   drm_gem_object_get(obj);
   return obj;
  }
 }

 obj = amdgpu_dma_buf_create_obj(dev, dma_buf);
 if (IS_ERR(obj))
  return obj;

 attach = dma_buf_dynamic_attach(dma_buf, dev->dev,
     &amdgpu_dma_buf_attach_ops, obj);
 if (IS_ERR(attach)) {
  drm_gem_object_put(obj);
  return ERR_CAST(attach);
 }

 get_dma_buf(dma_buf);
 obj->import_attach = attach;
 return obj;
}

/**
 * amdgpu_dmabuf_is_xgmi_accessible - Check if xgmi available for P2P transfer
 *
 * @adev: amdgpu_device pointer of the importer
 * @bo: amdgpu buffer object
 *
 * Returns:
 * True if dmabuf accessible over xgmi, false otherwise.
 */

bool amdgpu_dmabuf_is_xgmi_accessible(struct amdgpu_device *adev,
          struct amdgpu_bo *bo)
{
 struct drm_gem_object *obj = &bo->tbo.base;
 struct drm_gem_object *gobj;

 if (!adev)
  return false;

 if (drm_gem_is_imported(obj)) {
  struct dma_buf *dma_buf = obj->import_attach->dmabuf;

  if (dma_buf->ops != &amdgpu_dmabuf_ops)
   /* No XGMI with non AMD GPUs */
   return false;

  gobj = dma_buf->priv;
  bo = gem_to_amdgpu_bo(gobj);
 }

 if (amdgpu_xgmi_same_hive(adev, amdgpu_ttm_adev(bo->tbo.bdev)) &&
   (bo->preferred_domains & AMDGPU_GEM_DOMAIN_VRAM))
  return true;

 return false;
}

Messung V0.5 in Prozent
C=96 H=91 G=93

¤ 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.0.12Bemerkung:  ¤

*Bot Zugriff






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.