diff options
author | iwasaki <iwasaki@FreeBSD.org> | 2000-04-26 15:11:17 +0000 |
---|---|---|
committer | iwasaki <iwasaki@FreeBSD.org> | 2000-04-26 15:11:17 +0000 |
commit | 669bd2a6bbbb76c7c6f90d331a5b21ebb1fcf03e (patch) | |
tree | 2fa4df623ae1ba3d91d0baa4fdde377bcef5ccef /usr.sbin/pccard/pccardd/util.c | |
parent | 76a887370c446dcbc98064373c05fde9411fb1f1 (diff) | |
download | FreeBSD-src-669bd2a6bbbb76c7c6f90d331a5b21ebb1fcf03e.zip FreeBSD-src-669bd2a6bbbb76c7c6f90d331a5b21ebb1fcf03e.tar.gz |
MFPAO3. Add support multi io window. This code support following cards;
Accton UE2212
PLANET-SMART-COM-CREDITCARD-2000
Melco LPC-T
ME-3000II
Laneed LD-CDY
Melco LPC3-TX
Submitted by: MIHIRA Sanpei Yoshiro <sanpei@sanpei.org>
Obtained from: PAO3
Diffstat (limited to 'usr.sbin/pccard/pccardd/util.c')
-rw-r--r-- | usr.sbin/pccard/pccardd/util.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/usr.sbin/pccard/pccardd/util.c b/usr.sbin/pccard/pccardd/util.c index 6f42f60..d720221 100644 --- a/usr.sbin/pccard/pccardd/util.c +++ b/usr.sbin/pccard/pccardd/util.c @@ -150,17 +150,18 @@ newstr(char *p) * least count number. */ int -bit_fns(bitstr_t *nm, int nbits, int count) +bit_fns(bitstr_t *nm, int nbits, int count, int step) { - int i; + int i, j; int found = 0; - for (i = 0; i < nbits; i++) - if (bit_test(nm, i)) { - if (++found == count) - return (i - count + 1); - } else - found = 0; + for (i = 0; i < nbits; i += step) + for (j = i, found = 0; j < nbits; j++) + if (bit_test(nm, j)) { + if (++found == count) + return i; + } else + break; return (-1); } @@ -172,10 +173,10 @@ alloc_memory(int size) { int i; - i = bit_fns(mem_avail, MEMBLKS, size / MEMUNIT); + i = bit_fns(mem_avail, MEMBLKS, size / MEMUNIT + (size % MEMUNIT != 0), 1); if (i < 0) return (0); - bit_nclear(mem_avail, i, size / MEMUNIT); + bit_nclear(mem_avail, i, i + size / MEMUNIT + (size % MEMUNIT != 0) - 1); return (BIT2MEM(i)); } |