Change to sysctl to support linux kobj
M. Warner Losh
imp at bsdimp.com
Fri Aug 6 23:16:37 UTC 2010
In message: <alpine.BSF.2.00.1008051140280.1414 at desktop>
Jeff Roberson <jroberson at 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
More information about the freebsd-arch
mailing list