libadmin/samples/rxstat_query_peer.c : all : util_RPCStatsStateGet types
libadmin/samples/rxstat_query_process.c : all : util_RPCStatsStateGet types
libadmin/test/client.c : all : util_RPCStatsStateGet types
-rx/rx.c : all (pthread) : rxkad_global_stats_init not proto'd
rxkad/ticket5.c : all : v5gen.c has set-but-unused variables
ubik/ubikclient.c : strict-protos : ubik_Call
volser/vol-dump.c : format : afs_sfsize_t
rx_pthread.o: ${RX}/rx_pthread.c
$(AFS_CCRULE) $(RX)/rx_pthread.c
-CFLAGS_rx.o = @CFLAGS_NOERROR@
rx.o: ${RX}/rx.c
$(AFS_CCRULE) $(RX)/rx.c
extern afs_kmutex_t listener_mutex;
extern afs_kmutex_t rx_if_init_mutex;
extern afs_kmutex_t rx_if_mutex;
-extern afs_kmutex_t rxkad_client_uid_mutex;
-extern afs_kmutex_t rxkad_random_mutex;
extern afs_kcondvar_t rx_event_handler_cond;
extern afs_kcondvar_t rx_listener_cond;
MUTEX_INIT(&listener_mutex, "listener", MUTEX_DEFAULT, 0);
MUTEX_INIT(&rx_if_init_mutex, "if init", MUTEX_DEFAULT, 0);
MUTEX_INIT(&rx_if_mutex, "if", MUTEX_DEFAULT, 0);
- MUTEX_INIT(&rxkad_client_uid_mutex, "uid", MUTEX_DEFAULT, 0);
- MUTEX_INIT(&rxkad_random_mutex, "rxkad random", MUTEX_DEFAULT, 0);
MUTEX_INIT(&rx_debug_mutex, "debug", MUTEX_DEFAULT, 0);
CV_INIT(&rx_event_handler_cond, "evhand", CV_DEFAULT, 0);
osi_Assert(pthread_key_create(&rx_thread_id_key, NULL) == 0);
osi_Assert(pthread_key_create(&rx_ts_info_key, NULL) == 0);
- rxkad_global_stats_init();
-
MUTEX_INIT(&rx_rpc_stats, "rx_rpc_stats", MUTEX_DEFAULT, 0);
MUTEX_INIT(&rx_freePktQ_lock, "rx_freePktQ_lock", MUTEX_DEFAULT, 0);
#ifdef RX_ENABLE_LOCKS
#endif /* !UKERNEL */
#else /* ! KERNEL */
#include <roken.h>
-#ifdef AFS_PTHREAD_ENV
-#include "rx/rxkad.h"
-#endif /* AFS_PTHREAD_ENV */
#endif /* KERNEL */
+
#include <rx/rx.h>
#include <rx/xdr.h>
+#include "rxkad.h"
#include "stats.h"
#include "private_data.h"
#define XPRT_RXKAD_CLIENT
int code;
int size, psize;
+ rxkad_Init();
+
size = sizeof(struct rx_securityClass);
tsc = rxi_Alloc(size);
memset((void *)tsc, 0, size);
#endif /* AFS_PTHREAD_ENV */
#ifdef AFS_PTHREAD_ENV
+/* Pthread initialisation */
+static pthread_once_t rxkad_once_init = PTHREAD_ONCE_INIT;
+extern pthread_mutex_t rxkad_client_uid_mutex;
+extern pthread_mutex_t rxkad_random_mutex;
+
+static void
+rxkad_global_stats_init(void)
+{
+ osi_Assert(pthread_mutex_init(&rxkad_global_stats_lock, (const pthread_mutexattr_t *)0) == 0);
+ osi_Assert(pthread_key_create(&rxkad_stats_key, NULL) == 0);
+ memset(&rxkad_global_stats, 0, sizeof(rxkad_global_stats));
+}
+
+static void
+rxkad_InitPthread(void) {
+ MUTEX_INIT(&rxkad_client_uid_mutex, "uid", MUTEX_DEFAULT, 0);
+ MUTEX_INIT(&rxkad_random_mutex, "rxkad random", MUTEX_DEFAULT, 0);
+
+ rxkad_global_stats_init();
+}
+
+void
+rxkad_Init(void) {
+ osi_Assert(pthread_once(&rxkad_once_init, rxkad_InitPthread) == 0);
+}
+
/* rxkad_stats related stuff */
/*
osi_Assert((head) && ((head)->prev == NULL)); \
} while(0)
-void rxkad_global_stats_init(void) {
- osi_Assert(pthread_mutex_init(&rxkad_global_stats_lock, (const pthread_mutexattr_t *)0) == 0);
- osi_Assert(pthread_key_create(&rxkad_stats_key, NULL) == 0);
- memset(&rxkad_global_stats, 0, sizeof(rxkad_global_stats));
-}
-
rxkad_stats_t *
rxkad_thr_stats_init(void) {
rxkad_stats_t * rxkad_stats;
RXKAD_GLOBAL_STATS_UNLOCK;
return 0;
}
+#else
+void
+rxkad_Init(void)
+{
+ return;
+}
#endif /* AFS_PTHREAD_ENV */
/* static prototypes */
extern void rxkad_ResetState(void);
/* rxkad_common.c */
+extern void rxkad_Init(void);
+
struct rxkad_endpoint;
extern int rxkad_SetupEndpoint(struct rx_connection *aconnp,
struct rxkad_endpoint *aendpointp);
extern rxkad_level rxkad_StringToLevel(char *string);
extern char *rxkad_LevelToString(rxkad_level level);
-extern void rxkad_global_stats_init(void);
-
/* rxkad_errs.c */
/* rxkad_server.c */
struct rxkad_sprivate *tsp;
int size;
+ rxkad_Init();
+
if (!get_key)
return 0;
extern pthread_mutex_t rxkad_global_stats_lock;
extern pthread_key_t rxkad_stats_key;
-extern void rxkad_global_stats_init(void);
extern rxkad_stats_t * rxkad_thr_stats_init(void);
extern int rxkad_stats_agg(rxkad_stats_t *);
rx_pthread.o: ${RX}/rx_pthread.c
$(AFS_CCRULE) $(RX)/rx_pthread.c
-CFLAGS_rx.o = @CFLAGS_NOERROR@
rx.o: ${RX}/rx.c
$(AFS_CCRULE) $(RX)/rx.c