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");
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to