Adds read-only umem helper
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 18 Nov 2013 23:32:58 +0000 (15:32 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 16 Jan 2014 19:46:17 +0000 (11:46 -0800)
kern/include/umem.h

index ce050a1..fa17d26 100644 (file)
@@ -12,6 +12,8 @@
  * is paged out or even an unmapped region: simply if it is in part of the
  * address space that could be RW user.  Will also check for len bytes. */
 static inline bool is_user_rwaddr(void *addr, size_t len);
+/* Same deal, but read-only */
+static inline bool is_user_raddr(void *addr, size_t len);
 
 /* Can they use the area in the manner of perm? */
 void *user_mem_check(struct proc *p, const void *DANGEROUS va, size_t len,
@@ -53,3 +55,12 @@ static inline bool is_user_rwaddr(void *addr, size_t len)
        else
                return FALSE;
 }
+
+/* ULIM is defined as virtual address below which a process can read */
+static inline bool is_user_raddr(void *addr, size_t len)
+{
+       if (((uintptr_t)addr < ULIM) && ((uintptr_t)addr + len <= ULIM))
+               return TRUE;
+       else
+               return FALSE;
+}