[eros-cvs] cvs commit: eros/src/doc/www/devel/ObRef/kernel Range.html

shap@eros.cs.jhu.edu shap@eros.cs.jhu.edu
Tue, 24 Apr 2001 18:17:11 -0400


shap        01/04/24 18:17:11

  Modified:    src/base/sys/eros RangeKey.h
               src/base/sys/key pk_RangeKey.cxx
               src/base/sys/libkey lk_rng_compare.c
               src/doc/www/devel/ObRef/kernel Range.html
  Log:
  Update range key to new return convention

Revision  Changes    Path
1.20      +6 -11     eros/src/base/sys/eros/RangeKey.h

Index: RangeKey.h
===================================================================
RCS file: /cvs/eros/src/base/sys/eros/RangeKey.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- RangeKey.h	1999/10/14 00:20:14	1.19
+++ RangeKey.h	2001/04/24 22:17:11	1.20
@@ -78,28 +78,23 @@
 
 fixreg_t range_compare(uint32_t krRange,
 		   uint32_t krCmpRange,
-		   int *sign,
+		   int *how,
 		   uint64_t *offset);
 /*   returns 1 if /krRange/ and /krCmpRange/ do not overlap, or
  * /krCmpRange/ is not a range key.
  *
- *   returns RC_OK if the ranges overlap, and:
+ *   returns RC_OK.
  *
+ *    *sign =  0 if ranges do not overlap
+
  *    if krCmpRange.start > krRange.start,
  *       *sign =  1 and *offset = krCmpRange's start in krRange
  *    if krCmpRange.start = krRange.start,
- *       *sign =  0 and *offset = 0
+ *       *sign =  2 and *offset = 0
  *    if krCmpRange.start < krRange.start,
- *       *sign = -1 and *offset = krRange's start in krCmpRange
+ *       *sign = -3 and *offset = krRange's start in krCmpRange
  */
 
 #endif /* __ASSEMBLER __ */
 
 #endif /* __RANGEKEY_H__ */
-
-
-
-
-
-
-



1.42      +6 -5      eros/src/base/sys/key/pk_RangeKey.cxx

Index: pk_RangeKey.cxx
===================================================================
RCS file: /cvs/eros/src/base/sys/key/pk_RangeKey.cxx,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -r1.41 -r1.42
--- pk_RangeKey.cxx	2001/01/08 20:57:52	1.41
+++ pk_RangeKey.cxx	2001/04/24 22:17:11	1.42
@@ -363,7 +363,8 @@
 
       COMMIT_POINT();
 
-      inv.exit.code = 1;	/* until proven otherwise */
+      inv.exit.code = RC_OK;
+      inv.exit.w1 = 0;		/* no overlap until proven otherwise */
 
       if (!key.IsType(KtRange))
 	return;			/* RC_OK in this case probably wrong thing. */
@@ -380,21 +381,21 @@
 	return;
 
       /* They overlap; need to figure out how. */
-      inv.exit.code = RC_OK;
-      inv.exit.w1 = 0;
+      inv.exit.w1 = 1;
       inv.exit.w3 = 0;
       
       if (kstart < start) {
-	inv.exit.w1 = EROS_REG_MAX; /* poor person's -1 */
+	inv.exit.w1 = 3;
 	inv.exit.w2 = (fixreg_t) (start - kstart);
 	if (sizeof(inv.exit.w2) == sizeof(uint32_t)) /* 32 bit system */
 	  inv.exit.w3 = (fixreg_t) ((start - kstart) >> 32);
       }
       else if (kstart == start) {
+	inv.exit.w1 = 1;
 	inv.exit.w2 = 0;
       }
       else {
-	inv.exit.w1 = 1;
+	inv.exit.w1 = 2;
 	inv.exit.w2 = (fixreg_t) (kstart - start);
 	if (sizeof(inv.exit.w2) == sizeof(uint32_t)) /* 32 bit system */
 	  inv.exit.w3 = (fixreg_t) ((kstart - start) >> 32);



1.16      +2 -2      eros/src/base/sys/libkey/lk_rng_compare.c

Index: lk_rng_compare.c
===================================================================
RCS file: /cvs/eros/src/base/sys/libkey/lk_rng_compare.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- lk_rng_compare.c	1999/10/14 00:21:09	1.15
+++ lk_rng_compare.c	2001/04/24 22:17:11	1.16
@@ -23,7 +23,7 @@
 #include <eros/RangeKey.h>
 
 uint32_t
-range_compare(uint32_t krRange, uint32_t krCmpRange, int *sign, uint64_t *offset)
+range_compare(uint32_t krRange, uint32_t krCmpRange, int *how, uint64_t *offset)
 {
   Message msg;
   uint32_t result;
@@ -51,7 +51,7 @@
 
   if (result == RC_OK) {
     if (offset) *offset = (((uint64_t)msg.rcv_w2) << 32) | msg.rcv_w3;
-    if (sign) *sign = (int)msg.rcv_w1;
+    if (how) *how = (int)msg.rcv_w1;
   }
   return result;
 }



1.18      +7 -13     eros/src/doc/www/devel/ObRef/kernel/Range.html

Index: Range.html
===================================================================
RCS file: /cvs/eros/src/doc/www/devel/ObRef/kernel/Range.html,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- Range.html	2001/02/01 05:55:07	1.17
+++ Range.html	2001/04/24 22:17:11	1.18
@@ -340,20 +340,21 @@
 	     <td>A range key.</td>
 	   </tr>
 	   <tr valign=top>
-	     <td rowspan=3>
+	     <td rowspan=4>
 	       <strong>Reply</strong>
 	     </td>
 	     <td align=right><strong>R1</strong></td>
-	     <td>1 if SK0 overlaps the invoked key (IK) from above.
+	     <td>0 if the ranges do not overlap.
+	     <p>1 if SK0 overlaps the invoked key (IK) from above.
 	       That is,
 	       <ul>
 	       (SK0.start &gt;= IK.start <strong>AND</strong> SK0.start
 	       &lt; IK.end)
 	       </ul>
 	       <p>
-	       0 if the two ranges have the same starting value.
+	       2 if the two ranges have the same starting value.
 	       <p>
-	       WORD_MAX (signed two's complement -1) if SK0
+	       3 if SK0
 	       overlaps the invoked key (IK) from above.  That is,
 	       <ul>
 	       (SK0.start &lt; IK.start <strong>AND</strong> SK0.end
@@ -372,22 +373,15 @@
 	       overlap occurs, or zero.</td>
 	   </tr>
 	   <tr valign=top>
-	     <td rowspan=2>
+	     <td rowspan=1>
 	       <strong>Result</strong>
 	     </td>
 	     <td align=right>
 	       <strong>RC_OK</strong>
 	     </td>
-	     <td> Ranges overlap.
+	     <td> Operation completed successfully.
 	     </td>
 	   </tr>
-	   <tr valign=top>
-	     <td align=right>
-	       1
-	     </td>
-	     <td> Ranges do not overlap, or passed key is not a range
-	       key.
-	     </td>
 	 </table>
 	 <p> 
   </dl>