This is the mail archive of the ecos-devel@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: why use the SA1110-USB-driver a static /dev/usbs... definition ???


On Mon, Jun 27, 2005 at 02:46:23PM +0200, oliver munz @ s p e a g wrote:
> Hello
> 
> I'm writing a device-driver on basis of the SA1110-USB-driver.
> First I made a package without functionality. Then I tryed to get a handel
> of my driver. It dosent worked. There was also no entry in the
> ..._install\lib\\libextras.a.
> 
> After houres of searching, I found, that the reason is the static definition
> of the ..._devtab_entry. After removing the "static" key-word, my
> test-program found his handels and does some pseudo inits...
> 
> The question for me is now, what is the reason for a static devtab?
> 
> The original source is:
> 
> "...\ecos\packages\devs\usb\sa11x0\current\src\usbs_sa11x0_data.cxx"
> 
> static CHAR_DEVIO_TABLE(usbs_sa11x0_ep0_devtab_functions,
>    &cyg_devio_cwrite,
>    &cyg_devio_cread,
>    &cyg_devio_select,
>    &usbs_devtab_get_config,
>    &usbs_devtab_set_config);
> 
> static CHAR_DEVTAB_ENTRY(usbs_sa11x0_ep0_devtab_entry,
>    CYGDAT_DEVS_USB_SA11X0_DEVTAB_BASENAME "0c",
>    0,
>    &usbs_sa11x0_ep0_devtab_functions,
>    &usbs_sa11x0_devtab_ep0_init,
>    0,
>    (void*) &usbs_sa11x0_ep0);

This sounds like a garbage collection problem. Without the static the
variables the macros define will be global. So the compiler cannot
throw it away if its not referenced within the local file. If its
declared static and nothing references it within the file the compiler
has probably decided the variables are not needed and throw them
away. Hence they don't end up in libextras.a.

What version of gcc are you using? Something newish?

        Andrew


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]