cvs commit: src/sys/kern imgact_elf.c init_main.c kern_checkpoint.c kern_descrip.c kern_event.c sys_generic.c sys_pipe.c uipc_syscalls.c uipc_usrreq.c vfs_aio.c vfs_syscalls.c src/sys/sys filedesc.h src/sys/dev/misc/streams streams.c ...

Matthew Dillon dillon at apollo.backplane.com
Wed Jun 22 10:44:43 PDT 2005


:can anybody enlighten me why this was done in the first place?
:this way it's much clearer anyways
:
:cheers
:  simon

    To be clean.  The original code was designed to be optimal for,
    um, VAX computers at the cost of being considerably less readable
    by using a array of pointers (scaling factor x4 for the array lookup)
    for the most common operation (a file pointer lookup).  The second
    array of chars to store the file flags (scaling factor x1 for the array
    lookup), in order to avoid a structure of 6 bytes and having to do a
    multiply by 6 to look up an entry in the array.  Back then space was
    at a premium.

    Now we have a file pointer (4 bytes), flags (1 bytes), and allocation
    count (4 bytes) = 9 bytes.  Since space is not at a premium I just made
    it 12 bytes and a multiply is used for the array lookup.

    If we care more about performance we could make it 16 bytes so the array
    lookup is scaled by a factor of two again, which I might just do actually
    because that removes the overhead of a multiply.

					-Matt





More information about the Commits mailing list