03 Jun, 2011

1 commit


23 May, 2010

2 commits

  • Add a little strncpy optimization which can easily cut boot time by 20%.

    When the kernel is booting with initramfs, it builds up the filesystem
    from a cpio archive by calling strncpy_from_user() via fs/namei.c's
    do_getname() on every file in the archive (which can be lots) with a
    length of PATH_MAX (1024). This causes the dest of the strncpy to be
    padded with many NUL bytes.

    This optimization mostly causes these NUL bytes to be padded with a call
    to memset() which is already optimized for filling memory quickly, but
    the hardware loop helps a little bit as well.

    Boot time measured with 'loglevel=0' so UART speed doesn't get in the way.

    Signed-off-by: Robin Getz
    Signed-off-by: Mike Frysinger

    Robin Getz
     
  • Since 'extern inline' doesn't work correctly in the context of the Linux
    kernel (too many overriding defines), move the string functions to normal
    lib/ assembly files (like the existing mem funcs). This avoids the forced
    inline all over the kernel and allows us to place them constantly in L1.

    This also avoids some module failures when gcc inserts calls to string
    functions but the kernel build system doesn't fully consult the library
    archives.

    Signed-off-by: Robin Getz
    Signed-off-by: Mike Frysinger

    Robin Getz