Changeset 8829e33 in mainline for uspace/srv/fs/minixfs/mfs_balloc.c


Ignore:
Timestamp:
2011-04-05T17:07:31Z (13 years ago)
Author:
Maurizio Lombardi <m.lombardi85@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
af8ce880
Parents:
a791a96
Message:

Fixes to mfs_balloc.c :

  • Remove magic numbers
  • Fix incorrect index calculation in mfs_alloc_bit()
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/fs/minixfs/mfs_balloc.c

    ra791a96 r8829e33  
    8181        bitchunk_t *ptr = b->data;
    8282        bitchunk_t chunk;
    83 
    84         chunk = conv32(sbi->native, ptr[idx / 32]);
    85         chunk &= ~(1 << (idx % 32));
    86         ptr[idx / 32] = conv32(sbi->native, chunk);
     83        const size_t chunk_bits = sizeof(bitchunk_t) * 8;
     84
     85        chunk = conv32(sbi->native, ptr[idx / chunk_bits]);
     86        chunk &= ~(1 << (idx % chunk_bits));
     87        ptr[idx / chunk_bits] = conv32(sbi->native, chunk);
    8788        b->dirty = true;
    8889        r = EOK;
     
    140141                }
    141142
    142                 /*Free bit found, compute real index*/
    143                 *idx = (freebit + sbi->block_size * 8 * i);
     143                /*Free bit found in this block, compute the real index*/
     144                *idx = (freebit + bits_per_block * i);
    144145                if (*idx > limit) {
    145146                        /*Index is beyond the limit, it is invalid*/
     
    148149                }
    149150
    150                 *search = i * bits_per_block + *idx;
     151                *search = *idx;
    151152                b->dirty = true;
    152153                block_put(b);
     
    177178        unsigned i, j;
    178179        bitchunk_t chunk;
     180        const size_t chunk_bits = sizeof(bitchunk_t) * 8;
    179181
    180182        for (i = start_bit; i < bsize / sizeof(uint32_t); ++i) {
     
    186188                chunk = conv32(native, b[i]);
    187189
    188                 for (j = 0; j < 32; ++j) {
     190                for (j = 0; j < chunk_bits; ++j) {
    189191                        if (chunk & (1 << j)) {
    190                                 r = i * 32 + j;
     192                                r = i * chunk_bits + j;
    191193                                chunk |= 1 << j;
    192194                                b[i] = conv32(native, chunk);
Note: See TracChangeset for help on using the changeset viewer.