[Click] click-devirtualize and kernel 2.6

Eddie Kohler kohler at cs.ucla.edu
Mon Mar 3 12:18:28 EST 2008


Hi Beyers,

This was just a bug; it should now be fixed.

Eddie


Beyers Cronje wrote:
> Hi Eddie,
> 
> Just did a test on one of my own elements and I've run into some errors 
> again. Are there any recommendations or "gotchas" to know of when coding 
> a custom element in order for click-devirtualize to support it?
> 
> Here is the error I get:
> 
> [root at slacker click]# click-devirtualize -f conf/le1000.click | click
> While loading package 'clickdv_t_2COpEyFhZH8rwZZl3u6c':
>   /usr/local/bin/click-buildtool makepackage -q -C /tmp/clicktmp30201/ 
> -t userlevel  -w -fno-access-control  clickdv_t_2COpEyFhZH8rwZZl3u6c 
> clickdv_t_2COpEyFhZH8rwZZl3u6c.u.cc 1>&2
>   CXX clickdv_t_2COpEyFhZH8rwZZl3u6c.u.cc
> clickdv_t_2COpEyFhZH8rwZZl3u6c.u.cc: In member function 'Packet* 
> UDevE1000_a_afd::input_pull(int) const':
> clickdv_t_2COpEyFhZH8rwZZl3u6c.u.cc:111: error: 'i' was not declared in 
> this scope
> make[1]: *** [clickdv_t_2COpEyFhZH8rwZZl3u6c.u.uo] Error 1
> 
> 
> Here is the section in the output file that click-devirtualize generates 
> that obviously causes the error:
> 
> inline Packet *
> UDevE1000_a_afd::input_pull(int) const
> {
>   return input(i).pull();
> }
> 
> 
> If I just manually change to UDevE1000_a_afd::input_pull(int i) I get 
> further, but then it spews out a whole list of other errors, so I'm not 
> sure what the ramifications are by manually changing the output file of 
> click-devirtualize.
> 
> The UDevE1000 element has no elements connected to its input port in the 
> tested config, its port_count method is defined as:
> const char *port_count() const        { return "0-1/0-1"; }
> During initialization I check for input port:
>       if (ninputs() == 1)
>         _tx = true;  // TX path enabled
> and then in run_task() something similar to:
>       if (_tx)
>           p = input(0).pull();
> 
> 
> It seems Specializer::create_class(SpecializedClass &spc) line correctly 
> calls
> "  new_cxxc->defun
>     (CxxFunction("input_pull", false, "inline Packet *",
>          (_ninputs[eindex] ? "(int i) const" : "(int) const"),
>          "", ""));
> "
> but the logic to determine if input_pull is alive might be suspect.
> 
> Beyers
> 
> On Feb 7, 2008 6:53 PM, Beyers Cronje <bcronje at gmail.com 
> <mailto:bcronje at gmail.com>> wrote:
> 
>     Thanks Eddie, the simple script now runs 100% !
> 
>     I'll let you know if more complex scripts give any problems.
> 
> 
> 
>     On Feb 7, 2008 9:56 AM, Eddie Kohler <kohler at cs.ucla.edu
>     <mailto:kohler at cs.ucla.edu>> wrote:
> 
>         There were some parser errors where FromDevice confused Click.
>          I've fixed a
>         handful of them; maybe that helps?
> 
>         Eddie
> 
> 
> 
>         Beyers Cronje wrote:
>          > I'm getting similar errors when using without the -u tag.
>          >
>          > [root at probe01 click]# cat conf/idle.click
>          > FromDevice(eth0) -> Discard;
>          >
>          > [root at probe01 click]# click-devirtualize -f conf/idle.click >
>         test.click
>          > [root at probe01 click]# click test.click
>          > While loading package 'clickdv_6xFcmX7L8NcDX9nub1PwCb':
>          >   /usr/local/bin/click-buildtool makepackage -q -C
>         /tmp/clicktmp3563/ -t
>          > userlevel  -w -fno-access-control  clickdv_6xFcmX7L8NcDX9nub1PwCb
>          > clickdv_6xFcmX7L8NcDX9nub1PwCb.u.cc 1>&2
>          >   CXX clickdv_6xFcmX7L8NcDX9nub1PwCb.u.cc
>          > In file included from clickdv_6xFcmX7L8NcDX9nub1PwCb.u.cc:9:
>          > clickdv_6xFcmX7L8NcDX9nub1PwCb.u.hh:30:2: error: #endif
>         without #if
>          > clickdv_6xFcmX7L8NcDX9nub1PwCb.u.cc:116:23: error:
>         fakepcap.hh: No such file
>          > or directory
>          > clickdv_6xFcmX7L8NcDX9nub1PwCb.u.cc:136:2: error: #endif
>         without #if
>          > clickdv_6xFcmX7L8NcDX9nub1PwCb.u.cc: In member function
>         âvirtual void
>          > FromDevice_a_aFromDevice_a1::selected(int)â:
>          > clickdv_6xFcmX7L8NcDX9nub1PwCb.u.cc:172: error:
>         âfake_pcap_force_ipâ was not
>          > declared in this scope
>          > make[1]: *** [clickdv_6xFcmX7L8NcDX9nub1PwCb.u.uo] Error 1
>          > make: *** [clickdv_6xFcmX7L8NcDX9nub1PwCb.uo] Error 2
>          >   package
>         /tmp/clicktmp3563/clickdv_6xFcmX7L8NcDX9nub1PwCb.uo: cannot open
>          > shared object file: No such file or directory
>          > requirement 'clickdv_6xFcmX7L8NcDX9nub1PwCb' not available
>          > conf/idle.click:1: unknown element class
>         'FromDevice@@FromDevice at 1'
>          > conf/idle.click:1: unknown element class 'Discard@@Discard at 2'
>          >
>          >
>          >
>          > On Feb 2, 2008 1:23 AM, Giovanni Di Stasi <gdistasi at gmail.com
>         <mailto:gdistasi at gmail.com>> wrote:
>          >
>          >> Il Tuesday 29 January 2008 20:41:25 hai scritto:
>          >>> Current git should work in both cases; I just verified user
>         level (with
>          >> a
>          >>> simple config).
>          >>>
>          >>> Eddie
>          >>
>          >> I don't know why, but in my case it doesn't work. I get
>         compile errors
>          >> like
>          >> these:
>          >>
>          >> + make clickdv_mODuB8fcPyH3Psd1lP2E4b.uo
>          >> make CLICK_PACKAGE_MAKING=userlevel
>         clickdv_mODuB8fcPyH3Psd1lP2E4b.uo
>          >> make[1]: Entering directory `/tmp/clicktmp4366'
>          >>  CXX clickdv_mODuB8fcPyH3Psd1lP2E4b.u_.cc
>          >> clickdv_mODuB8fcPyH3Psd1lP2E4b.u_.cc:9:45: error:
>          >> clickdv_mODuB8fcPyH3Psd1lP2E4b.hh: Nessun file o directory
>          >> clickdv_mODuB8fcPyH3Psd1lP2E4b.u_.cc:110:20: error:
>         utils.hh: no file or
>          >> directory
>          >> clickdv_mODuB8fcPyH3Psd1lP2E4b.u_.cc:289:25: error:
>         fccapacket.hh: no file
>          >> or
>          >> directory
>          >> clickdv_mODuB8fcPyH3Psd1lP2E4b.u_.cc:605:18: error: def.hh:
>         no file or
>          >> directory
>          >> clickdv_mODuB8fcPyH3Psd1lP2E4b.u_.cc:1153:23: error:
>         fakepcap.hh: no file
>          >> or
>          >> directory
>          >>
>          >> fccapacket.hh, def.hh are header file I include in some of
>         my elements.
>          >> I launched click-devirtualize in this way:
>          >>
>          >> click-devirtualize -u -f click.conf
>          >>
>          >> Everything goes well when I launch click with that
>         configuration.
>          >> Without devirtualization it's very difficult to achieve good
>         performance.
>          >>
>          >>
>          >> I also tried this simple configuration: FromDevice(eth0) ->
>         Discard ->
>          >> Idle
>          >> and tried:
>          >> click-devirtualize -u -f file_conf | click,
>          >> I got compile errors in this case too.
>          >> Is this the right way to use click-devirtualize?
>          >>
>          >> Thanks.
>          >> _______________________________________________
>          >> click mailing list
>          >> click at amsterdam.lcs.mit.edu <mailto:click at amsterdam.lcs.mit.edu>
>          >> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
>          >>
>          > _______________________________________________
>          > click mailing list
>          > click at amsterdam.lcs.mit.edu <mailto:click at amsterdam.lcs.mit.edu>
>          > https://amsterdam.lcs.mit.edu/mailman/listinfo/click
> 
> 
> 



More information about the click mailing list