From: Jeffrey Altman Date: Wed, 8 Oct 2008 22:14:52 +0000 (+0000) Subject: windows-build-do-not-mix-pthread-and-lwp-20081008 X-Git-Tag: openafs-devel-1_5_61~770 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=32977eadf12aaec6608ce3457a976a0810da8590;hp=e7b06ab695b83114954b58bd8cd25e5c0ad3f395 windows-build-do-not-mix-pthread-and-lwp-20081008 LICENSE MIT The rx library is built in lwp and pthread forms. The methods used to export data symbols are incompatible between the two. The ubik library is built with rx headers but only in the lwp form. As a result it is not possible to link the ubik libs without also including the lwp rx lib. We have pthreaded servers that require linking to the pthreaded rx and ubik. To fix the problem all of the macros that assigned values to variables and were used by ubik have been converted to functions (but only for Windows.) --- diff --git a/src/libafsrpc/afsrpc.def b/src/libafsrpc/afsrpc.def index 568fd58..2cf4b9f 100644 --- a/src/libafsrpc/afsrpc.def +++ b/src/libafsrpc/afsrpc.def @@ -233,6 +233,9 @@ EXPORTS clock_now @238 clock_UpdateTime @239 clock_haveCurrentTime @240 + rx_SetRxDeadTime @241 + rx_GetMinUdpBufSize @242 + rx_SetUdpBufSize @243 ; for performance testing rx_TSFPQGlobSize @2001 DATA diff --git a/src/rx/rx_globals.c b/src/rx/rx_globals.c index e198603..8f08ab1 100644 --- a/src/rx/rx_globals.c +++ b/src/rx/rx_globals.c @@ -47,3 +47,23 @@ RCSID #endif /* KERNEL */ #include "rx_globals.h" + +#ifdef AFS_NT40_ENV + +void rx_SetRxDeadTime(int seconds) +{ + rx_connDeadTime = seconds; +} + +int rx_GetMinUdpBufSize(void) +{ + return 64*1024; +} + +void rx_SetUdpBufSize(int x) +{ + if (x > rx_GetMinUdpBufSize()) + rx_UdpBufSize = x; +} + +#endif /* AFS_NT40_ENV */ diff --git a/src/rx/rx_globals.h b/src/rx/rx_globals.h index 78ba933..3e021bd 100644 --- a/src/rx/rx_globals.h +++ b/src/rx/rx_globals.h @@ -81,8 +81,13 @@ EXT int rx_stackSize GLOBALSINIT(RX_DEFAULT_STACK_SIZE); /* Time until an unresponsive connection is declared dead */ EXT int rx_connDeadTime GLOBALSINIT(12); + /* Set rx default connection dead time; set on both services and connections at creation time */ +#ifdef AFS_NT40_ENV +void rx_SetRxDeadTime(int seconds); +#else #define rx_SetRxDeadTime(seconds) (rx_connDeadTime = (seconds)) +#endif /* Time until we toss an idle connection */ EXT int rx_idleConnectionTime GLOBALSINIT(700); @@ -94,9 +99,13 @@ EXT int rx_tranquil GLOBALSINIT(0); /* UDP rcv buffer size */ EXT int rx_UdpBufSize GLOBALSINIT(64 * 1024); +#ifdef AFS_NT40_ENV +int rx_GetMinUdpBufSize(void); +void rx_SetUdpBufSize(int x); +#else #define rx_GetMinUdpBufSize() (64*1024) #define rx_SetUdpBufSize(x) (((x)>rx_GetMinUdpBufSize()) ? (rx_UdpBufSize = (x)):0) - +#endif /* * Variables to control RX overload management. When the number of calls * waiting for a thread exceed the threshold, new calls are aborted diff --git a/src/tbutc/NTMakefile b/src/tbutc/NTMakefile index a055bb2..815530a 100644 --- a/src/tbutc/NTMakefile +++ b/src/tbutc/NTMakefile @@ -76,11 +76,10 @@ BUTCLIBS=$(DESTDIR)\lib\afs\afsbudb.lib \ $(BUTMLIBS) \ $(DESTDIR)\lib\afs\afsvldb.lib \ $(DESTDIR)\lib\afs\afskauth.lib \ - $(DESTDIR)\lib\afsubik.lib \ $(DESTDIR)\lib\afs\afsauth.lib \ $(DESTDIR)\lib\afsrpc.lib \ $(DESTDIR)\lib\afsrxkad.lib \ - $(DESTDIR)\lib\afslwp.lib \ + $(DESTDIR)\lib\afsubik.lib \ $(DESTDIR)\lib\afs\afsutil.lib \ $(DESTDIR)\lib\afs\afsusd.lib \ $(DESTDIR)\lib\afs\afspioctl.lib \