tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: sysctl question

On Thu, 19 Jun 2008, Quentin Garnier wrote:

On Thu, Jun 19, 2008 at 07:58:22AM -0700, Paul Goyette wrote:
As I indicated yesterday, I'm writing a device driver for on-DIMM memory
temp sensors (such as those on DDR2 FB-DIMM, some DDR2 SORDIMM, and all
DDR3).  The sensors have hardware limit registers for lower, upper, and
critical temp limits.

sysmon_envsys(9) doesn't seem to provide a mechanism for the limits to be
set from userland, so I need some other way to get values into the
registers.  I've thought of three ways to do this:

        1. Hardcode the limits in the driver, and don't provide any way
           to change them.

        2. Modify sysmon_envsys to add a new mechanism

        3. Add a sysctl to the driver for specifying the limits

#1 seems rather restrictive and makes it difficult to adjust the limits
for testing the driver.

#2 is a whole lot more work than I'm ready to sign up for at this time!

I really thought 2 was possible through the envsysd config.  But maybe
I'm wrong...

Christoff Egger and I had this discussion yesterday. Basically, there is a mechanism for a user-specified critical-level monitoring event, but that's in addition to (and separate from) the "built-in" events. And there's no mechanism for more than one such level, whereas the sensors I'm dealing with have three temp-zone boundary points and therefore four states:

        WARN_UNDER                  temp < low_lim
        NORMAL          low_lim  <= temp <= high_lim
        WARN_OVER       high_lim <  temp <= crit_lim
        CRIT_OVER       crit_lim <= temp

So that leaves #3.

Actually, there's a 4th option I just thought of:

        4. Make it a real driver and use IOCTL's

but that means burning a device major for something that you'll never touch after booting the system.

Any suggestions on an acceptable mechanism for associating the sysctl node with the device's dev_t ?

See for instance the handler in sys/net/if_tap.c.

Thanks for the pointer!

|   Paul Goyette   | PGP DSS Key fingerprint: |  E-mail addresses:   |
| Customer Service | FA29 0E3B 35AF E8AE 6651 |   |
| Network Engineer | 0786 F758 55DE 53BA 7731 | |

Home | Main Index | Thread Index | Old Index