Re Likely and Unlikely Macro
Hi In lxr, I saw the likely and unlikely macro defined as (compiler.h) # define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1)) 116# endif 117# ifndef unlikely 118# define unlikely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 0)) 119# endif 120 ..... some other defines #else 146# define likely(x) __builtin_expect(!!(x), 1) 147# define unlikely(x) __builtin_expect(!!(x), 0) 148#endif I cannot understand the intention behind !!(x). Please can you let me know why !!(x) is required here. TIA -- ~/asd
It's a shorter way of casting a pointer to an integer with boolean values. On Mon, Oct 10, 2011 at 11:49:54AM +0530, Asutosh Das wrote:
Hi In lxr, I saw the likely and unlikely macro defined as (compiler.h)
# define likely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 1)) 116# endif 117# ifndef unlikely 118# define unlikely(x) (__builtin_constant_p(x) ? !!(x) : __branch_check__(x, 0)) 119# endif 120 ..... some other defines
#else 146# define likely(x) __builtin_expect(!!(x), 1) 147# define unlikely(x) __builtin_expect(!!(x), 0) 148#endif
I cannot understand the intention behind !!(x). Please can you let me know why !!(x) is required here.
TIA -- ~/asd
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Hi :) On Mon, Oct 10, 2011 at 13:19, Asutosh Das <das.asutosh@gmail.com> wrote:
I cannot understand the intention behind !!(x). Please can you let me know why !!(x) is required here.
Assume x is 100, so !x is 0, right? Further !!x is ! ( !x), correct? Then we have ! (0) which is 1. Thus, it's quick practical way to make any value to be just 0 or 1, "true" or "false" -- regards, Mulyadi Santosa Freelance Linux trainer and consultant blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
Gottcha ... Thanks guys :) On 10 October 2011 21:22, Mulyadi Santosa <mulyadi.santosa@gmail.com> wrote:
Hi :)
On Mon, Oct 10, 2011 at 13:19, Asutosh Das <das.asutosh@gmail.com> wrote:
I cannot understand the intention behind !!(x). Please can you let me know why !!(x) is required here.
Assume x is 100, so !x is 0, right? Further !!x is ! ( !x), correct? Then we have ! (0) which is 1.
Thus, it's quick practical way to make any value to be just 0 or 1, "true" or "false"
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
-- Thank you, Warm Regards, Asutosh Das # (91) 9049 000 969
Hi, likely and unlikely macros are used to help branch prediction, which in turn improve performance. so the branch which is unlikely will not be predicted at the execution time. one can refer to : Intel manual 248966 Thanks, ~Pankaj Singh On Tue, Oct 11, 2011 at 9:48 AM, Asutosh Das <das.asutosh@gmail.com> wrote:
Gottcha ... Thanks guys :)
On 10 October 2011 21:22, Mulyadi Santosa <mulyadi.santosa@gmail.com> wrote:
Hi :)
On Mon, Oct 10, 2011 at 13:19, Asutosh Das <das.asutosh@gmail.com> wrote:
I cannot understand the intention behind !!(x). Please can you let me know why !!(x) is required here.
Assume x is 100, so !x is 0, right? Further !!x is ! ( !x), correct? Then we have ! (0) which is 1.
Thus, it's quick practical way to make any value to be just 0 or 1, "true" or "false"
-- regards,
Mulyadi Santosa Freelance Linux trainer and consultant
blog: the-hydra.blogspot.com training: mulyaditraining.blogspot.com
-- Thank you, Warm Regards, Asutosh Das # (91) 9049 000 969
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Pankaj SIngh Phone No: 9921865080
participants (4)
-
Asutosh Das -
bob -
Mulyadi Santosa -
pankaj singh