Browse Source

A few fixes for booting the kernel (#757)

Signed-off-by: Álvaro Jurado <elbingmiss@gmail.com>
Álvaro Jurado 6 years ago
parent
commit
d81c519bfa
4 changed files with 16 additions and 10 deletions
  1. 0 6
      sys/src/libc/9sys/read.c
  2. 0 2
      sys/src/libc/9sys/write.c
  3. 16 2
      sys/src/libmemdraw/draw.c
  4. BIN
      util/nvram

+ 0 - 6
sys/src/libc/9sys/read.c

@@ -17,13 +17,7 @@ read(int d, void *buf, int32_t nbytes)
 
 	if(nbytes <= 0)
 		return 0;
-	if(buf == 0){
-		sysfatal("read failed: %r");
-	}
 
 	n = pread(d, buf, nbytes, ~0LL);
-	if(n < 0)
-		sysfatal("read failed: %r");;
-
 	return n;
 }

+ 0 - 2
sys/src/libc/9sys/write.c

@@ -16,7 +16,5 @@ write(int d, const void *buf, int32_t nbytes)
 	int n;
 
 	n = pwrite(d, buf, nbytes, ~0LL);
-	if(n < 0)
-		sysfatal("write failed: %r");
 	return n;
 }

+ 16 - 2
sys/src/libmemdraw/draw.c

@@ -1932,6 +1932,20 @@ boolcopyfn(Memimage *img, Memimage *mask)
 	return nil;
 }
 
+/*
+ * Optimized draw for filling and scrolling; uses memset and memmove.
+ */
+static void
+memsetb(void *vp, uint8_t val, int n)
+{
+	uint8_t *p, *ep;
+
+	p = vp;
+	ep = p+n;
+	while(p<ep)
+		*p++ = val;
+}
+
 static void
 memsets(void *vp, uint16_t val, int n)
 {
@@ -2147,7 +2161,7 @@ DBG print("dx %d Dx %d\n", dx, Dx(par->r));
 						*dp ^= (v ^ *dp) & lm;
 						dp++;
 					}
-					memset(dp, v, dx);
+					memsetb(dp, v, dx);
 					dp += dx;
 					*dp ^= (v ^ *dp) & rm;
 				}
@@ -2155,7 +2169,7 @@ DBG print("dx %d Dx %d\n", dx, Dx(par->r));
 			return 1;
 		case 8:
 			for(y=0; y<dy; y++, dp+=dwid)
-				memset(dp, v, dx);
+				memsets(dp, v, dx);
 			return 1;
 		case 16:
 			p[0] = v;		/* make little endian */

BIN
util/nvram