All of lore.kernel.org
 help / color / mirror / Atom feed
* Linux-wireless: why use macro to call functions
@ 2013-12-23 10:23 Martin Brugnara
  2013-12-23 12:03 ` Bernd Petrovitsch
  0 siblings, 1 reply; 8+ messages in thread
From: Martin Brugnara @ 2013-12-23 10:23 UTC (permalink / raw)
  To: kernelnewbies

Hi,

Why here is used a macro instead of an inline func.

Thanks,
Martin

-----Original Message-----
From: "Daniel Baluta" <daniel.baluta@gmail.com>
Sent: ?23/?12/?2013 08.27
To: "Fred Chou" <fred.chou.nd@gmail.com>
Cc: "kernelnewbies" <kernelnewbies@kernelnewbies.org>
Subject: Re: Linux-wireless: why use macro to call functions

On Mon, Dec 23, 2013 at 8:05 AM, Fred Chou <fred.chou.nd@gmail.com> 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 

^ permalink raw reply	[flat|nested] 8+ messages in thread
* Linux-wireless: why use macro to call functions
@ 2013-12-23  6:05 Fred Chou
  2013-12-23  7:25 ` Daniel Baluta
  0 siblings, 1 reply; 8+ messages in thread
From: Fred Chou @ 2013-12-23  6:05 UTC (permalink / raw)
  To: kernelnewbies

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!


Regards,
Fred
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20131223/5bc84a1b/attachment.html 

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-12-24 16:47 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-23 10:23 Linux-wireless: why use macro to call functions Martin Brugnara
2013-12-23 12:03 ` Bernd Petrovitsch
2013-12-24 12:19   ` Fred Chou
2013-12-24 13:35     ` Greg Freemyer
2013-12-24 13:48     ` Adrian Ratnapala
2013-12-24 16:47       ` Valdis.Kletnieks at vt.edu
  -- strict thread matches above, loose matches on Subject: below --
2013-12-23  6:05 Fred Chou
2013-12-23  7:25 ` Daniel Baluta

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.