summaryrefslogtreecommitdiff
path: root/hurd
diff options
context:
space:
mode:
authorneal <neal>2008-06-17 16:32:11 +0000
committerneal <neal>2008-06-17 16:32:11 +0000
commitfb0f8e2e8bad0355d15e5c90d9bdc08d340d8b22 (patch)
treea972379245e3dd58668a9b5459e7ced9ca8e78e0 /hurd
parentfbf4fc8b89e0dd81ca8d9cde93a40cb3750e483b (diff)
2008-06-17 Neal H. Walfield <neal@gnu.org>
* folio.h (folio_object_type): Correctly bound-check OBJECT. (folio_object_type_set): Likewise. (folio_object_policy): Likewise. (folio_object_policy_set): Likewise. (folio_object_wait_queue_p): Likewise. (folio_object_wait_queue_p_set): Likewise. (folio_object_wait_queue): Likewise. (folio_object_wait_queue_set): Likewise. (folio_object_version): Likewise. (folio_object_version_set): Likewise. (folio_object_content): Likewise. (folio_object_content_set): Likewise. (folio_object_discarded): Likewise. (folio_object_discarded_set): Likewise. (folio_object_referenced): Likewise. (folio_object_referenced_set): Likewise. (folio_object_dirty): Likewise. (folio_object_dirty_set): Likewise.
Diffstat (limited to 'hurd')
-rw-r--r--hurd/ChangeLog21
-rw-r--r--hurd/folio.h62
2 files changed, 54 insertions, 29 deletions
diff --git a/hurd/ChangeLog b/hurd/ChangeLog
index 288b245..e81e40d 100644
--- a/hurd/ChangeLog
+++ b/hurd/ChangeLog
@@ -1,5 +1,26 @@
2008-06-17 Neal H. Walfield <neal@gnu.org>
+ * folio.h (folio_object_type): Correctly bound-check OBJECT.
+ (folio_object_type_set): Likewise.
+ (folio_object_policy): Likewise.
+ (folio_object_policy_set): Likewise.
+ (folio_object_wait_queue_p): Likewise.
+ (folio_object_wait_queue_p_set): Likewise.
+ (folio_object_wait_queue): Likewise.
+ (folio_object_wait_queue_set): Likewise.
+ (folio_object_version): Likewise.
+ (folio_object_version_set): Likewise.
+ (folio_object_content): Likewise.
+ (folio_object_content_set): Likewise.
+ (folio_object_discarded): Likewise.
+ (folio_object_discarded_set): Likewise.
+ (folio_object_referenced): Likewise.
+ (folio_object_referenced_set): Likewise.
+ (folio_object_dirty): Likewise.
+ (folio_object_dirty_set): Likewise.
+
+2008-06-17 Neal H. Walfield <neal@gnu.org>
+
* exceptions.h (EXCEPTION_INFO_FMT): New define.
(EXCEPTION_INFO_PRINTF): Likewise.
diff --git a/hurd/folio.h b/hurd/folio.h
index 6fe5936..9245ef6 100644
--- a/hurd/folio.h
+++ b/hurd/folio.h
@@ -157,13 +157,13 @@ static inline enum cap_type
folio_object_type (struct folio *folio, int object)
{
#ifdef RM_INTERN
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
if (object == -1)
return cap_folio;
return folio->types[object];
#else
- assert (object >= 0 && object <= FOLIO_OBJECTS);
+ assert (object >= 0 && object < FOLIO_OBJECTS);
return folio->objects[object].type;
#endif
}
@@ -171,7 +171,7 @@ folio_object_type (struct folio *folio, int object)
static inline void
folio_object_type_set (struct folio *folio, int object, enum cap_type type)
{
- assert (object >= 0 && object <= FOLIO_OBJECTS);
+ assert (object >= 0 && object < FOLIO_OBJECTS);
#ifdef RM_INTERN
folio->types[object] = type;
@@ -186,12 +186,12 @@ folio_object_policy (struct folio *folio, int object)
struct object_policy policy;
#ifdef RM_INTERN
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
policy.discardable = folio->misc[object + 1].discardable;
policy.priority = folio->misc[object + 1].priority;
#else
- assert (object >= 0 && object <= FOLIO_OBJECTS);
+ assert (object >= 0 && object < FOLIO_OBJECTS);
policy.discardable = folio->objects[object].discardable;
policy.priority = folio->objects[object].priority;
@@ -205,12 +205,12 @@ folio_object_policy_set (struct folio *folio, int object,
struct object_policy policy)
{
#ifdef RM_INTERN
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
folio->misc[object + 1].discardable = policy.discardable;
folio->misc[object + 1].priority = policy.priority;
#else
- assert (object >= 0 && object <= FOLIO_OBJECTS);
+ assert (object >= 0 && object < FOLIO_OBJECTS);
folio->objects[object].discardable = policy.discardable;
folio->objects[object].priority = policy.priority;
@@ -223,7 +223,7 @@ folio_object_policy_set (struct folio *folio, int object,
static inline bool
folio_object_wait_queue_p (struct folio *folio, int object)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
return bit_test (folio->wait_queues_p, object + 1);
}
@@ -232,7 +232,7 @@ static inline void
folio_object_wait_queue_p_set (struct folio *folio, int object,
bool valid)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
bit_set_to (folio->wait_queues_p, sizeof (folio->wait_queues_p),
object + 1, valid);
@@ -241,7 +241,7 @@ folio_object_wait_queue_p_set (struct folio *folio, int object,
static inline oid_t
folio_object_wait_queue (struct folio *folio, int object)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
return folio->wait_queues[object + 1];
}
@@ -250,7 +250,7 @@ static inline void
folio_object_wait_queue_set (struct folio *folio, int object,
oid_t head)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
folio->wait_queues[object + 1] = head;
}
@@ -258,7 +258,7 @@ folio_object_wait_queue_set (struct folio *folio, int object,
static inline uint32_t
folio_object_version (struct folio *folio, int object)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
return folio->misc[object + 1].version;
}
@@ -267,7 +267,7 @@ static inline void
folio_object_version_set (struct folio *folio, int object,
uint32_t version)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
folio->misc[object + 1].version = version;
}
@@ -275,7 +275,7 @@ folio_object_version_set (struct folio *folio, int object,
static inline bool
folio_object_content (struct folio *folio, int object)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
return folio->misc[object + 1].content;
}
@@ -284,7 +284,7 @@ static inline void
folio_object_content_set (struct folio *folio, int object,
bool content)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
folio->misc[object + 1].content = content;
}
@@ -292,7 +292,7 @@ folio_object_content_set (struct folio *folio, int object,
static inline bool
folio_object_discarded (struct folio *folio, int object)
{
- assert (object >= 0 && object <= FOLIO_OBJECTS);
+ assert (object >= 0 && object < FOLIO_OBJECTS);
return bit_test (folio->discarded, object);
}
@@ -300,7 +300,7 @@ folio_object_discarded (struct folio *folio, int object)
static inline void
folio_object_discarded_set (struct folio *folio, int object, bool valid)
{
- assert (object >= 0 && object <= FOLIO_OBJECTS);
+ assert (object >= 0 && object < FOLIO_OBJECTS);
bit_set_to (folio->discarded, sizeof (folio->discarded),
object, valid);
@@ -309,7 +309,7 @@ folio_object_discarded_set (struct folio *folio, int object, bool valid)
static inline bool
folio_object_referenced (struct folio *folio, int object)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
return bit_test (folio->referenced, object + 1);
}
@@ -317,7 +317,7 @@ folio_object_referenced (struct folio *folio, int object)
static inline void
folio_object_referenced_set (struct folio *folio, int object, bool p)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
bit_set_to (folio->referenced, sizeof (folio->referenced), object + 1, p);
}
@@ -325,7 +325,7 @@ folio_object_referenced_set (struct folio *folio, int object, bool p)
static inline bool
folio_object_dirty (struct folio *folio, int object)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
return bit_test (folio->dirty, object + 1);
}
@@ -333,7 +333,7 @@ folio_object_dirty (struct folio *folio, int object)
static inline void
folio_object_dirty_set (struct folio *folio, int object, bool p)
{
- assert (object >= -1 && object <= FOLIO_OBJECTS);
+ assert (object >= -1 && object < FOLIO_OBJECTS);
bit_set_to (folio->dirty, sizeof (folio->dirty), object + 1, p);
}
@@ -399,14 +399,18 @@ RPC(folio_alloc, 3, 0, addr_t, principal, addr_t, folio,
/* Free the folio designated by FOLIO. PRINCIPAL pays. */
RPC(folio_free, 2, 0, addr_t, principal, addr_t, folio)
-/* Allocate INDEXth object in folio FOLIO as an object of type TYPE.
- (Passing cap_void as the value of type simply destroys any existing
- object without allocating a new object.) POLICY specifies the
- object's policy when accessed via the folio. If OBJECT_SLOT is not
- ADDR_VOID, then stores a capability to the allocated object in
- OBJECT_SLOT. If OBJECT_WEAK_SLOT is not ADDR_VOID, stores a weaken
- reference to the created object. If an object is destroyed and
- there are waiters, they are passed the return code RETURN_CODE. */
+/* Destroys the INDEXth object in folio FOLIO and allocate in its
+ place an object of tye TYPE. If TYPE is CAP_VOID, any existing
+ object is destroyed, however, no object is instantiated in its
+ place. POLICY specifies the object's policy when accessed via the
+ folio. If an object is destroyed and there are waiters, they are
+ passed the return code RETURN_CODE.
+
+ If OBJECT_SLOT is not ADDR_VOID, then stores a capability to the
+ allocated object in OBJECT_SLOT. If OBJECT_WEAK_SLOT is not
+ ADDR_VOID, stores a weaken reference to the created object. If an
+ object is destroyed and there are waiters, they are passed the
+ return code RETURN_CODE. */
RPC(folio_object_alloc, 8, 0, addr_t, principal,
addr_t, folio, uintptr_t, index, uintptr_t, type,
struct object_policy, policy, uintptr_t, return_code,