----- Original Message -----
> j0!
>
> Humbedooh and moa have managed to gobble something together that
> compiles on both, FreeBSD and Solaris. But maybe someone who
> actually knows how to program would like to review this before
> I commit the Solaris portion of the patch:
>
>
> diff --git a/iocore/eventsystem/UnixEventProcessor.cc
> b/iocore/eventsystem/UnixEventProcessor.cc
> index 78f6f7d..95c0835 100644
> --- a/iocore/eventsystem/UnixEventProcessor.cc
> +++ b/iocore/eventsystem/UnixEventProcessor.cc
> @@ -26,10 +26,14 @@
> #if TS_USE_HWLOC
> #include <hwloc.h>
> // TODO: (humbedooh): Make this build on Solaris with hwloc.
> -#if defined(freebsd) || defined(solaris)
> +#if defined(freebsd) || defined(darwin)
> #include <sys/cpuset.h>
> #define cpu_set_t cpuset_t
> #include <pthread_np.h>
> +#elif defined(solaris)
> +#include <sys/procset.h>
> +#include <sys/processor.h>
> +#include <sys/types.h>
> #endif
> #endif
> #include "ink_defs.h"
> @@ -106,7 +110,9 @@ EventProcessor::start(int n_event_threads)
> #if TS_USE_HWLOC
> int affinity = 0;
> REC_ReadConfigInteger(affinity,
> "proxy.config.exec_thread.affinity");
> +#if !defined(solaris)
> cpu_set_t cpuset;
> +#endif
> const hwloc_topology_t *topology = ink_get_topology();
> int cu = hwloc_get_nbobjs_by_type(*topology, HWLOC_OBJ_CORE);
> int pu = hwloc_get_nbobjs_by_type(*topology, HWLOC_OBJ_PU);
> @@ -121,11 +127,18 @@ EventProcessor::start(int n_event_threads)
>
> #if TS_USE_HWLOC
> if (affinity == 1) {
> - CPU_ZERO(&cpuset);
> int cpu = (i - 1) % num_cpus;
> +#if !defined(solaris)
> + CPU_ZERO(&cpuset);
> CPU_SET(cpu, &cpuset);
> +#endif
> +
> Debug("iocore_thread", "setaffinity tid: %p, net thread: %d,
> cpu: %d", tid, i, cpu);
> +#if !defined(solaris)
> assert(pthread_setaffinity_np(tid, sizeof(cpu_set_t), &cpuset)
> == 0);
> +#else
> + assert(processor_bind(P_LWPID, tid, cpu, NULL));
> +#endif
> }
> #endif
> }
>
btw, after applying this patch, we get the next failure here:
Making all in dns
gmake[2]: Entering directory `/export/home/igalic/trafficserver/iocore/dns'
source='SplitDNS.cc' object='SplitDNS.o' libtool=no \
DEPDIR=.deps depmode=none /bin/bash ../../build/aux/depcomp \
CC -DHAVE_CONFIG_H -I. -I../../lib/ts -I../../iocore/eventsystem
-I../../iocore/net -I../../iocore/aio -I../../iocore/hostdb
-I../../iocore/cache -I../../iocore/cluster -I../../iocore/utils
-I../../iocore/dns -I../../lib -I../../lib/records -I../../lib/ts -I../../proxy
-I../../proxy/http -I../../proxy/hdrs -I../../mgmt -I../../mgmt/utils
-I../../mgmt/preparse -D_LARGEFILE64_SOURCE=1 -D_FILE_OFFSET_BITS=64
-D_GNU_SOURCE -D_REENTRANT -Dsolaris -I/opt/csw/include -I/usr/local/include
-g -mt -m64 -D__WORDSIZE=64 -O3 -library=stlport4 -erroff -c -o SplitDNS.o
SplitDNS.cc
"SplitDNS.cc", line 639: Error: Could not find a match for
ink_atomic_cas(SplitDNSConfigInfo**, SplitDNSConfigInfo*, SplitDNSConfigInfo*)
needed in SplitDNSConfigProcessor::set(unsigned, SplitDNSConfigInfo*).
1 Error(s) detected.
gmake[2]: *** [SplitDNS.o] Error 2
so long,
i
--
Igor Galić
Tel: +43 (0) 664 886 22 883
Mail: [email protected]
URL: http://brainsware.org/
GPG: 6880 4155 74BD FD7C B515 2EA5 4B1D 9E08 A097 C9AE