History

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. ...

Linus Torvalds committed 18 years ago

Commit c813b4e2 parents c8d8a23 02683ff131 files · +1786 −617Browse files

Showing the changes to scripts (3 of 131 files). Show all

Unified · Split

3 files
  1. scripts/Makefile.lib +10 −1
  2. scripts/basic/Makefile +1 −1
  3. scripts/basic/hash.c +64 −0
scripts/Makefile.lib+10−1
@@ -96,6 +96,14 @@ basename_flags = -D"KBUILD_BASENAME=KBUILD_STR($(call name-fix,$(basetarget)))" · 95 unmodified lines
9696 modname_flags = $(if $(filter 1,$(words $(modname))),\
9797 -D"KBUILD_MODNAME=KBUILD_STR($(call name-fix,$(modname)))")
9898
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+
99107 orig_c_flags = $(KBUILD_CFLAGS) $(ccflags-y) $(CFLAGS_$(basetarget).o)
100108 _c_flags = $(filter-out $(CFLAGS_REMOVE_$(basetarget).o), $(orig_c_flags))
101109 _a_flags = $(KBUILD_AFLAGS) $(asflags-y) $(AFLAGS_$(basetarget).o)
@@ -121,7 +129,8 @@ endif · 19 unmodified lines
121129
122130 c_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \
123131 $(__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)
125134
126135 a_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(KBUILD_CPPFLAGS) \
127136 $(__a_flags) $(modkern_aflags)
scripts/basic/Makefile+1−1
@@ -9,7 +9,7 @@ · 8 unmodified lines
99 # fixdep: Used to generate dependency information during build process
1010 # docproc: Used in Documentation/DocBook
1111
12−hostprogs-y := fixdep docproc
12+hostprogs-y := fixdep docproc hash
1313 always := $(hostprogs-y)
1414
1515 # fixdep is needed to compile other host programs
scripts/basic/hash.c+64−0
@@ -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+