Date: Fri, 06 Aug 2010 17:15:10 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: jroberson@jroberson.net Cc: arch@freebsd.org Subject: Re: Change to sysctl to support linux kobj Message-ID: <20100806.171510.506212773199813899.imp@bsdimp.com> In-Reply-To: <alpine.BSF.2.00.1008051140280.1414@desktop> References: <alpine.BSF.2.00.1008051140280.1414@desktop>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <alpine.BSF.2.00.1008051140280.1414@desktop>
Jeff Roberson <jroberson@jroberson.net> writes:
: Hi folks,
:
: I really need two pointer arguments to a sysctl function to support
: linux sysfs via sysctl. To facilitate this I propose changing the int
: arg2 to a uinptr_t. This keeps it as an integer type but makes it
: wide enough to accept a pointer. A small number of places in the
: kernel have to be fixed for the new type or because they don't use
: SYSCTL_HANDLER_ARGS. This will introduce an api/abi incompatibility
: although it is relatively minor.
:
: Comments? Alternatives?
:
: Thanks,
: Jeff
:
: Index: sysctl.h
: ===================================================================
: --- sysctl.h (revision 207767)
: +++ sysctl.h (working copy)
: @@ -114,8 +114,8 @@
: #define CTL_AUTO_START 0x100
:
: #ifdef _KERNEL
: -#define SYSCTL_HANDLER_ARGS struct sysctl_oid *oidp, void *arg1, int
: -#arg2, \
: - struct sysctl_req *req
: +#define SYSCTL_HANDLER_ARGS struct sysctl_oid *oidp, void *arg1, \
: + uintptr_t arg2, struct sysctl_req *req
:
: /* definitions for sysctl_req 'lock' member */
: #define REQ_UNLOCKED 0 /* not locked and not wired */
: @@ -158,7 +158,7 @@
: int oid_number;
: u_int oid_kind;
: void *oid_arg1;
: - int oid_arg2;
: + uintptr_t oid_arg2;
: const char *oid_name;
: int (*oid_handler)(SYSCTL_HANDLER_ARGS);
: const char *oid_fmt;
We've been making a lot of changes to the MIPS tree that involve using
intptr_t when dealing with addresses to get the proper sign extension
to happen. I'm unsure if this would be a good thing or not more
generally, but at least two architectures use this convention (MIPS
and the now-defunct alpha).
Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100806.171510.506212773199813899.imp>
