diff options
Diffstat (limited to 'apps/snmpnetstat/ffs.c')
-rw-r--r-- | apps/snmpnetstat/ffs.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/apps/snmpnetstat/ffs.c b/apps/snmpnetstat/ffs.c new file mode 100644 index 0000000..5997339 --- /dev/null +++ b/apps/snmpnetstat/ffs.c @@ -0,0 +1,38 @@ +/* $OpenBSD: ffs.c,v 1.7 2005/08/08 08:05:37 espie Exp $ */ + +/* + * Public domain. + * Written by Dale Rahn. + */ + +/* + * ffs -- vax ffs instruction + */ +int +_ffs(int mask) +{ + int bit; + unsigned int r = mask; + static const signed char t[16] = { + -28, 1, 2, 1, + 3, 1, 2, 1, + 4, 1, 2, 1, + 3, 1, 2, 1 + }; + + bit = 0; + if (!(r & 0xffff)) { + bit += 16; + r >>= 16; + } + if (!(r & 0xff)) { + bit += 8; + r >>= 8; + } + if (!(r & 0xf)) { + bit += 4; + r >>= 4; + } + + return (bit + t[ r & 0xf ]); +} |