1. 02 2月, 2010 5 次提交
    • A
      Improve kconfig symbol hashing · e66f25d7
      Andi Kleen 提交于
      While looking for something else I noticed that the symbol
      hash function used by kconfig is quite poor. It doesn't
      use any of the standard hash techniques but simply
      adds up the string and then uses power of two masking,
      which is both known to perform poorly.
      
      The current x86 kconfig has over 7000 symbols.
      
      When I instrumented it showed that the minimum hash chain
      length was 16 and a significant number of them was over
      30.
      
      It didn't help that the hash table size was only 256 buckets.
      
      This patch increases the hash table size to a larger prime
      and switches to a FNV32 hash. I played around with a couple of hash
      functions, but that one seemed to perform best with reasonable
      hash table sizes.
      
      Increasing the hash table size even further didn't
      seem like a good idea, because there are a couple of global
      walks which walk the complete hash table.
      
      I also moved the unnamed bucket to 0. It's still the longest
      of all the buckets (44 entries), but hopefully it's not
      often hit except for the global walk which doesn't care.
      
      The result is a much nicer distribution:
      (first column bucket length, second number of buckets with that length)
      
      1: 3505
      2: 1236
      3: 294
      4: 52
      5: 3
      47: 1		<--- this is the unnamed symbols bucket
      
      There are still some 5+ buckets, but increasing the hash table
      even more would be likely not worth it.
      
      This also cleans up the code slightly by removing hard coded
      magic numbers.
      
      I didn't notice a big performance difference either way
      on my Nehalem system, but I presume it'll help somewhat
      on slower systems.
      Signed-off-by: NAndi Kleen <ak@linux.intel.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      e66f25d7
    • N
      nconfig: minor fix · 68c16edd
      Nir Tzachar 提交于
      This patch fixes two problems reported by Jan Engelhardt:
      1) Border is now properly placed, to always be visible
      2) Long menu items are properly displayed
      Reported-by: NJan Engelhardt <jengelh@medozas.de>
      Signed-off-by: NNir Tzachar <nir.tzachar@gmail.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      68c16edd
    • M
      nconfig: mark local functions as such · 851190c9
      Michal Marek 提交于
      scripts/kconfig/nconf.gui.c:23: warning: no previous prototype for 'set_normal_colors'
      scripts/kconfig/nconf.gui.c:68: warning: no previous prototype for 'normal_color_theme'
      scripts/kconfig/nconf.gui.c:100: warning: no previous prototype for 'no_colors_theme'
      scripts/kconfig/nconf.c:455: warning: no previous prototype for 'process_special_keys'
      scripts/kconfig/nconf.c:487: warning: no previous prototype for 'get_next_hot'
      scripts/kconfig/nconf.c:506: warning: no previous prototype for 'canbhot'
      scripts/kconfig/nconf.c:514: warning: no previous prototype for 'is_hot'
      scripts/kconfig/nconf.c:522: warning: no previous prototype for 'make_hot'
      scripts/kconfig/nconf.c:582: warning: no previous prototype for 'item_make'
      scripts/kconfig/nconf.c:626: warning: no previous prototype for 'item_add_str'
      scripts/kconfig/nconf.c:656: warning: no previous prototype for 'item_tag'
      scripts/kconfig/nconf.c:668: warning: no previous prototype for 'curses_item_index'
      scripts/kconfig/nconf.c:673: warning: no previous prototype for 'item_data'
      scripts/kconfig/nconf.c:684: warning: no previous prototype for 'item_is_tag'
      scripts/kconfig/nconf.c:691: warning: no previous prototype for 'set_config_filename'
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      851190c9
    • N
      kconfig: new configuration interface (nconfig) · 692d97c3
      nir.tzachar@gmail.com 提交于
      This patch was inspired by the kernel projects page, where an ncurses
      replacement for menuconfig was mentioned (by Sam Ravnborg).
      
      Building on menuconfig, this patch implements a more modern look
      interface using ncurses and ncurses' satellite libraries (menu, panel,
      form). The implementation does not depend on lxdialog, which is
      currently distributed with the kernel.
      Signed-off-by: NNir Tzachar <nir.tzachar@gmail.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      692d97c3
    • V
      menuconfig: wrap long help lines · da60fbbc
      Vadim Bendebury (вб) 提交于
      Help text for certain config options is very extensive (the text
      includes the names of all  other options the option in question depends
      on). Long lines are not wrapped, making it impossible to see the list
      without scrolling horizontally.
      
      This patch adds some logic which wraps help screen lines at word
      boundaries to prevent truncating.
      
      Tested by running
      
        ARCH=powerpc make menuconfig O=/tmp/build
      
      which shows that the long lines are now wrapped, and
      
       ARCH=powerpc make xconfig O=/tmp/build
      
      to demonstrate that it still compiles and operates as expected.
      Signed-off-by: NVadim Bendebury <vbendeb@google.com>
      Signed-off-by: NMichal Marek <mmarek@suse.cz>
      da60fbbc
  2. 12 12月, 2009 3 次提交
  3. 04 12月, 2009 1 次提交
  4. 20 11月, 2009 1 次提交
  5. 16 11月, 2009 1 次提交
  6. 16 10月, 2009 1 次提交
    • J
      kconfig: Make zconf.y work with current bison · 1456edbb
      Josh Triplett 提交于
      zconf.y includes zconf.hash.c from the initial code section.
      zconf.hash.c references the token constants from zconf.y.  However,
      current bison defines the token constants after the initial code
      section, making zconf.hash.c fail to compile.  Move the include of
      zconf.hash.c later in zconf.y, so bison puts it after the token
      constants.
      Signed-off-by: NJosh Triplett <josh@joshtriplett.org>
      1456edbb
  7. 20 9月, 2009 8 次提交
  8. 22 8月, 2009 1 次提交
    • S
      kconfig: add missing dependency of conf to localyesconfig · 48586218
      Steven Rostedt 提交于
      There's a dependency missing.
      
      $ make localyesconfig
        HOSTCC  scripts/basic/fixdep
        HOSTCC  scripts/basic/docproc
        HOSTCC  scripts/basic/hash
      using config: '/boot/config-2.6.27.25-78.2.56.fc9.x86_64'
      /bin/sh: line 8: scripts/kconfig/conf: No such file or directory
      make[1]: *** [localyesconfig] Error 127
      make: *** [localyesconfig] Error 2
      
      Thus the script failed to run. But the sed command that converts the '=m'
      to '=y' still ran. This gives us a distro config with all modules
      converted to built in!
      
      The missing dependency was for conf for localyesconfig. This
      dependency was already set for localmodconfig.
      Reported-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      48586218
  9. 19 8月, 2009 11 次提交
    • S
      kconfig: test if a .config already exists · a7c02602
      Steven Rostedt 提交于
      If one were to run localmodconfig or localyesconfig without having
      a .config already in the file, then the end of the process would give
      a warning when it tries to move the old .config to .config.old.
      
      This patch adds a test to check if .config exists and avoid the moves
      if it does not.
      
      [ Impact: remove warning after make localmodconfig ]
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      a7c02602
    • S
      kconfig: make local .config default for streamline_config · a9024838
      Steven Rostedt 提交于
      As Andi Kleen pointed out, most people would expect that the local .config
      file to be based for a streamline config. This patch changes the order
      of searching for a config file to consider the .config in the local
      directory first.
      Reported-by: NAndi Kleen <andi@firstfloor.org>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      a9024838
    • S
      kconfig: test for /boot/config-uname after /proc/config.gz in localconfig · 810b2be6
      Steven Rostedt 提交于
      Many distros put their config in /boot/config-`uname -r`, add a check
      for that right after /proc/config.gz
      Reported-by: NAlan Jenkins <sourcejedi.lkml@googlemail.com>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      810b2be6
    • S
      kconfig: unset IKCONFIG_PROC and clean up nesting · d08ca277
      Steven Rostedt 提交于
      Due to cut and paste error IKCONFIG was both set and cleared.
      It was suppose to be IKCONFIG_PROC to be cleared.
      
      Also cleaned up if nesting.
      Reported-by: NAlan Jenkins <sourcejedi.lkml@googlemail.com>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      d08ca277
    • S
      kconfig: search for a config to base the local(mod|yes)config on · cdfc4795
      Steven Rostedt 提交于
      Instead of using the .config in the local directory. This patch
      changes streamline_config.pl to search various locations for a config.
      
      Here's the list and order of search:
      
        /proc/config.gz
        /boot/vmlinuz-`uname -r`
        vmlinux  # local to the directory
        /lib/modules/`uname -r`/kernel/kernel/configs.ko
        kernel/configs.ko
        kernel/configs.o
        .config
      
      Once it finds a file that contains a config (it checks if the binary
      objects have configs first) it then uses it to create the .config
      with minimum modules needed.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      cdfc4795
    • S
      kconfig: enable CONFIG_IKCONFIG from streamline_config.pl · 744ffcbe
      Steven Rostedt 提交于
      Ingo Molnar suggested that the streamline_config.pl should enable
      CONFIG_IKCONFIG to keep the current config in the kernel.
      Then we can use scripts/extract-ikconfig to find the current
      modules.
      
      This patch changes streamline_config.pl to check if CONFIG_IKCONFIG
      is not set, and if it is not, it enables it to be a module.
      
      [ Impact: make current config options easier to find ]
      Reported-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      744ffcbe
    • S
      kconfig: do not warn about modules built in · ea2c1894
      Steven Rostedt 提交于
      The streamline_config.pl finds all the configs that are needed to
      compile the currently loaded modules. After it creates the .config
      file, it tests to make sure all the configs that are needed were
      set.
      
      It only looks at the configs that are modules, it does not look
      at the builtin configs. This causes unnecessary warnings about modules
      not being covered.
      Reported-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      ea2c1894
    • S
      kconfig: streamline_config.pl do not stop with no depends · 74398d32
      Steven Rostedt 提交于
      If a config does not have a prompt, it must be selected.
      streamline_config.pl keeps track of all configs that select other configs.
      If a config that does not have a prompt needs to be set to enable a
      current module, it will include all configs that select it.
      Note, streamline_config.pl does not enable modules that are not already
      enabled. It only keeps enabled those that were enabled and might be
      needed to compile the current modules.
      
      The code to find the selects of a config is after the code that
      adds the depends. But if a config needed selects but had no dependencies,
      it would not be set. Because the code would stop before getting to
      the select.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      74398d32
    • S
      kconfig: add make localyesconfig option · 281c9dad
      Steven Rostedt 提交于
      This adds the option localyesconfig to make. This is similar to
      localmodconfig, but after it removes unnecessary modules it runs
      
        sed -i s/=m/=y/
      
      on the .config file. It then runs "make silentoldconfig" to fix any
      wholes that were created by the conversion of modules to core.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      281c9dad
    • S
      kconfig: make localmodconfig to run streamline_config.pl · 03fa25da
      Steven Rostedt 提交于
      Running the streamline_config.pl script manually can still be confusing
      for some users. This patch adds the localmodconfig option. This will
      automatically run streamline_config.pl on the current .config and
      then run "make silentoldconfig" to fix any wholes that might have been
      created.
      
       $ make localmodconfig
      
      This will remove any module configurations in .config that are not needed
      to compile the modules that are loaded.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      03fa25da
    • S
      kconfig: add streamline_config.pl to scripts · dcc60243
      Steven Rostedt 提交于
      streamline_config.pl is a very powerful tool. For those that install
      a kernel to a new box using the config file from the distribution know that
      it can take forever to compile the kernel.
      
      Making a custom config file that will still boot your box, but bring
      down the compile time of the kernel can be quit painful, and to ask
      someone that reported a bug to do this can be a large burdon since that
      person may not even know how to build a kernel.
      
      This script will perform "lsmod" to find all the modules loaded on the
      current running system. It will read all the Makefiles to map which
      CONFIG enables a module. It will read the Kconfig files to find the
      dependencies and selects that may be needed to support a CONFIG.
      Finally, it reads the .config file and removes any module "=m" that is
      not needed to enable the currently loaded modules. The output goes to
      standard out.
      
      Here's a way to run the script. From the Linux directory that holds
      a distribution .config.
      
       $ scripts/kconfig/streamline_config.pl arch/x86/Kconfig > config-sl
       $ mv .config config-save
       $ mv config-sl .config
       $ make oldconfig
      
      Now you have a .config that will still build all your modules, but also
      take much less time to build the kernel.
      Signed-off-by: NSteven Rostedt <rostedt@goodmis.org>
      dcc60243
  10. 18 7月, 2009 2 次提交
  11. 10 6月, 2009 6 次提交
    • M
      kconfig: do not hardcode "include/config/auto.conf" filename · 12122f62
      Markus Heidelberg 提交于
      Regardless of KCONFIG_AUTOCONFIG, the filename written as a Make target
      into "include/config/auto.conf.cmd" was always the default one.
      
      Of course this doesn't make it work for the Kernel kbuild system, since
      there the filename is hardcoded at several places in the Makefiles.
      Signed-off-by: NMarkus Heidelberg <markus.heidelberg@web.de>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      12122f62
    • M
      kconfig: do not hardcode ".config" filename · 284026cd
      Markus Heidelberg 提交于
      Rather than hardcoding ".config" use conf_get_configname(), which also
      respects the environment variable KCONFIG_CONFIG.
      
      This fixes "make silentoldconfig" when KCONFIG_CONFIG is used and also
      suggests the given filename for "Load" and "Save as" in qconf.
      Signed-off-by: NMarkus Heidelberg <markus.heidelberg@web.de>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      284026cd
    • M
      kconfig qconf: fix the type of the desktop widget · 8d90c97e
      Markus Heidelberg 提交于
      QApplication::desktop() returns a pointer to QDesktopWidget, not to
      QWidget.
      
      Fixes the following compiler error after a quick conversion with 'qt3to4',
      which occured with g++ 3.4.6 and 4.1.2, but not anymore with 4.3.2.
      
      scripts/kconfig/qconf.cc: In constructor 'ConfigMainWindow::ConfigMainWindow()':
      scripts/kconfig/qconf.cc:1289: error: cannot convert 'QDesktopWidget*' to 'QWidget*' in initialization
      Signed-off-by: NMarkus Heidelberg <markus.heidelberg@web.de>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      8d90c97e
    • M
      kconfig qconf: add namespace for use of Key_ enum values · fbb86374
      Markus Heidelberg 提交于
      They are defined in the 'Qt' namespace.
      
      Fixes the following compiler errors after a quick conversion with 'qt3to4',
      which occured with g++ 3.4.6 and 4.1.2, but not anymore with 4.3.2.
      
      scripts/kconfig/qconf.cc: In member function 'virtual void ConfigLineEdit::keyPressEvent(QKeyEvent*)':
      scripts/kconfig/qconf.cc:311: error: 'Key_Escape' was not declared in this scope
      scripts/kconfig/qconf.cc:313: error: 'Key_Return' was not declared in this scope
      scripts/kconfig/qconf.cc:314: error: 'Key_Enter' was not declared in this scope
      
      scripts/kconfig/qconf.cc: In member function 'virtual void ConfigList::keyPressEvent(QKeyEvent*)':
      scripts/kconfig/qconf.cc:653: error: 'Key_Escape' was not declared in this scope
      scripts/kconfig/qconf.cc:666: error: 'Key_Return' was not declared in this scope
      scripts/kconfig/qconf.cc:667: error: 'Key_Enter' was not declared in this scope
      scripts/kconfig/qconf.cc:681: error: 'Key_Space' was not declared in this scope
      scripts/kconfig/qconf.cc:684: error: 'Key_N' was not declared in this scope
      scripts/kconfig/qconf.cc:687: error: 'Key_M' was not declared in this scope
      scripts/kconfig/qconf.cc:690: error: 'Key_Y' was not declared in this scope
      
      scripts/kconfig/qconf.cc: In constructor 'ConfigMainWindow::ConfigMainWindow()':
      scripts/kconfig/qconf.cc:1329: error: 'CTRL' was not declared in this scope
      scripts/kconfig/qconf.cc:1329: error: 'Key_Q' was not declared in this scope
      scripts/kconfig/qconf.cc:1331: error: 'Key_L' was not declared in this scope
      scripts/kconfig/qconf.cc:1333: error: 'Key_S' was not declared in this scope
      scripts/kconfig/qconf.cc:1340: error: 'Key_F' was not declared in this scope
      Signed-off-by: NMarkus Heidelberg <markus.heidelberg@web.de>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      fbb86374
    • M
      kconfig qconf: fix namespace for Horizontal and Vertical enum values · 7298b936
      Markus Heidelberg 提交于
      They were used as QSplitter::Horizontal resp. QSplitter::Vertical, but
      are defined in the 'Qt' namespace.
      
      Fixes the following compiler errors after a quick conversion with 'qt3to4',
      which occured with g++ 3.4.6 and 4.1.2, but not anymore with 4.3.2.
      
      scripts/kconfig/qconf.cc: In constructor 'ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow*, const char*)':
      scripts/kconfig/qconf.cc:1213: error: 'Vertical' is not a member of 'QSplitter'
      
      scripts/kconfig/qconf.cc: In constructor 'ConfigMainWindow::ConfigMainWindow()':
      scripts/kconfig/qconf.cc:1304: error: 'Horizontal' is not a member of 'QSplitter'
      scripts/kconfig/qconf.cc:1311: error: 'Vertical' is not a member of 'QSplitter'
      Signed-off-by: NMarkus Heidelberg <markus.heidelberg@web.de>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      7298b936
    • M
      kconfig qconf: fix -Wall compiler warnings · 98403a91
      Markus Heidelberg 提交于
      These compiler warnings occure when adding -Wall to HOSTCXXFLAGS in
      /Makefile
      
      scripts/kconfig/qconf.h: In constructor ‘ConfigInfoView::ConfigInfoView(QWidget*, const char*)’:
      scripts/kconfig/qconf.h:274: warning: ‘ConfigInfoView::menu’ will be initialized after
      scripts/kconfig/qconf.h:273: warning:   ‘symbol* ConfigInfoView::sym’
      scripts/kconfig/qconf.cc:922: warning:   when initialized here
      
      scripts/kconfig/qconf.cc: In member function ‘void ConfigMainWindow::setMenuLink(menu*)’:
      scripts/kconfig/qconf.cc:1498: warning: enumeration value ‘menuMode’ not handled in switch
      scripts/kconfig/qconf.cc:1498: warning: enumeration value ‘listMode’ not handled in switch
      
      scripts/kconfig/qconf.cc: In member function ‘void ConfigMainWindow::saveSettings()’:
      scripts/kconfig/qconf.cc:1664: warning: enumeration value ‘menuMode’ not handled in switch
      scripts/kconfig/qconf.cc:1664: warning: enumeration value ‘listMode’ not handled in switch
      Signed-off-by: NMarkus Heidelberg <markus.heidelberg@web.de>
      Signed-off-by: NSam Ravnborg <sam@ravnborg.org>
      98403a91