[Click] Patches for x86_64 builds
Salman Abdul Baset
salman at cs.columbia.edu
Thu Jul 12 14:56:46 EDT 2007
I was able to successfully compile and run 64-bit click from CVS on
2.6.16.13 as well as 2.6.19.2.
By copying the configure file from CVS click to click-1.5.0, I was able to
compile click-1.5.0 on 2.6.16.13 after removing some compilation errors.
What is the maximum throughput under which click has been tested?
Has anyone tried to write a click-compatible polling driver for a 10GbE
card?
Thanks
Salman
On Sun, 1 Jul 2007, Eddie Kohler wrote:
> Hi Salman
>
> I'm really surprised the errors were the same. Are you sure Click re-ran the
> configure steps? Can you try from a clean checkout? Anyway, config.log and
> cut-and-pasted errors would help us debug.
>
> E
>
>
> Salman Abdul Baset wrote:
>>
>> I checked out the latest CVS sources and tried to compile it on a 64-bit
>> machine with 2.6.16.13 kernel, but got the same errors. I was able to
>> compile click on 64-bit machine with kernel 2.6.19.2. Also, note that both
>> click-1.5.0 and latest CVS source compile on a 32-bit machine with
>> 2.6.16.13 kernel.
>>
>> I have the config.log files for the above cases and I can send them if
>> needed.
>>
>> Due to another software constraint whose source I don't have, I am
>> restricted to use 2.6.16.13 on 64-bit machine. If it may not be possible
>> for click developers to fix it, can you suggest what might be problem so
>> that I can try to fix it myself?
>>
>> Is there a significant difference between click performance on a 64-bit vs.
>> 32-bit machine?
>>
>> Thanks a lot.
>>
>> Regards,
>> Salman
>>
>> On Fri, 29 Jun 2007, Eddie Kohler wrote:
>>
>>> We fix problems in anonymous CVS only.
>>> Eddie
>>>
>>>
>>> Salman Abdul Baset wrote:
>>>> I have encountered similar problems when trying to compile click-1.5.0
>>>> for x86_64 and kernel 2.6.16.13. Is there a fix that is applicable to
>>>> click-1.5.0?
>>>>
>>>> Thanks
>>>> Salman
>>>>
>>>>
>>>> On Fri, 29 Jun 2007, Eddie Kohler wrote:
>>>>
>>>>> Puneet,
>>>>>
>>>>> Thank you very much for this bug report. I've checked in some fixes
>>>>> which, I
>>>>> believe, will address the underlying problems here, including that with
>>>>> String(off_t); would you please cvs up, reconfigure, and tell us how it
>>>>> works?
>>>>>
>>>>> Eddie
>>>>>
>>>>>
>>>>> Puneet Sood wrote:
>>>>>> Hi,
>>>>>>
>>>>>> While building Click for x86_64 from the current sources, I
>>>>>> encountered a few errors (in configure and compilation). config.h
>>>>>> contents at the bottom of this message.
>>>>>>
>>>>>> **** Problem 1: ./configure: Check for C++-compilable kernel headers
>>>>>> fails in include/asm/spinlock.h
>>>>>>
>>>>>> --- configure.~1.98.~ 2007-05-16 15:39:45.000000000 -0400
>>>>>> +++ configure 2007-06-25 16:25:12.000000000 -0400
>>>>>> @@ -14259,6 +14259,12 @@
>>>>>> cat confdefs.h >>conftest.$ac_ext
>>>>>> cat >>conftest.$ac_ext <<_ACEOF
>>>>>> /* end confdefs.h. */
>>>>>> +#if HAVE_LINUXMODULE_2_6
>>>>>> +# define KBUILD_STR(s) #s
>>>>>> +# define KBUILD_BASENAME KBUILD_STR(click)
>>>>>> +# define KBUILD_MODNAME KBUILD_STR(click)
>>>>>> +#endif
>>>>>> +
>>>>>> #define new xxx_new
>>>>>> #include <linux/autoconf.h>
>>>>>> #include <linux/signal.h>
>>>>>>
>>>>>>
>>>>>> **** Problem 2: linuxmodule: Compilation of click/linuxmodule/sched.cc
>>>>>> fails with the following errors
>>>>>>
>>>>>> /usr/local/home/vlb/dev/src/click/linuxmodule/sched.cc: In function
>>>>>> 'String read_sched_param(Element*, void*)':
>>>>>> /usr/local/home/vlb/dev/src/click/linuxmodule/sched.cc:294: error:
>>>>>> cast from 'void*' to 'int' loses precision
>>>>>> /usr/local/home/vlb/dev/src/click/linuxmodule/sched.cc: In function
>>>>>> 'int write_sched_param(const String&, Element*, void*,
>>>>>> ErrorHandler*)':
>>>>>> /usr/local/home/vlb/dev/src/click/linuxmodule/sched.cc:328: error:
>>>>>> cast from 'void*' to 'int' loses precision
>>>>>>
>>>>>> --- sched.cc.orig 2007-06-25 20:38:40.000000000 -0400
>>>>>> +++ sched.cc 2007-06-25 16:54:35.000000000 -0400
>>>>>> @@ -291,7 +291,7 @@
>>>>>> static String
>>>>>> read_sched_param(Element *, void *thunk)
>>>>>> {
>>>>>> - switch ((int)thunk) {
>>>>>> + switch (reinterpret_cast<ptrdiff_t>(thunk)) {
>>>>>> case H_TASKS_PER_ITER: {
>>>>>> if (click_router) {
>>>>>> String s;
>>>>>> @@ -325,7 +325,7 @@
>>>>>> write_sched_param(const String &conf, Element *e, void *thunk,
>>>>>> ErrorHandler *errh)
>>>>>> {
>>>>>>
>>>>>> - switch((int)thunk) {
>>>>>> + switch(reinterpret_cast<ptrdiff_t>(thunk)) {
>>>>>>
>>>>>> case H_TASKS_PER_ITER: {
>>>>>> unsigned x;
>>>>>>
>>>>>> **** Problem 3: Compilation of click/elements/userlevel/fromdump.cc
>>>>>> fails with the following errors
>>>>>>
>>>>>> CXX ../elements/userlevel/fromdump.cc
>>>>>> ../elements/userlevel/fromdump.cc: In static member function 'static
>>>>>> String FromDump::read_handler(Element*, void*)':
>>>>>> ../elements/userlevel/fromdump.cc:522: error: call of overloaded
>>>>>> 'String(off_t&)' is ambiguous
>>>>>> ../include/click/string.hh:40: note: candidates are:
>>>>>> String::String(double)
>>>>>> ../include/click/string.hh:34: note:
>>>>>> String::String(long unsigned int)
>>>>>> ../include/click/string.hh:33: note:
>>>>>> String::String(long int)
>>>>>> ../include/click/string.hh:32: note:
>>>>>> String::String(unsigned int)
>>>>>> ../include/click/string.hh:31: note:
>>>>>> String::String(int)
>>>>>> ../include/click/string.hh:269: note:
>>>>>> String::String(unsigned char)
>>>>>> ../include/click/string.hh:260: note: String::String(char)
>>>>>> ../include/click/string.hh:250: note: String::String(bool)
>>>>>> ../include/click/string.hh:208: note:
>>>>>> String::String(const char*) <near match>
>>>>>> ../include/click/string.hh:278: note:
>>>>>> String::String(const String&) <near match>
>>>>>>
>>>>>> Not sure what the best fix is in this case. I worked around by
>>>>>> typecasting the off_t value to a long int (which is 64-bit here). It
>>>>>> may be better to overload the String::String for long long and
>>>>>> unsigned long long unconditionally.
>>>>>>
>>>>>> Thanks,
>>>>>> Puneet
>>>>>>
>>>>>>
>>>>>> /* include/click/config.h. Generated from config.h.in by configure.
>>>>>> */
>>>>>> /* Process this file with configure to produce config.h. -*- mode: c
>>>>>> -*- */
>>>>>> #ifndef CLICK_CONFIG_H
>>>>>> #define CLICK_CONFIG_H
>>>>>>
>>>>>> /* Define to byte order of target machine. */
>>>>>> #define CLICK_BYTE_ORDER 1234
>>>>>> #define CLICK_BIG_ENDIAN 4321
>>>>>> #define CLICK_LITTLE_ENDIAN 1234
>>>>>> #define CLICK_NO_ENDIAN 0
>>>>>>
>>>>>> /* Define for Click memory allocation debugging. */
>>>>>> /* #undef CLICK_DMALLOC */
>>>>>>
>>>>>> /* Version number of package */
>>>>>> #define CLICK_VERSION "1.6.0pre"
>>>>>>
>>>>>> /* Define if PollDevice should run fast to get good benchmark numbers
>>>>>> */
>>>>>> #define CLICK_WARP9 1
>>>>>>
>>>>>> /* Define if you have the __builtin_clz function. */
>>>>>> #define HAVE___BUILTIN_CLZ 1
>>>>>>
>>>>>> /* Define if you have the __builtin_clzl function. */
>>>>>> #define HAVE___BUILTIN_CLZL 1
>>>>>>
>>>>>> /* Define if you have the __builtin_clzll function. */
>>>>>> #define HAVE___BUILTIN_CLZLL 1
>>>>>>
>>>>>> /* Define if you have the __builtin_ffs function. */
>>>>>> #define HAVE___BUILTIN_FFS 1
>>>>>>
>>>>>> /* Define if you have the __builtin_ffsl function. */
>>>>>> #define HAVE___BUILTIN_FFSL 1
>>>>>>
>>>>>> /* Define if you have the __builtin_ffsll function. */
>>>>>> #define HAVE___BUILTIN_FFSLL 1
>>>>>>
>>>>>> /* Define if the va_list type is addressable. */
>>>>>> /* #undef HAVE_ADDRESSABLE_VA_LIST */
>>>>>>
>>>>>> /* Define if the machine is indifferent to alignment. */
>>>>>> #define HAVE_INDIFFERENT_ALIGNMENT 1
>>>>>>
>>>>>> /* Define if you want to use Intel-specific instructions. */
>>>>>> #define HAVE_INTEL_CPU 1
>>>>>>
>>>>>> /* Define if 64-bit integer types are enabled. */
>>>>>> #define HAVE_INT64_TYPES 1
>>>>>>
>>>>>> /* Define if IPv6 support is enabled. */
>>>>>> /* #undef HAVE_IP6 */
>>>>>>
>>>>>> /* Define if IPsec support is enabled. */
>>>>>> /* #undef HAVE_IPSEC */
>>>>>>
>>>>>> /* Define to 1 if the system has the type `long long'. */
>>>>>> #define HAVE_LONG_LONG 1
>>>>>>
>>>>>> /* Define if nanosecond-granularity timestamps are enabled. */
>>>>>> /* #undef HAVE_NANOTIMESTAMP_ENABLED */
>>>>>>
>>>>>> /* Define if you want to use the stride scheduler. */
>>>>>> #define HAVE_STRIDE_SCHED 1
>>>>>>
>>>>>> /* Define to 1 since we have Strings. */
>>>>>> #define HAVE_STRING 1
>>>>>>
>>>>>> /* Define to 1 if the system has the type `struct timespec'. */
>>>>>> #define HAVE_STRUCT_TIMESPEC 1
>>>>>>
>>>>>> #ifdef HAVE_STRIDE_SCHED
>>>>>> /* Define if you want task scheduling to use a heap, not a linked list.
>>>>>> */
>>>>>> /* #undef HAVE_TASK_HEAP */
>>>>>> #endif
>>>>>>
>>>>>> /* The size of a `int', as computed by sizeof. */
>>>>>> #define SIZEOF_INT 4
>>>>>>
>>>>>> /* The size of a `long', as computed by sizeof. */
>>>>>> #define SIZEOF_LONG 8
>>>>>>
>>>>>> /* The size of a `long long', as computed by sizeof. */
>>>>>> #define SIZEOF_LONG_LONG 8
>>>>>>
>>>>>> /* The size of a `struct timespec', as computed by sizeof. */
>>>>>> #define SIZEOF_STRUCT_TIMESPEC 16
>>>>>>
>>>>>> /* The size of a `struct timeval', as computed by sizeof. */
>>>>>> #define SIZEOF_STRUCT_TIMEVAL 16
>>>>>>
>>>>>> /* Define if you want to run multithreaded Click. */
>>>>>> /* #undef __MTCLICK__ */
>>>>>> #define NUM_CLICK_CPUS 1
>>>>>>
>>>>>> #ifndef __cplusplus
>>>>>> /* Define inline, if necessary. C only. */
>>>>>> /* #undef inline */
>>>>>> #endif
>>>>>>
>>>>>> #ifdef __cplusplus
>>>>>> /* Explicit template instances? */
>>>>>> #if __GNUC__ == 2 && __GNUC_MINOR__ < 90
>>>>>> #define EXPLICIT_TEMPLATE_INSTANCES 1
>>>>>> #endif
>>>>>> #endif /* __cplusplus */
>>>>>>
>>>>>> /* Define macros for declaring packed structures. */
>>>>>> #ifdef __GNUC__
>>>>>> #define CLICK_PACKED_STRUCTURE(open, close) open close
>>>>>> __attribute__((packed))
>>>>>> #define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close
>>>>>> __attribute__((packed))
>>>>>> #else
>>>>>> #define CLICK_PACKED_STRUCTURE(open, close)
>>>>>> _Cannot_pack_structure__Use_GCC
>>>>>> #define CLICK_SIZE_PACKED_STRUCTURE(open, close) open close
>>>>>> #endif
>>>>>>
>>>>>> /* Define macro for deprecated functions. */
>>>>>> #if __GNUC__ < 3 || (__GNUC__ == 3 && __GNUC_MINOR__ == 0)
>>>>>> #define CLICK_DEPRECATED
>>>>>> #else
>>>>>> #define CLICK_DEPRECATED __attribute__((deprecated))
>>>>>> #endif
>>>>>>
>>>>>> /* Define ARCH_IS_BIG_ENDIAN based on CLICK_BYTE_ORDER. */
>>>>>> #if CLICK_BYTE_ORDER == CLICK_BIG_ENDIAN
>>>>>> #define ARCH_IS_BIG_ENDIAN 1
>>>>>> #elif CLICK_BYTE_ORDER == CLICK_LITTLE_ENDIAN
>>>>>> #define ARCH_IS_BIG_ENDIAN 0
>>>>>> #endif
>>>>>>
>>>>>> /* EXPORT_ELEMENT, ELEMENT_REQUIRES, ELEMENT_PROVIDES, ELEMENT_HEADER,
>>>>>> ELEMENT_LIBS, and ELEMENT_MT_SAFE are noops. */
>>>>>> #define EXPORT_ELEMENT(x)
>>>>>> #define ELEMENT_REQUIRES(x)
>>>>>> #define ELEMENT_PROVIDES(x)
>>>>>> #define ELEMENT_HEADER(x)
>>>>>> #define ELEMENT_LIBS(x)
>>>>>> #define ELEMENT_MT_SAFE(x)
>>>>>>
>>>>>> /* Assume CLICK_USERLEVEL unless otherwise defined. */
>>>>>> #if !defined(CLICK_USERLEVEL) && !defined(CLICK_TOOL) &&
>>>>>> !defined(CLICK_LINUXMODULE) && !defined(CLICK_BSDMODULE)
>>>>>> # define CLICK_USERLEVEL 1
>>>>>> #endif
>>>>>>
>>>>>> /* Define stuff under a Linux module. */
>>>>>> #ifdef CLICK_LINUXMODULE
>>>>>> # include <click/config-linuxmodule.h>
>>>>>> #endif
>>>>>>
>>>>>> /* Define stuff under a FreeBSD module. */
>>>>>> #ifdef CLICK_BSDMODULE
>>>>>> # include <click/config-bsdmodule.h>
>>>>>> #endif
>>>>>>
>>>>>> /* Define stuff under nsclick. */
>>>>>> #ifdef CLICK_NS
>>>>>> # include <click/config-ns.h>
>>>>>> #endif
>>>>>>
>>>>>> /* Define stuff under tools or a user-level driver. */
>>>>>> #if defined(CLICK_USERLEVEL) || defined(CLICK_TOOL)
>>>>>> # include <click/config-userlevel.h>
>>>>>> #endif
>>>>>>
>>>>>> #endif /* CLICK_CONFIG_H */
>>>>>> _______________________________________________
>>>>>> click mailing list
>>>>>> click at amsterdam.lcs.mit.edu
>>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>> _______________________________________________
>>>>> click mailing list
>>>>> click at amsterdam.lcs.mit.edu
>>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>>>>>
>>>
>
More information about the click
mailing list