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; +} | 
