From mboxrd@z Thu Jan 1 00:00:00 1970 From: martin.brugnara@gmail.com (Martin Brugnara) Date: Mon, 23 Dec 2013 11:23:07 +0100 Subject: Linux-wireless: why use macro to call functions Message-ID: <52b80f05.c7b60e0a.2515.5c5e@mx.google.com> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org Hi, Why here is used a macro instead of an inline func. Thanks, Martin -----Original Message----- From: "Daniel Baluta" Sent: ?23/?12/?2013 08.27 To: "Fred Chou" Cc: "kernelnewbies" Subject: Re: Linux-wireless: why use macro to call functions On Mon, Dec 23, 2013 at 8:05 AM, Fred Chou wrote: > Hi, > > I was studying the Linux wireless subsystem code and noticed this code (in > ieee80211_rx_handlers): > > It first defines the macro: > > #define CALL_RXH(rxh) \ > do { \ > res = rxh(rx); \ > if (res != RX_CONTINUE) \ > goto rxh_next; \ > } while (0); > > Then the macro is used to call a series of functions: > > CALL_RXH(ieee80211_rx_h_check_more_data) > CALL_RXH(ieee80211_rx_h_uapsd_and_pspoll) > CALL_RXH(ieee80211_rx_h_sta_process) > CALL_RXH(ieee80211_rx_h_decrypt) > CALL_RXH(ieee80211_rx_h_defragment) > CALL_RXH(ieee80211_rx_h_michael_mic_verify) > > > My question is, why not just call the functions directly like: > > ieee80211_rx_h_check_more_data(rx); > ieee80211_rx_h_uapsd_and_pspoll(rx); > > ... > > Is it just for the sake of outlining the code for easy reading? Appreciate > if anyone can explain. Thanks! Hi, As you can see above the macro does also error checking.I don't necessarily think that the code is easier to read, but it can save you some typing. thanks, Daniel. _______________________________________________ Kernelnewbies mailing list Kernelnewbies at kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20131223/49f72ac0/attachment.html