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

[Lost] [PATCH] + cdi_alloc_phys_addr



Fügt eine Funktion zum Reservieren einer bestimmten RAM-Adresse hinzu. Primär Wrapper um mem_allocate_physical.
From 526d4bd7da8a79ce26f0a07631d21af9b2a11b8d Mon Sep 17 00:00:00 2001
From: Mathias Gottschlag <mathias-go@xxxxxx>
Date: Thu, 9 Oct 2008 13:16:33 +0200
Subject: [PATCH] + cdi_alloc_phys_addr

---
 src/modules/cdi/e1000/device.c     |    3 +--
 src/modules/cdi/include/cdi/misc.h |   10 ++++++++++
 src/modules/cdi/lib/misc.c         |   13 +++++++++++++
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/src/modules/cdi/e1000/device.c b/src/modules/cdi/e1000/device.c
index f5c0a67..523831f 100644
--- a/src/modules/cdi/e1000/device.c
+++ b/src/modules/cdi/e1000/device.c
@@ -36,7 +36,6 @@
 #include <stdint.h>
 #include <stdio.h>
 #include <stddef.h>
-#include <syscall.h>
 
 #include "cdi.h"
 #include "cdi/misc.h"
@@ -167,7 +166,7 @@ void e1000_init_device(struct cdi_device* device)
         if (res->type == CDI_PCI_MEMORY) {
             // FIXME LOST-spezifisch
             netcard->mem_base =
-                mem_allocate_physical(res->length, res->start, 0);
+                cdi_alloc_phys_addr(res->length, res->start);
         }
     }
 
diff --git a/src/modules/cdi/include/cdi/misc.h b/src/modules/cdi/include/cdi/misc.h
index 7a54f58..dc9e277 100644
--- a/src/modules/cdi/include/cdi/misc.h
+++ b/src/modules/cdi/include/cdi/misc.h
@@ -39,6 +39,16 @@ void cdi_register_irq(uint8_t irq, void (*handler)(struct cdi_device*),
 int cdi_alloc_phys_mem(size_t size, void** vaddr, void** paddr);
 
 /**
+ * Reserviert physisch zusammenhaengenden Speicher an einer definierten Adresse.
+ *
+ * @param size Groesse des benoetigten Speichers in Bytes
+ * @param paddr Physikalische Adresse des angeforderten Speicherbereichs
+ *
+ * @return Virtuelle Adresse, wenn Speicher reserviert wurde, sonst 0
+ */
+void* cdi_alloc_phys_addr(size_t size, uintptr_t paddr);
+
+/**
  * Reserviert IO-Ports
  *
  * @return 0 wenn die Ports erfolgreich reserviert wurden, -1 sonst.
diff --git a/src/modules/cdi/lib/misc.c b/src/modules/cdi/lib/misc.c
index 4963bf7..6e102ea 100644
--- a/src/modules/cdi/lib/misc.c
+++ b/src/modules/cdi/lib/misc.c
@@ -70,6 +70,19 @@ int cdi_alloc_phys_mem(size_t size, void** vaddr, void** paddr)
 }
 
 /**
+ * Reserviert physisch zusammenhaengenden Speicher an einer definierten Adresse.
+ *
+ * @param size Groesse des benoetigten Speichers in Bytes
+ * @param paddr Physikalische Adresse des angeforderten Speicherbereichs
+ *
+ * @return Virtuelle Adresse, wenn Speicher reserviert wurde, sonst 0
+ */
+void* cdi_alloc_phys_addr(size_t size, uintptr_t paddr)
+{
+    return mem_allocate_physical(size, paddr, 0);
+}
+
+/**
  * Reserviert IO-Ports
  *
  * @return 0 wenn die Ports erfolgreich reserviert wurden, -1 sonst.
-- 
1.5.4.3