1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 12:21:25 -08:00

Mps br/timing: hack in mps_clock_t

(Should go via new Clock type in mpmtypes, mpsi_check(), etc).

Copied from Perforce
 Change: 166591
 ServerID: perforce.ravenbrook.com
This commit is contained in:
Richard Kistruck 2008-10-31 17:14:37 +00:00
parent f5c3940658
commit 62fb0f32ae
6 changed files with 30 additions and 2 deletions

View file

@ -284,6 +284,14 @@ MessageClass MessageGetClass(Message message)
return message->class;
}
/* Return the class of a message */
mps_clock_t MessageGetClock(Message message)
{
AVERT(Message, message);
return message->postedClock;
}
static void MessageDelete(Message message)
{
AVERT(Message, message);

View file

@ -311,6 +311,7 @@ extern void MessageDiscard(Arena arena, Message message);
/* -- Message Methods, Generic */
extern MessageType MessageGetType(Message message);
extern MessageClass MessageGetClass(Message message);
extern mps_clock_t MessageGetClock(Message message);
/* -- Message Method Dispatchers, Type-specific */
extern void MessageFinalizationRef(Ref *refReturn,
Arena arena, Message message);

View file

@ -223,6 +223,7 @@ typedef struct MessageStruct {
MessageType type; /* Message Type */
MessageClass class; /* Message Class Structure */
RingStruct queueRing; /* Message queue ring */
mps_clock_t postedClock; /* mps_clock() at post time */
} MessageStruct;

View file

@ -48,6 +48,7 @@ typedef size_t mps_align_t; /* alignment (size_t) */
typedef unsigned mps_rm_t; /* root mode (unsigned) */
typedef unsigned mps_rank_t; /* ranks (unsigned) */
typedef unsigned mps_message_type_t; /* message type (unsigned) */
typedef unsigned long mps_clock_t; /* processor time */
/* Result Codes */
/* .result-codes: Keep in sync with <code/mpmtypes.h#result-codes> */
@ -527,6 +528,7 @@ extern void mps_message_discard(mps_arena_t, mps_message_t);
/* -- All Message Types */
extern mps_message_type_t mps_message_type(mps_arena_t, mps_message_t);
extern mps_clock_t mps_message_clock(mps_arena_t, mps_message_t);
/* -- mps_message_type_finalization */
extern void mps_message_finalization_ref(mps_addr_t *,

View file

@ -1675,6 +1675,23 @@ mps_message_type_t mps_message_type(mps_arena_t mps_arena,
return (mps_message_type_t)type;
}
mps_clock_t mps_message_clock(mps_arena_t mps_arena,
mps_message_t mps_message)
{
Arena arena = (Arena)mps_arena;
Message message = (Message)mps_message;
mps_clock_t postedClock; /* @@@@ should be Clock, not mps_clock_t */
ArenaEnter(arena);
postedClock = MessageGetClock(message);
ArenaLeave(arena);
return (mps_clock_t)postedClock;
}
/* -- mps_message_type_finalization */
void mps_message_finalization_ref(mps_addr_t *mps_addr_return,

View file

@ -14,7 +14,7 @@
#define mpslib_h
#include <stddef.h>
#include "mps.h" /* mps_clock_t */
extern int mps_lib_get_EOF(void);
#define mps_lib_EOF (mps_lib_get_EOF())
@ -36,7 +36,6 @@ extern void *(mps_lib_memcpy)(void *, const void *, size_t);
extern int (mps_lib_memcmp)(const void *, const void *, size_t);
typedef unsigned long mps_clock_t;
extern mps_clock_t mps_clock(void);
extern mps_clock_t mps_clocks_per_sec(void);