diff options
-rw-r--r-- | include/strings.h | 2 | ||||
-rw-r--r-- | src/misc/ffsl.c | 7 | ||||
-rw-r--r-- | src/misc/ffsll.c | 7 |
3 files changed, 16 insertions, 0 deletions
diff --git a/include/strings.h b/include/strings.h index 4d7d69c3..db0960b4 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 00000000..0105c66a --- /dev/null +++ b/src/misc/ffsl.c @@ -0,0 +1,7 @@ +#include <strings.h> +#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 00000000..0c5ced82 --- /dev/null +++ b/src/misc/ffsll.c @@ -0,0 +1,7 @@ +#include <strings.h> +#include "atomic.h" + +int ffsll(long long i) +{ + return i ? a_ctz_64(i)+1 : 0; +} |