diff mbox

[v2,13/18] mini-os: add function to map one frame

Message ID 1470418562-11234-14-git-send-email-jgross@suse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jürgen Groß Aug. 5, 2016, 5:35 p.m. UTC
Add a function to map one physical frame to a specified virtual
address as read/write. This will be used later multiple times.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 include/arm/arch_mm.h | 2 ++
 include/mm.h          | 1 +
 mm.c                  | 5 +++++
 3 files changed, 8 insertions(+)

Comments

Samuel Thibault Aug. 10, 2016, 8:26 p.m. UTC | #1
Juergen Gross, on Fri 05 Aug 2016 19:35:57 +0200, wrote:
> Add a function to map one physical frame to a specified virtual
> address as read/write. This will be used later multiple times.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  include/arm/arch_mm.h | 2 ++
>  include/mm.h          | 1 +
>  mm.c                  | 5 +++++
>  3 files changed, 8 insertions(+)
> 
> diff --git a/include/arm/arch_mm.h b/include/arm/arch_mm.h
> index 085d4e5..f4685d8 100644
> --- a/include/arm/arch_mm.h
> +++ b/include/arm/arch_mm.h
> @@ -14,6 +14,8 @@ extern uint32_t physical_address_offset;	/* Add this to a virtual address to get
>  
>  #define L1_PAGETABLE_SHIFT      12
>  
> +#define L1_PROT          0
> +
>  #define to_phys(x)                 (((paddr_t)(x)+physical_address_offset) & 0xffffffff)
>  #define to_virt(x)                 ((void *)(((x)-physical_address_offset) & 0xffffffff))
>  
> diff --git a/include/mm.h b/include/mm.h
> index 9244e26..6add683 100644
> --- a/include/mm.h
> +++ b/include/mm.h
> @@ -72,6 +72,7 @@ int do_map_frames(unsigned long addr,
>          const unsigned long *f, unsigned long n, unsigned long stride,
>  	unsigned long increment, domid_t id, int *err, unsigned long prot);
>  int unmap_frames(unsigned long va, unsigned long num_frames);
> +int map_frame_rw(unsigned long addr, unsigned long mfn);
>  #ifdef HAVE_LIBC
>  extern unsigned long heap, brk, heap_mapped, heap_end;
>  #endif
> diff --git a/mm.c b/mm.c
> index ff071ca..fd66115 100644
> --- a/mm.c
> +++ b/mm.c
> @@ -319,6 +319,11 @@ int free_physical_pages(xen_pfn_t *mfns, int n)
>      return HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation);
>  }
>  
> +int map_frame_rw(unsigned long addr, unsigned long mfn)
> +{
> +    return do_map_frames(addr, &mfn, 1, 1, 1, DOMID_SELF, NULL, L1_PROT);
> +}
> +
>  #ifdef HAVE_LIBC
>  void *sbrk(ptrdiff_t increment)
>  {
> -- 
> 2.6.6
>
diff mbox

Patch

diff --git a/include/arm/arch_mm.h b/include/arm/arch_mm.h
index 085d4e5..f4685d8 100644
--- a/include/arm/arch_mm.h
+++ b/include/arm/arch_mm.h
@@ -14,6 +14,8 @@  extern uint32_t physical_address_offset;	/* Add this to a virtual address to get
 
 #define L1_PAGETABLE_SHIFT      12
 
+#define L1_PROT          0
+
 #define to_phys(x)                 (((paddr_t)(x)+physical_address_offset) & 0xffffffff)
 #define to_virt(x)                 ((void *)(((x)-physical_address_offset) & 0xffffffff))
 
diff --git a/include/mm.h b/include/mm.h
index 9244e26..6add683 100644
--- a/include/mm.h
+++ b/include/mm.h
@@ -72,6 +72,7 @@  int do_map_frames(unsigned long addr,
         const unsigned long *f, unsigned long n, unsigned long stride,
 	unsigned long increment, domid_t id, int *err, unsigned long prot);
 int unmap_frames(unsigned long va, unsigned long num_frames);
+int map_frame_rw(unsigned long addr, unsigned long mfn);
 #ifdef HAVE_LIBC
 extern unsigned long heap, brk, heap_mapped, heap_end;
 #endif
diff --git a/mm.c b/mm.c
index ff071ca..fd66115 100644
--- a/mm.c
+++ b/mm.c
@@ -319,6 +319,11 @@  int free_physical_pages(xen_pfn_t *mfns, int n)
     return HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation);
 }
 
+int map_frame_rw(unsigned long addr, unsigned long mfn)
+{
+    return do_map_frames(addr, &mfn, 1, 1, 1, DOMID_SELF, NULL, L1_PROT);
+}
+
 #ifdef HAVE_LIBC
 void *sbrk(ptrdiff_t increment)
 {