Re: [PATCH 22/23] sysctl arm: Remove binary sysctl support

Eric W. Biederman
2009-11-08T23:31:26Z

Russell King <rmk+lkml@arm.linux.org.uk> writes:

> On Sun, Nov 08, 2009 at 02:45:36PM -0800, Eric W. Biederman wrote:
>> Russell King <rmk+lkml@arm.linux.org.uk> writes:
>>
>> >
>> > NAK. Glibc uses these numeric sysctls to support ioperm emulation on ARM.
>> > Therefore, removal of these numeric sysctls breaks that user interface:
>> >
>> > static int iobase_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_BASE };
>> > static int ioshift_name[] = { CTL_BUS, BUS_ISA, BUS_ISA_PORT_SHIFT };
>> > if (! sysctl (iobase_name, 3, &io.io_base, &len, NULL, 0)
>> > && ! sysctl (ioshift_name, 3, &io.shift, &len, NULL, 0))
>> > {
>> > io.initdone = 1;
>> > return 0;
>> > }
>>
>> Those still exist in sysctl_binary.c are provided by reading
>> /proc/sys/bus/isa/membase, /proc/sys/bus/isa/portbase, and
>> /proc/sys/bus/isa/portshift.
>>
>> The practical difference is that /proc support now must be compiled
>> in to support sys_sysctl.
>
> Have you checked whether glibc supports reading these from procfs rather
> than sysfs using the code as it stands above?
>
> If not, continued NAK due to user visible ABI change which will cause
> breakage.

There is not a user visible ABI change. Just a massive implementation change.
The only user visible change is that CONFIG_SYS_SYSCALL now depends on
CONFIG_PROC_SYSCTL.

The implementation of sys_sysctl in binary_sysctl.c will now read
/proc/sys/bus/isa/portbase and using vfs_read convert the text string
to a binary integer and return it to glibc in the form sys_sysctl has
always used.

And yes, as of glibc-ports-10.1 the arm implementation of ioperm still
depends on the binary sys_sysctl implementation to get this information.

Eric