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>