svn commit: r217369 - in head/sys: cam/scsi sys

Bruce Evans brde at optusnet.com.au
Fri Jan 14 05:56:47 UTC 2011


On Thu, 13 Jan 2011, Matthew D Fleming wrote:

> Log:
>  Add a 64-bit hex-printed sysctl(9) since there is at least one place in
>  the code that wanted it.  It is named X64 rather than XQUAD since the
>  quad name is a historical abomination that should not be perpetuated.

:-).  It is only long long that is abominable.  Both are historical.

I think these X formats shouldn't exist, even as defaults.  Instead,
sysctl(8) should have option(s) to control the format.  I'm used to
typing lots of "p/x"s to get hex formatting in gdb.  There is little
reason for sysctl(8) to have finer-grained control than gdb (sysctl
now has hard-coded defaults instead of control).

Now with stricter type checking, even formats for integers are redundant.
The CTLTYPE now always matches the type, and the format should always
match the type.  The space wasted for the format is 1 pointer plus the
string.

Perhaps there are some remaining type errors involving the kernel type
being signed when it should be unsigned, or vice versa.  This could
be "fixed" by mis-specifying the format with a U, or vice versa.  Since
the specification is usually done by invoking a SYSCTL*() macro, most
such fixes, if any, would have been undone by changing the macro to
match the type, and it would take fixing the kernel type to fix the
userland format.

> Modified: head/sys/cam/scsi/scsi_da.c
> ==============================================================================
> --- head/sys/cam/scsi/scsi_da.c	Thu Jan 13 18:20:27 2011	(r217368)
> +++ head/sys/cam/scsi/scsi_da.c	Thu Jan 13 18:20:33 2011	(r217369)
> @@ -1127,9 +1127,9 @@ dasysctlinit(void *context, int pending)
> 		struct ccb_trans_settings_fc *fc = &cts.xport_specific.fc;
> 		if (fc->valid & CTS_FC_VALID_WWPN) {
> 			softc->wwpn = fc->wwpn;
> -			SYSCTL_ADD_XLONG(&softc->sysctl_ctx,
> +			SYSCTL_ADD_X64(&softc->sysctl_ctx,
> 			    SYSCTL_CHILDREN(softc->sysctl_tree),
> -			    OID_AUTO, "wwpn", CTLTYPE_QUAD | CTLFLAG_RD,
> +			    OID_AUTO, "wwpn", CTLFLAG_RD,
> 			    &softc->wwpn, "World Wide Port Name");
> 		}
> 	}
>

Hmm, forcing hex might be best for flags (but I'll ask for binary then :-)
and for mac addresses, but not for inet4 addresses.  I don't know what sort
of address this is.

Bruce


More information about the svn-src-head mailing list