Date: Thu, 28 Jan 1999 16:33:12 -0800 (PST) From: Matthew Dillon <dillon@apollo.backplane.com> To: Peter Jeremy <peter.jeremy@auss2.alcatel.com.au> Cc: current@FreeBSD.ORG Subject: Re: indent(1) and style(9) (was: btokup() macro in sys/malloc.h) Message-ID: <199901290033.QAA12211@apollo.backplane.com> References: <99Jan29.074452est.40330@border.alcanet.com.au>
next in thread | previous in thread | raw e-mail | index | archive | help
:Luigi Rizzo <luigi@labinfo.iet.unipi.it>
:>not speaking about vinum, but to me, the indentation of 8 char and
:...
:
:According to most of the coding standards I've read, readability
:(and hence maintainability) come before efficiency. That said, I
:agree that efficiency _is_ an issue within the kernel's critical
:paths (the TCP/IP code being one).
:
:Judicious use of inline functions (and macros) should help move
:code to the left - and may even make it more understandable.
:
:Peter
More then judicious use -- inlines are an incredible advantage. Most
people don't realize that GCC will optimize constant arguments through
an inline call. Try this:
static __inline
fubar(int c)
{
if (c & 1)
++c;
if (c & 2)
++c;
return(c);
}
void
fubar2(void)
{
volatile int x;
x = fubar(0);
x = fubar(1);
x = fubar(2);
x = fubar(3);
}
% cc -S -O2 x.c
% cat x.s
fubar2:
pushl %ebp
movl %esp,%ebp
subl $4,%esp
xorl %eax,%eax <----- fubar (0)
movl %eax,-4(%ebp)
movl $3,-4(%ebp) <----- fubar (1)
movl $3,-4(%ebp) <----- fubar (2)
movl $4,-4(%ebp) <----- fubar (3)
leave
ret
For some good examples of inlines and inherent optimizeable code,
take a look at vm/vm_page.h.
For example, look at vm_page_sleep_busy() keeping in mind that the
also_m_busy and msg arguments are usually constants.
Another example: vm_page_protect(), where 'prot' is usually passed
as a constant.
For that matter, we could probably inline a good chunk of the smaller
pmap_*() functions as well, such as pmap_page_protect ( currently in
i386/i386/pmap.c ). This would get rid of an entire subroutine call
layer without reducing readability at all.
-Matt
Matthew Dillon
<dillon@backplane.com>
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901290033.QAA12211>
