Since commit
130144850c6d05bc69e06257a5d7219eb98697d8 "xstat: cm xstat
time values are 32 bit", OpenAFS has had two timeval definitions:
osi_timeval_t and osi_timeval32_t. Since they are functionally
equivalent, convert all references to osi_timeval_t to osi_timeval32_t.
This makes clear that this struct is always expected to contain 32-bit
members for tv_sec and tv_usec.
There are still a few platforms where osi_timeval32_t is mistakenly
defined with 64-bit members; these will be addressed in future commits.
No functional change should be incurred by this commit.
Change-Id: I3e8e44235e813571723fcd114194f6cb83de90e4
Reviewed-on: https://gerrit.openafs.org/14215
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Cheyenne Wills <cwills@sinenomine.net>
Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
#include <sys/timer.h> /* For the timer related defines */
#include <sys/intr.h> /* for the serialization defines */
#include <sys/malloc.h> /* for the parameters to xmalloc() */
-#include "afs/afs_osi.h" /* pick up osi_timeval_t for afs_stats.h */
+#include "afs/afs_osi.h" /* pick up osi_timeval32_t for afs_stats.h */
#include "afs/afs_stats.h"
#include "../export.h"
};
unsigned long lastCallBack_vnode;
unsigned int lastCallBack_dv;
-osi_timeval_t lastCallBack_time;
+osi_timeval32_t lastCallBack_time;
/* these are for storing alternate interface addresses */
struct interfaceAddr afs_cb_interface;
* struct so we need only export one symbol for AIX.
*/
static struct CTD_stats {
- osi_timeval_t CTD_beforeSleep;
- osi_timeval_t CTD_afterSleep;
- osi_timeval_t CTD_sleepTime;
- osi_timeval_t CTD_runTime;
+ osi_timeval32_t CTD_beforeSleep;
+ osi_timeval32_t CTD_afterSleep;
+ osi_timeval32_t CTD_sleepTime;
+ osi_timeval32_t CTD_runTime;
int CTD_nSleeps;
} CTD_stats;
void
afs_CacheTruncateDaemon(void)
{
- osi_timeval_t CTD_tmpTime;
+ osi_timeval32_t CTD_tmpTime;
u_int counter;
u_int cb_lowat;
u_int dc_hiwat =
#ifndef AFS_NOSTATS
static void
-FillStoreStats(int code, int idx, osi_timeval_t xferStartTime,
+FillStoreStats(int code, int idx, osi_timeval32_t xferStartTime,
afs_size_t bytesToXfer, afs_size_t bytesXferred)
{
struct afs_stats_xferData *xferP;
- osi_timeval_t xferStopTime;
- osi_timeval_t elapsedTime;
+ osi_timeval32_t xferStopTime;
+ osi_timeval32_t elapsedTime;
xferP = &(afs_stats_cmfullperf.rpc.fsXferTimes[idx]);
osi_GetuTime(&xferStopTime);
afs_size_t bytesXferred;
#ifndef AFS_NOSTATS
- osi_timeval_t xferStartTime; /*FS xfer start time */
+ osi_timeval32_t xferStartTime; /*FS xfer start time */
afs_size_t bytesToXfer = 10000; /* # bytes to xfer */
#endif /* AFS_NOSTATS */
XSTATS_DECLS;
XSTATS_DECLS;
#ifndef AFS_NOSTATS
- osi_timeval_t xferStartTime; /*FS xfer start time */
+ osi_timeval32_t xferStartTime; /*FS xfer start time */
afs_size_t bytesToXfer = 0, bytesXferred = 0;
#endif
{
int rsize; /* record size in longs */
int tsize; /* temp size */
- osi_timeval_t tv;
+ osi_timeval32_t tv;
int t1, t2, t3, t4;
t4 = types & 0x3f; /* decode types */
void
Afs_Lock_Obtain(struct afs_lock *lock, int how)
{
- osi_timeval_t tt1, tt2, et;
+ osi_timeval32_t tt1, tt2, et;
afs_uint32 us;
AFS_STATCNT(Lock_Obtain);
*/
#define osi_GetuTime(x) osi_GetTime(x)
-/* osi_timeval_t exists because SGI 6.x has two sizes of timeval. */
-/** In 64 bit Solaris the timeval structure has members that are 64 bit
- * In the GetTime() interface we expect pointers to afs_int32. So the need to
- * define osi_timeval_t to have 32 bit members. To make this less ambiguous
- * we now use 32 bit quantities consistently all over the code.
- * In 64 bit HP-UX the timeval structure has a 64 bit member.
- */
-
+/*
+ * We use osi_timeval32_t because the native timeval varies in size on
+ * different platforms. We require a fixed size timeval, at least for the
+ * xstats.
+ */
#if defined(AFS_HPUX_ENV) || defined(AFS_LINUX_64BIT_KERNEL) || (defined(AFS_LINUX26_ENV) && !defined(HAVE_LINUX_TIME_T)) || (defined(AFS_SGI61_ENV) && defined(KERNEL) && defined(_K64U64))
typedef struct {
afs_int32 tv_sec;
afs_int32 tv_usec;
-} osi_timeval_t;
-typedef struct {
- afs_int32 tv_sec;
- afs_int32 tv_usec;
} osi_timeval32_t;
#elif defined(AFS_SUN5_ENV)
-typedef struct timeval32 osi_timeval_t;
typedef struct timeval32 osi_timeval32_t;
#else
-typedef struct timeval osi_timeval_t;
typedef struct timeval osi_timeval32_t;
#endif /* AFS_SGI61_ENV */
extern afs_int32 afs_connectBacks;
extern unsigned long lastCallBack_vnode;
extern unsigned int lastCallBack_dv;
-extern osi_timeval_t lastCallBack_time;
+extern osi_timeval32_t lastCallBack_time;
extern struct interfaceAddr afs_cb_interface;
extern int afs_RXCallBackServer(void);
{
struct server *a_serverP = sa->server;
struct srvAddr *sap;
- osi_timeval_t currTime, *currTimeP; /*Current time */
+ osi_timeval32_t currTime, *currTimeP; /*Current time */
afs_int32 downTime; /*Computed downtime, in seconds */
struct afs_stats_SrvUpDownInfo *upDownP; /*Ptr to up/down info record */
int currIdx; /*Curr idx into srv table */
struct server *currSrvP; /*Ptr to curr server record */
afs_int32 currChainLen; /*Length of curr hash chain */
- osi_timeval_t currTime; /*Current time */
- osi_timeval_t *currTimeP; /*Ptr to above */
+ osi_timeval32_t currTime; /*Current time */
+ osi_timeval32_t *currTimeP; /*Ptr to above */
afs_int32 srvRecordAge; /*Age of server record, in secs */
struct afs_stats_SrvUpDownInfo *upDownP; /*Ptr to current up/down
* info being manipulated */
AFS_STATCNT(afs_random);
if (!state) {
- osi_timeval_t t;
+ osi_timeval32_t t;
osi_GetTime(&t);
/*
* Clear the low nybble of tv_usec in a size-independent manner before adding
void
afs_ActivateServer(struct srvAddr *sap)
{
- osi_timeval_t currTime; /*Filled with current time */
- osi_timeval_t *currTimeP; /*Ptr to above */
+ osi_timeval32_t currTime; /*Filled with current time */
+ osi_timeval32_t *currTimeP; /*Ptr to above */
struct afs_stats_SrvUpDownInfo *upDownP; /*Ptr to up/down info record */
struct server *aserver = sap->server;
#endif /* !KERNEL */
#define XSTATS_DECLS struct afs_stats_opTimingData *opP = NULL; \
- osi_timeval_t opStartTime = { 0, 0}, opStopTime, elapsedTime
+ osi_timeval32_t opStartTime = { 0, 0}, opStopTime, elapsedTime
#define XSTATS_START_TIME(arg) \
opP = &(afs_stats_cmfullperf.rpc.fsRPCTimes[arg]); \
unsigned short readers_reading; /* # readers actually with read locks */
unsigned short num_waiting; /* probably need this soon */
unsigned short spare; /* not used now */
- osi_timeval_t time_waiting; /* for statistics gathering */
+ osi_timeval32_t time_waiting; /* for statistics gathering */
#if defined(INSTRUMENT_LOCKS)
/* the following are useful for debugging
** the field 'src_indicator' is updated only by ObtainLock() and
rx_InitHost(u_int host, u_int port)
{
#ifdef KERNEL
- osi_timeval_t tv;
+ osi_timeval32_t tv;
#else /* KERNEL */
struct timeval tv;
#endif /* KERNEL */
#else /* KERNEL */
#define clock_Init()
#if defined(AFS_SGI61_ENV) || defined(AFS_HPUX_ENV) || defined(AFS_LINUX_64BIT_KERNEL)
-#define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)cv)
+#define clock_GetTime(cv) osi_GetTime((osi_timeval32_t *)cv)
#else
#if (defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL)) || (defined(AFS_DARWIN100_ENV) && defined(__amd64__)) || defined(AFS_XBSD_ENV)
#define clock_GetTime(cv) \
(cv)->usec = (afs_int32)tv.tv_usec; \
END
#else /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */
-#define clock_GetTime(cv) osi_GetTime((osi_timeval_t *)(cv))
+#define clock_GetTime(cv) osi_GetTime((osi_timeval32_t *)(cv))
#endif /* defined(AFS_AIX51_ENV) && defined(AFS_64BIT_KERNEL) */
#endif
#define clock_Sec() osi_Time()
void
uuid__get_os_time(uuid_time_t * os_time)
{
- osi_timeval_t tp;
+ osi_timeval32_t tp;
osi_GetTime(&tp);
os_time->hi = tp.tv_sec;
typedef struct {
int tv_sec;
int tv_usec;
-} osi_timeval_t; /* Needed here since KERNEL defined. */
+} osi_timeval32_t; /* Needed here since KERNEL defined. */
/*#include "afs/volerrors.h"*/
#ifdef AFS_LINUX20_ENV