[PATCH] clk: don't use __initconst for non-const arrays

Uwe Kleine-König u.kleine-koenig at pengutronix.de
Thu Sep 11 15:04:45 PDT 2014


Hello,

On Thu, Sep 11, 2014 at 11:04:31PM +0200, Uwe Kleine-König wrote:
>  /* Mux parent lists. */
> -static const char *fin_pll_p[] __initconst = {
> +static const char *fin_pll_p[] __initdata = {
>  	"xxti",
>  	"xusbxti"
>  };
As discussed with Tomasz on irc: The sad thing here is that for this
array only 8 bytes are freed when .init.rodata is thrown away (that is
two pointers). The actual data---5 + 8 bytes + maybe aligning---isn't
freed though.

We wondered if there is a nice and easy way to throw away the
characters, too.

The only way I currently see is:

	const char xxti[] __initconst = "xxti";
	...

	static const char *fin_pll_p[] __initdata = {
		xxti,
		...
	};

but this definitively doesn't qualify as "nice and easy". Is there an
alternative?

Best regards
Uwe

-- 
Pengutronix e.K.                           | Uwe Kleine-König            |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |



More information about the Linux-rockchip mailing list