svn commit: r227343 - in head/sys: kern sys tools
Ed Schouten
ed at FreeBSD.org
Tue Nov 8 15:38:22 UTC 2011
Author: ed
Date: Tue Nov 8 15:38:21 2011
New Revision: 227343
URL: http://svn.freebsd.org/changeset/base/227343
Log:
Make kobj_methods constant.
These structures hold no information that is modified during runtime. By
marking this constant, we see approximately 600 symbols become
read-only (amd64 GENERIC). While there, also mark the kobj_method
structures generated by makeobjops.awk static. They are only referenced
by the kobjop_desc structures within the same file.
Before:
$ ls -l kernel
-rwxr-xr-x 1 ed wheel 15937309 Nov 8 16:29 kernel*
$ size kernel
text data bss dec hex filename
12260854 1358468 2848832 16468154 fb48ba kernel
$ nm kernel | fgrep -c ' r '
8240
After:
$ ls -l kernel
-rwxr-xr-x 1 ed wheel 15922469 Nov 8 16:25 kernel*
$ size kernel
text data bss dec hex filename
12302869 1302660 2848704 16454233 fb1259 kernel
$ nm kernel | fgrep -c ' r '
8838
Modified:
head/sys/kern/subr_kobj.c
head/sys/sys/kobj.h
head/sys/tools/makeobjops.awk
Modified: head/sys/kern/subr_kobj.c
==============================================================================
--- head/sys/kern/subr_kobj.c Tue Nov 8 15:17:54 2011 (r227342)
+++ head/sys/kern/subr_kobj.c Tue Nov 8 15:38:21 2011 (r227343)
@@ -92,7 +92,7 @@ SYSINIT(kobj, SI_SUB_LOCK, SI_ORDER_ANY,
* desc pointer is NULL, it is guaranteed never to match any read
* descriptors.
*/
-static struct kobj_method null_method = {
+static const struct kobj_method null_method = {
0, 0,
};
Modified: head/sys/sys/kobj.h
==============================================================================
--- head/sys/sys/kobj.h Tue Nov 8 15:17:54 2011 (r227342)
+++ head/sys/sys/kobj.h Tue Nov 8 15:38:21 2011 (r227343)
@@ -34,7 +34,7 @@
*/
typedef struct kobj *kobj_t;
typedef struct kobj_class *kobj_class_t;
-typedef struct kobj_method kobj_method_t;
+typedef const struct kobj_method kobj_method_t;
typedef int (*kobjop_t)(void);
typedef struct kobj_ops *kobj_ops_t;
typedef struct kobjop_desc *kobjop_desc_t;
Modified: head/sys/tools/makeobjops.awk
==============================================================================
--- head/sys/tools/makeobjops.awk Tue Nov 8 15:17:54 2011 (r227342)
+++ head/sys/tools/makeobjops.awk Tue Nov 8 15:38:21 2011 (r227343)
@@ -307,7 +307,7 @@ function handle_method (static, doc)
line_width, length(prototype)));
# Print out the method desc
- printc("struct kobj_method " mname "_method_default = {");
+ printc("static const struct kobj_method " mname "_method_default = {");
printc("\t&" mname "_desc, (kobjop_t) " default_function);
printc("};\n");
More information about the svn-src-head
mailing list