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 *,

Reply via email to