[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 >= IK.start <strong>AND</strong> SK0.start
< 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 < 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>