a code reduction function addition to cam_xpt

Attilio Rao attilio at freebsd.org
Mon Nov 20 22:18:51 UTC 2006


2006/11/20, Brooks Davis <brooks at one-eyed-alien.net>:
> On Mon, Nov 20, 2006 at 01:31:01AM +0100, Attilio Rao wrote:
> > 2006/11/20, mjacob at freebsd.org <mjacob at freebsd.org>:
> > >There are *far* too many:
> > >
> > >        xpt_print_path(path);
> > >        printf("foo\n");
> > >
> > >constructs. How about we just join them?
> > >
> > >==== //depot/projects/newisp/cam/cam_xpt.c#12 -
> > >/home/FreeBSD/p4/newisp/cam/cam_xpt.c ====
> > >@@ -63,6 +63,7 @@
> > >  #include <cam/scsi/scsi_all.h>
> > >  #include <cam/scsi/scsi_message.h>
> > >  #include <cam/scsi/scsi_pass.h>
> > >+#include <machine/stdarg.h>    /* for xpt_print below */
> > >  #include "opt_cam.h"
> > >
> > >  /* Datastructures internal to the xpt layer */
> > >@@ -4160,6 +4161,16 @@
> > >        }
> > >  }
> > >
> > >+void
> > >+xpt_print(struct cam_path *path, const char *fmt, ...)
> > >+{
> > >+       va_list ap;
> > >+       xpt_print_path(path);
> > >+       va_start(ap, fmt);
> > >+       vprintf(fmt, ap);
> > >+       va_end(ap);
> > >+}
> > >+
> > >==== //depot/projects/newisp/cam/cam_xpt.h#1 -
> > >/home/FreeBSD/p4/newisp/cam/cam_xpt.h ====
> > >@@ -62,6 +62,7 @@
> > >  int                   xpt_path_comp(struct cam_path *path1,
> > >                                      struct cam_path *path2);
> > >  void                  xpt_print_path(struct cam_path *path);
> > >+void                   xpt_print(struct cam_path *path, const char *fmt,
> > >...);
> > >  int                   xpt_path_string(struct cam_path *path, char *str,
> > >                                        size_t str_len);
> > >  path_id_t             xpt_path_path_id(struct cam_path *path);
> >
> > Would not be better a preprocessing stub?
> >
> > something like:
> >
> > #define XPT_PRINT(path, fmt, ...) do {
> >            \
> >              xpt_print_path(path);
> >                      \
> >              printf(fmt, __VA_ARGS__);
> >                  \
> > } while (0)
>
> Why?  What is gained?  FWIW, when I added if_printif it reduced kernel
> size by several KB.  If there's a similar effect here we should take
> advantage of it.

It is simply faster (one function calling less), even if probabilly
this could be mitigated with -fomit-frame-pointer (IMHO, this is not
as over used as if_printf...).

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein


More information about the freebsd-scsi mailing list