Hi, clang complains when the function is declared with a fixed array size in a parameter while the prototype is unbounded, like this:
/usr/src/sys/net/pf.c:4353:54: error: argument 'sns' of type 'struct pf_src_node *[4]' with mismatched bound [-Werror,-Warray-parameter] struct pf_rule_actions *act, struct pf_src_node *sns[PF_SN_MAX]) ^ /usr/src/sys/net/pf.c:203:28: note: previously declared as 'struct pf_src_node *[]' here struct pf_src_node *[]); ^ 1 error generated. We have a few of that, and was wondering what the better solution is. clang apparently accepts using * instead of []. The alternative would be to hardcode the size in the prototype as well. Here's a diff for a three files for the first version, as example. Which version is saner? Patrick diff --git a/sys/dev/ic/ar5008.c b/sys/dev/ic/ar5008.c index cad0f142210..4c0126fd6d6 100644 --- a/sys/dev/ic/ar5008.c +++ b/sys/dev/ic/ar5008.c @@ -111,7 +111,7 @@ void ar5008_next_calib(struct athn_softc *); void ar5008_calib_iq(struct athn_softc *); void ar5008_calib_adc_gain(struct athn_softc *); void ar5008_calib_adc_dc_off(struct athn_softc *); -void ar5008_write_txpower(struct athn_softc *, int16_t power[]); +void ar5008_write_txpower(struct athn_softc *, int16_t *); void ar5008_set_viterbi_mask(struct athn_softc *, int); void ar5008_hw_init(struct athn_softc *, struct ieee80211_channel *, struct ieee80211_channel *); @@ -119,9 +119,9 @@ uint8_t ar5008_get_vpd(uint8_t, const uint8_t *, const uint8_t *, int); void ar5008_get_pdadcs(struct athn_softc *, uint8_t, struct athn_pier *, struct athn_pier *, int, int, uint8_t, uint8_t *, uint8_t *); void ar5008_get_lg_tpow(struct athn_softc *, struct ieee80211_channel *, - uint8_t, const struct ar_cal_target_power_leg *, int, uint8_t[]); + uint8_t, const struct ar_cal_target_power_leg *, int, uint8_t *); void ar5008_get_ht_tpow(struct athn_softc *, struct ieee80211_channel *, - uint8_t, const struct ar_cal_target_power_ht *, int, uint8_t[]); + uint8_t, const struct ar_cal_target_power_ht *, int, uint8_t *); void ar5008_set_noise_immunity_level(struct athn_softc *, int); void ar5008_enable_ofdm_weak_signal(struct athn_softc *); void ar5008_disable_ofdm_weak_signal(struct athn_softc *); diff --git a/sys/dev/ic/ar9003.c b/sys/dev/ic/ar9003.c index 565ea27c701..7ec3131f86b 100644 --- a/sys/dev/ic/ar9003.c +++ b/sys/dev/ic/ar9003.c @@ -114,7 +114,7 @@ int ar9003_init_calib(struct athn_softc *); void ar9003_do_calib(struct athn_softc *); void ar9003_next_calib(struct athn_softc *); void ar9003_calib_iq(struct athn_softc *); -int ar9003_get_iq_corr(struct athn_softc *, int32_t[], int32_t[]); +int ar9003_get_iq_corr(struct athn_softc *, int32_t *, int32_t *); int ar9003_calib_tx_iq(struct athn_softc *); void ar9003_paprd_calib(struct athn_softc *, struct ieee80211_channel *); int ar9003_get_desired_txgain(struct athn_softc *, int, int); @@ -126,17 +126,17 @@ int ar9003_compute_predistortion(struct athn_softc *, const uint32_t *, void ar9003_enable_predistorter(struct athn_softc *, int); void ar9003_paprd_enable(struct athn_softc *); void ar9003_paprd_tx_tone_done(struct athn_softc *); -void ar9003_write_txpower(struct athn_softc *, int16_t power[]); +void ar9003_write_txpower(struct athn_softc *, int16_t *); void ar9003_reset_rx_gain(struct athn_softc *, struct ieee80211_channel *); void ar9003_reset_tx_gain(struct athn_softc *, struct ieee80211_channel *); void ar9003_hw_init(struct athn_softc *, struct ieee80211_channel *, struct ieee80211_channel *); void ar9003_get_lg_tpow(struct athn_softc *, struct ieee80211_channel *, uint8_t, const uint8_t *, const struct ar_cal_target_power_leg *, - int, uint8_t[]); + int, uint8_t *); void ar9003_get_ht_tpow(struct athn_softc *, struct ieee80211_channel *, uint8_t, const uint8_t *, const struct ar_cal_target_power_ht *, - int, uint8_t[]); + int, uint8_t *); void ar9003_set_noise_immunity_level(struct athn_softc *, int); void ar9003_enable_ofdm_weak_signal(struct athn_softc *); void ar9003_disable_ofdm_weak_signal(struct athn_softc *); diff --git a/sys/dev/ic/rtwn.c b/sys/dev/ic/rtwn.c index 2d7551eaef3..d7f25d59919 100644 --- a/sys/dev/ic/rtwn.c +++ b/sys/dev/ic/rtwn.c @@ -151,19 +151,19 @@ void rtwn_pa_bias_init(struct rtwn_softc *); void rtwn_rxfilter_init(struct rtwn_softc *); void rtwn_edca_init(struct rtwn_softc *); void rtwn_rate_fallback_init(struct rtwn_softc *); -void rtwn_write_txpower(struct rtwn_softc *, int, uint16_t[]); +void rtwn_write_txpower(struct rtwn_softc *, int, uint16_t *); void rtwn_get_txpower(struct rtwn_softc *sc, int, struct ieee80211_channel *, struct ieee80211_channel *, - uint16_t[]); + uint16_t *); void rtwn_r92c_get_txpower(struct rtwn_softc *, int, struct ieee80211_channel *, struct ieee80211_channel *, - uint16_t[]); + uint16_t *); void rtwn_r92e_get_txpower(struct rtwn_softc *, int, struct ieee80211_channel *, - struct ieee80211_channel *, uint16_t[]); + struct ieee80211_channel *, uint16_t *); void rtwn_r88e_get_txpower(struct rtwn_softc *, int, struct ieee80211_channel *, - struct ieee80211_channel *, uint16_t[]); + struct ieee80211_channel *, uint16_t *); void rtwn_set_txpower(struct rtwn_softc *, struct ieee80211_channel *, struct ieee80211_channel *); void rtwn_set_chan(struct rtwn_softc *,