summaryrefslogtreecommitdiff
path: root/src/lib/libc/string/ffsl.c
diff options
context:
space:
mode:
authorclaudio <>2025-10-24 11:30:06 +0000
committerclaudio <>2025-10-24 11:30:06 +0000
commit8cbd4e746f40c750809e34d04c0298e0a5ff6f42 (patch)
treede417cfcebbdd39fd868b5b5a0569e386e25b92f /src/lib/libc/string/ffsl.c
parent2e803cbe8e599c0ae52e9dda44c3d22e3dec105d (diff)
downloadopenbsd-8cbd4e746f40c750809e34d04c0298e0a5ff6f42.tar.gz
openbsd-8cbd4e746f40c750809e34d04c0298e0a5ff6f42.tar.bz2
openbsd-8cbd4e746f40c750809e34d04c0298e0a5ff6f42.zip
Implement ffsl() and ffsll() using the compiler builtin __builtin_ctzl
now that all archs use at least gcc4. ffsl() and ffsll() are now part of POSIX. OK deraadt@, input from miod@ and jsg@
Diffstat (limited to 'src/lib/libc/string/ffsl.c')
-rw-r--r--src/lib/libc/string/ffsl.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/lib/libc/string/ffsl.c b/src/lib/libc/string/ffsl.c
new file mode 100644
index 0000000000..182318c3d6
--- /dev/null
+++ b/src/lib/libc/string/ffsl.c
@@ -0,0 +1,17 @@
1/* $OpenBSD: ffsl.c,v 1.1 2025/10/24 11:30:06 claudio Exp $ */
2
3/*
4 * Public domain.
5 * Written by Claudio Jeker.
6 */
7
8#include <strings.h>
9
10/*
11 * ffs -- find the first (least significant) bit set
12 */
13int
14ffsl(long mask)
15{
16 return (mask ? __builtin_ctzl(mask) + 1 : 0);
17}