Subject: Re: CVS commit: src/sys/compat/linux/common
To: None <christos@zoulas.com>
From: =?ISO-8859-15?Q?Joachim_K=F6nig?= <him@online.de>
List: current-users
Date: 05/10/2007 11:32:12
Christos Zoulas wrote:
> Here's the actual code:
>
> sysctl_createv(clog, 0, &node, NULL,
> CTLFLAG_PERMANENT,
> CTLTYPE_STRING, "version", NULL,
> NULL, 0, linux_version, sizeof(linux_version),
> LINUX_KERN_VERSION, CTL_EOL);
> ^^^^^^^^^^^^^^^^^^
>
> #if 0
> #ifndef LINUX_UNAME_ARCH
> #define LINUX_UNAME_ARCH machine
> #endif
> strlcpy(linux_machine, LINUX_UNAME_ARCH, sizeof(linux_machine));
> sysctl_createv(clog, 0, &node, NULL,
> CTLFLAG_PERMANENT,
> CTLTYPE_STRING, "machine", NULL,
> NULL, 0, linux_machine, sizeof(linux_machine),
> LINUX_KERN_VERSION, CTL_EOL);
> ^^^^^^^^^^^^^^^^^^
> #endif
>
> The second sysctl_createv (which I commented out) always fails with EEXIST
> so I don't see how it could be making a difference. The minimal fix is
> to change LINUX_KERN_VERSION on the second create call to something else
> (or allocate it dynamically). I did not see a "machine" sysctl in my linux
> box.
linux_sys_uname (linux_misc.c) returns the value of linux_machine which
is now defined
in linux_sysctl.c as:
char linux_machine[128] = "";
so if you move your "#if 0" 4 lines down just before the sysctl but
after the strlcpy,
linux_machine contains a useful value, so yes, the sysctl itself is not
necessary
but the strlcpy.
linux_machine was added to linux_sysctl.c by mrg in version 1.26, I did
not find where
it was defined before.
Joachim