Changeset 794 for Whitix/branches

Show
Ignore:
Timestamp:
07/13/08 20:51:29 (5 months ago)
Author:
mwhitworth
Message:

Add BitFindFirstZero function for ext3.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • Whitix/branches/fs/include/bitmap.h

    r608 r794  
    2929int BmapGetBit(void* array,DWORD index); 
    3030 
     31/* Adapted from Linux. */ 
     32static inline int BitFindFirstZero(void* array, int size) 
     33{ 
     34        int d0, d1, d2; /* Temporary variables. */ 
     35        int result; 
     36         
     37        if (!size) 
     38                return 0; 
     39                 
     40        asm volatile( 
     41        "movl $-1,%%eax\n\t" 
     42        "xorl %%edx,%%edx\n\t" 
     43        "repe; scasl\n\t" 
     44        "je 1f\n\t" 
     45        "xorl -4(%%edi),%%eax\n\t" 
     46        "subl $4,%%edi\n\t" 
     47        "bsfl %%eax,%%edx\n" 
     48        "1:\tsubl %%ebx,%%edi\n\t" 
     49        "shll $3,%%edi\n\t" 
     50        "addl %%edi,%%edx" 
     51        :"=d" (result), "=&c" (d0), "=&D" (d1), "=&a" (d2) 
     52        :"1" ((size + 31) >> 5), "2" (array), "b" (array) : "memory"); 
     53 
     54        return result; 
     55} 
     56 
    3157#endif