diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 15:40:26 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 15:40:26 -0400 |
| commit | c813b4e16ead3c3df98ac84419d4df2adf33fe01 (patch) | |
| tree | 2ca4a5b6966d833b6149e3dda7a4e85d1255779c /scripts | |
| parent | c8d8a2321f9c4ee18fbcc399fdc2a77e580a03b9 (diff) | |
| parent | 02683ffdf655b4ae15245376ba6fea6d9e5829a6 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (46 commits)
UIO: Fix mapping of logical and virtual memory
UIO: add automata sercos3 pci card support
UIO: Change driver name of uio_pdrv
UIO: Add alignment warnings for uio-mem
Driver core: add bus_sort_breadthfirst() function
NET: convert the phy_device file to use bus_find_device_by_name
kobject: Cleanup kobject_rename and !CONFIG_SYSFS
kobject: Fix kobject_rename and !CONFIG_SYSFS
sysfs: Make dir and name args to sysfs_notify() const
platform: add new device registration helper
sysfs: use ilookup5() instead of ilookup5_nowait()
PNP: create device attributes via default device attributes
Driver core: make bus_find_device_by_name() more robust
usb: turn dev_warn+WARN_ON combos into dev_WARN
debug: use dev_WARN() rather than WARN_ON() in device_pm_add()
debug: Introduce a dev_WARN() function
sysfs: fix deadlock
device model: Do a quickcheck for driver binding before doing an expensive check
Driver core: Fix cleanup in device_create_vargs().
Driver core: Clarify device cleanup.
...
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/Makefile.lib | 11 | ||||
| -rw-r--r-- | scripts/basic/Makefile | 2 | ||||
| -rw-r--r-- | scripts/basic/hash.c | 64 |
3 files changed, 75 insertions, 2 deletions
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index ea48b82a3707..b4ca38a21158 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib | |||
| @@ -96,6 +96,14 @@ basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(basetarget)))" | |||
| 96 | modname_flags = $(if $(filter 1,$(words $(modname))),\ | 96 | modname_flags = $(if $(filter 1,$(words $(modname))),\ |
| 97 | -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))") | 97 | -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))") |
| 98 | 98 | ||
| 99 | #hash values | ||
| 100 | ifdef CONFIG_DYNAMIC_PRINTK_DEBUG | ||
| 101 | debug_flags = -D"DEBUG_HASH=$(shell ./scripts/basic/hash djb2 $(@D)$(modname))"\ | ||
| 102 | -D"DEBUG_HASH2=$(shell ./scripts/basic/hash r5 $(@D)$(modname))" | ||
| 103 | else | ||
| 104 | debug_flags = | ||
| 105 | endif | ||
| 106 | |||
| 99 | orig_c_flags = $(KBUILD_CFLAGS) $(ccflags-y) $(CFLAGS_$(basetarget).o) | 107 | orig_c_flags = $(KBUILD_CFLAGS) $(ccflags-y) $(CFLAGS_$(basetarget).o) |
| 100 | _c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags)) | 108 | _c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags)) |
| 101 | _a_flags = $(KBUILD_AFLAGS) $(asflags-y) $(AFLAGS_$(basetarget).o) | 109 | _a_flags = $(KBUILD_AFLAGS) $(asflags-y) $(AFLAGS_$(basetarget).o) |
| @@ -121,7 +129,8 @@ endif | |||
| 121 | 129 | ||
| 122 | c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \ | 130 | c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \ |
| 123 | $(__c_flags) $(modkern_cflags) \ | 131 | $(__c_flags) $(modkern_cflags) \ |
| 124 | -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags) | 132 | -D"KBUILD_STR(s)=\#s" $(basename_flags) $(modname_flags) \ |
| 133 | $(debug_flags) | ||
| 125 | 134 | ||
| 126 | a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \ | 135 | a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \ |
| 127 | $(__a_flags) $(modkern_aflags) | 136 | $(__a_flags) $(modkern_aflags) |
diff --git a/scripts/basic/Makefile b/scripts/basic/Makefile index 4c324a1f1e0e..09559951df12 100644 --- a/scripts/basic/Makefile +++ b/scripts/basic/Makefile | |||
| @@ -9,7 +9,7 @@ | |||
| 9 | # fixdep: Used to generate dependency information during build process | 9 | # fixdep: Used to generate dependency information during build process |
| 10 | # docproc: Used in Documentation/DocBook | 10 | # docproc: Used in Documentation/DocBook |
| 11 | 11 | ||
| 12 | hostprogs-y := fixdep docproc | 12 | hostprogs-y := fixdep docproc hash |
| 13 | always := $(hostprogs-y) | 13 | always := $(hostprogs-y) |
| 14 | 14 | ||
| 15 | # fixdep is needed to compile other host programs | 15 | # fixdep is needed to compile other host programs |
diff --git a/scripts/basic/hash.c b/scripts/basic/hash.c new file mode 100644 index 000000000000..3299ad7fc8c0 --- /dev/null +++ b/scripts/basic/hash.c | |||
| @@ -0,0 +1,64 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2008 Red Hat, Inc., Jason Baron <jbaron@redhat.com> | ||
| 3 | * | ||
| 4 | */ | ||
| 5 | |||
| 6 | #include <stdio.h> | ||
| 7 | #include <stdlib.h> | ||
| 8 | #include <string.h> | ||
| 9 | |||
| 10 | #define DYNAMIC_DEBUG_HASH_BITS 6 | ||
| 11 | |||
| 12 | static const char *program; | ||
| 13 | |||
| 14 | static void usage(void) | ||
| 15 | { | ||
| 16 | printf("Usage: %s <djb2|r5> <modname>\n", program); | ||
| 17 | exit(1); | ||
| 18 | } | ||
| 19 | |||
| 20 | /* djb2 hashing algorithm by Dan Bernstein. From: | ||
| 21 | * http://www.cse.yorku.ca/~oz/hash.html | ||
| 22 | */ | ||
| 23 | |||
| 24 | unsigned int djb2_hash(char *str) | ||
| 25 | { | ||
| 26 | unsigned long hash = 5381; | ||
| 27 | int c; | ||
| 28 | |||
| 29 | c = *str; | ||
| 30 | while (c) { | ||
| 31 | hash = ((hash << 5) + hash) + c; | ||
| 32 | c = *++str; | ||
| 33 | } | ||
| 34 | return (unsigned int)(hash & ((1 << DYNAMIC_DEBUG_HASH_BITS) - 1)); | ||
| 35 | } | ||
| 36 | |||
| 37 | unsigned int r5_hash(char *str) | ||
| 38 | { | ||
| 39 | unsigned long hash = 0; | ||
| 40 | int c; | ||
| 41 | |||
| 42 | c = *str; | ||
| 43 | while (c) { | ||
| 44 | hash = (hash + (c << 4) + (c >> 4)) * 11; | ||
| 45 | c = *++str; | ||
| 46 | } | ||
| 47 | return (unsigned int)(hash & ((1 << DYNAMIC_DEBUG_HASH_BITS) - 1)); | ||
| 48 | } | ||
| 49 | |||
| 50 | int main(int argc, char *argv[]) | ||
| 51 | { | ||
| 52 | program = argv[0]; | ||
| 53 | |||
| 54 | if (argc != 3) | ||
| 55 | usage(); | ||
| 56 | if (!strcmp(argv[1], "djb2")) | ||
| 57 | printf("%d\n", djb2_hash(argv[2])); | ||
| 58 | else if (!strcmp(argv[1], "r5")) | ||
| 59 | printf("%d\n", r5_hash(argv[2])); | ||
| 60 | else | ||
| 61 | usage(); | ||
| 62 | exit(0); | ||
| 63 | } | ||
| 64 | |||
