On Thursday 07 March 2013 16:39:33 Alexander Stadler wrote: > Am 07.03.2013 16:24, schrieb Matthijs Kooijman: > > Hi Alexander, > > > >> The next thought was that ARRAY_SIZE macro must get an array and not > > > >> an pointer, so I tried it with: > > That's exactly right. An array's size is not stored in memory, so you > > can only get at it at compile time. However, then you must actually pass > > the array, not a pointer to the array (which could potentially point to > > different arrays). > > > >> static void __init board_generic_setup(struct gpio_led *leds_gpio, size_t > >> leds_gpio_size, struct gpio_keys_button *gpio_keys, size_t > >> gpio_keys_size, struct mdio_board_info *mdio0_info, size_t > >> mdio0_info_size) > >> > >> board_generic_setup(board_leds_gpio,ARRAY_SIZE(board_leds_gpio),board_gpi > >> o_keys,ARRAY_SIZE(board_gpio_keys),board_mdio0_info,ARRAY_SIZE(board_mdio > >> 0_info)); > And no const(s)? I'm a bit confused because mdio_board_info seems to use > const struct but ath79_register_leds_gpio does not.
In general it's good to inform/promise the compiler when the program is not going to change data (using const). However, you'll have to adjust to the function definition types of the other functions that you are going to use in your new function. When compiled with the appropriate flags, when passing a const pointer to a function as argument, which is by definition typed non- const, it should produce a warning/error. The latter can be avoided by casting the const away, but what's the point in that... This might be interesting reading http://publications.gbdirect.co.uk/c_book/chapter8/const_and_volatile.html. > > This would indeed be a sane way to handle this. > > > >> No problems to expect from the functions like ath79_register_leds_gpio > >> when getting the pointer instead the array? > > > > This should work, since that function also has a size parameter (for the > > same reason). > > The functions use unsigned for the size parameter, not size_t. But I think > "my" ARRAY_SIZE will return size_t and so this will be the better approach? size_t is intended to represent memory related quantities, and is preferred in that regard. > > Gr. > > > > Matthijs > > Thanks > > Alex > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel Regards, Tijs _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel