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
This commit is contained in:
Ed Schouten 2011-11-08 15:38:21 +00:00
parent 6f6924e5a6
commit 3f3f6bc302
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=227343
3 changed files with 3 additions and 3 deletions

View File

@ -92,7 +92,7 @@ SYSINIT(kobj, SI_SUB_LOCK, SI_ORDER_ANY, kobj_init_mutex, NULL);
* 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,
};

View File

@ -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;

View File

@ -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");