diff --git a/include/strings.h b/include/strings.h index 4d7d69c31ab06564e2fcfa19a7d3cc2f204ede0f..db0960b4eb87a5d5883d7c94ad6d9e5dca9d9633 100644 --- a/include/strings.h +++ b/include/strings.h @@ -22,6 +22,8 @@ char *rindex (const char *, int); #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) int ffs (int); +int ffsl (long); +int ffsll (long long); #endif int strcasecmp (const char *, const char *); diff --git a/src/misc/ffsl.c b/src/misc/ffsl.c new file mode 100644 index 0000000000000000000000000000000000000000..0105c66af9d18946ce9b3f8616c8baa6c7a55cde --- /dev/null +++ b/src/misc/ffsl.c @@ -0,0 +1,7 @@ +#include +#include "atomic.h" + +int ffsl(long i) +{ + return i ? a_ctz_l(i)+1 : 0; +} diff --git a/src/misc/ffsll.c b/src/misc/ffsll.c new file mode 100644 index 0000000000000000000000000000000000000000..0c5ced826657993210a021f49d76560a03a416d6 --- /dev/null +++ b/src/misc/ffsll.c @@ -0,0 +1,7 @@ +#include +#include "atomic.h" + +int ffsll(long long i) +{ + return i ? a_ctz_64(i)+1 : 0; +}