Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/sound/pci/asihpi/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  hpios.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
/******************************************************************************

    AudioScience HPI driver
    Copyright (C) 1997-2012  AudioScience Inc. <support@audioscience.com>


HPI Operating System function implementation for Linux

(C) Copyright AudioScience Inc. 1997-2003
******************************************************************************/

#define SOURCEFILE_NAME "hpios.c"
#include "hpi_internal.h"
#include "hpidebug.h"
#include <linux/delay.h>
#include <linux/sched.h>

void hpios_delay_micro_seconds(u32 num_micro_sec)
{
 if ((usecs_to_jiffies(num_micro_sec) > 1) && !in_interrupt()) {
  /* MUST NOT SCHEDULE IN INTERRUPT CONTEXT! */
  schedule_timeout_uninterruptible(usecs_to_jiffies
   (num_micro_sec));
 } else if (num_micro_sec <= 2000)
  udelay(num_micro_sec);
 else
  mdelay(num_micro_sec / 1000);

}

/** Allocate an area of locked memory for bus master DMA operations.

If allocation fails, return 1, and *pMemArea.size = 0
*/

u16 hpios_locked_mem_alloc(struct consistent_dma_area *p_mem_area, u32 size,
 struct pci_dev *pdev)
{
 /*?? any benefit in using managed dmam_alloc_coherent? */
 p_mem_area->vaddr =
  dma_alloc_coherent(&pdev->dev, size, &p_mem_area->dma_handle,
  GFP_KERNEL);

 if (p_mem_area->vaddr) {
  HPI_DEBUG_LOG(DEBUG, "allocated %d bytes, dma 0x%x vma %p\n",
   size, (unsigned int)p_mem_area->dma_handle,
   p_mem_area->vaddr);
  p_mem_area->pdev = &pdev->dev;
  p_mem_area->size = size;
  return 0;
 } else {
  HPI_DEBUG_LOG(WARNING,
   "failed to allocate %d bytes locked memory\n", size);
  p_mem_area->size = 0;
  return 1;
 }
}

u16 hpios_locked_mem_free(struct consistent_dma_area *p_mem_area)
{
 if (p_mem_area->size) {
  dma_free_coherent(p_mem_area->pdev, p_mem_area->size,
   p_mem_area->vaddr, p_mem_area->dma_handle);
  HPI_DEBUG_LOG(DEBUG, "freed %lu bytes, dma 0x%x vma %p\n",
   (unsigned long)p_mem_area->size,
   (unsigned int)p_mem_area->dma_handle,
   p_mem_area->vaddr);
  p_mem_area->size = 0;
  return 0;
 } else {
  return 1;
 }
}

Messung V0.5
C=95 H=89 G=91

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

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.