Words are more descriptive than numbers. Let's use them!

This diff removes

        sysctl machdep.lidaction=0
        sysctl machdep.lidaction=1
        sysctl machdep.lidaction=2

in favor of the more descriptive

        sysctl machdep.lidaction=none
        sysctl machdep.lidaction=suspend
        sysctl machdep.lidaction=hibernate

as requested by deraadt.

Given that there is a diff for poweroff (which I want to see go in)
floating around on tech@, it might be a good idea to switch now, so
the numbering doesn't get out of hand.

Of course this means people will have to update their /etc/sysctl.conf
_again_. Sorry for that, I missed the opportunity to do both lidaction
changes in one big swoop.

Do we want to go there?

natano


Index: etc/etc.amd64/sysctl.conf
===================================================================
RCS file: /cvs/src/etc/etc.amd64/sysctl.conf,v
retrieving revision 1.7
diff -u -p -r1.7 sysctl.conf
--- etc/etc.amd64/sysctl.conf   2 Mar 2017 10:38:09 -0000       1.7
+++ etc/etc.amd64/sysctl.conf   25 Jul 2017 18:40:31 -0000
@@ -1,3 +1,3 @@
 #machdep.allowaperture=2       # See xf86(4)
 #machdep.kbdreset=1            # permit console CTRL-ALT-DEL to do a nice halt
-#machdep.lidaction=0           # 1=suspend, 2=hibernate laptop upon lid closing
+#machdep.lidaction=none                # action upon lid closing: none, 
suspend or hibernate
Index: etc/etc.i386/sysctl.conf
===================================================================
RCS file: /cvs/src/etc/etc.i386/sysctl.conf,v
retrieving revision 1.21
diff -u -p -r1.21 sysctl.conf
--- etc/etc.i386/sysctl.conf    2 Mar 2017 10:38:09 -0000       1.21
+++ etc/etc.i386/sysctl.conf    25 Jul 2017 18:40:35 -0000
@@ -1,4 +1,4 @@
 #machdep.allowaperture=2       # See xf86(4)
 #machdep.apmhalt=1             # 1=powerdown hack, try if halt -p doesn't work
 #machdep.kbdreset=1            # permit console CTRL-ALT-DEL to do a nice halt
-#machdep.lidaction=0           # 1=suspend, 2=hibernate laptop upon lid closing
+#machdep.lidaction=none                # action upon lid closing: none, 
suspend or hibernate
Index: etc/etc.loongson/sysctl.conf
===================================================================
RCS file: /cvs/src/etc/etc.loongson/sysctl.conf,v
retrieving revision 1.4
diff -u -p -r1.4 sysctl.conf
--- etc/etc.loongson/sysctl.conf        2 Mar 2017 10:38:09 -0000       1.4
+++ etc/etc.loongson/sysctl.conf        25 Jul 2017 18:40:40 -0000
@@ -1 +1 @@
-#machdep.lidaction=0           # 1=suspend, 2=hibernate laptop upon lid closing
+#machdep.lidaction=none                # action upon lid closing: none, 
suspend or hibernate
Index: sys/arch/amd64/amd64/machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/amd64/amd64/machdep.c,v
retrieving revision 1.231
diff -u -p -r1.231 machdep.c
--- sys/arch/amd64/amd64/machdep.c      12 Jul 2017 06:26:32 -0000      1.231
+++ sys/arch/amd64/amd64/machdep.c      25 Jul 2017 19:37:22 -0000
@@ -264,6 +264,8 @@ void        map_tramps(void);
 void   init_x86_64(paddr_t);
 void   (*cpuresetfn)(void);
 
+int    sysctl_cpulidaction(void *, size_t *, void *, size_t);
+
 #ifdef APERTURE
 int allowaperture = 0;
 #endif
@@ -428,7 +430,7 @@ cpu_sysctl(int *name, u_int namelen, voi
        extern int amd64_has_xcrypt;
        dev_t consdev;
        dev_t dev;
-       int val, error;
+       int error;
 
        switch (name[0]) {
        case CPU_CONSDEV:
@@ -477,15 +479,7 @@ cpu_sysctl(int *name, u_int namelen, voi
        case CPU_XCRYPT:
                return (sysctl_rdint(oldp, oldlenp, newp, amd64_has_xcrypt));
        case CPU_LIDACTION:
-               val = lid_action;
-               error = sysctl_int(oldp, oldlenp, newp, newlen, &val);
-               if (!error) {
-                       if (val < 0 || val > 2)
-                               error = EINVAL;
-                       else
-                               lid_action = val;
-               }
-               return (error);
+               return (sysctl_cpulidaction(oldp, oldlenp, newp, newlen));
 #if NPCKBC > 0 && NUKBD > 0
        case CPU_FORCEUKBD:
                if (forceukbd)
@@ -500,6 +494,47 @@ cpu_sysctl(int *name, u_int namelen, voi
                return (EOPNOTSUPP);
        }
        /* NOTREACHED */
+}
+
+int
+sysctl_cpulidaction(void *oldp, size_t *oldlenp, void *newp, size_t newlen)
+{
+       char action[10];
+       int error;
+
+       switch (lid_action) {
+       case 0:
+       default:
+               strlcpy(action, "none", sizeof(action));
+               break;
+       case 1:
+               strlcpy(action, "suspend", sizeof(action));
+               break;
+#ifdef HIBERNATE
+       case 2:
+               strlcpy(action, "hibernate", sizeof(action));
+               break;
+#endif
+       }
+
+       error = sysctl_string(oldp, oldlenp, newp, newlen, action, 
sizeof(action));
+       if (error)
+               return error;
+
+       if (newp != NULL) {
+               if (strcmp(action, "none") == 0)
+                       lid_action = 0;
+               else if (strcmp(action, "suspend") == 0)
+                       lid_action = 1;
+#ifdef HIBERNATE
+               else if (strcmp(action, "hibernate") == 0)
+                       lid_action = 2;
+#endif
+               else
+                       return EINVAL;
+       }
+
+       return 0;
 }
 
 /*
Index: sys/arch/amd64/include/cpu.h
===================================================================
RCS file: /cvs/src/sys/arch/amd64/include/cpu.h,v
retrieving revision 1.113
diff -u -p -r1.113 cpu.h
--- sys/arch/amd64/include/cpu.h        12 Jul 2017 06:26:32 -0000      1.113
+++ sys/arch/amd64/include/cpu.h        23 Jul 2017 16:22:37 -0000
@@ -446,7 +446,7 @@ void mp_setperf_init(void);
        { "apmhalt", CTLTYPE_INT }, \
        { "xcrypt", CTLTYPE_INT }, \
        { 0, 0 }, \
-       { "lidaction", CTLTYPE_INT }, \
+       { "lidaction", CTLTYPE_STRING }, \
        { "forceukbd", CTLTYPE_INT }, \
 }
 
Index: sys/arch/arm/include/cpu.h
===================================================================
RCS file: /cvs/src/sys/arch/arm/include/cpu.h,v
retrieving revision 1.47
diff -u -p -r1.47 cpu.h
--- sys/arch/arm/include/cpu.h  12 Jul 2017 06:26:32 -0000      1.47
+++ sys/arch/arm/include/cpu.h  23 Jul 2017 16:22:46 -0000
@@ -83,7 +83,7 @@
        { 0, 0 }, \
        { "maxspeed", CTLTYPE_INT }, \
        { 0, 0 }, \
-       { "lidaction", CTLTYPE_INT }, \
+       { "lidaction", CTLTYPE_STRING }, \
 }
 
 #ifdef _KERNEL
Index: sys/arch/i386/i386/machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/i386/i386/machdep.c,v
retrieving revision 1.604
diff -u -p -r1.604 machdep.c
--- sys/arch/i386/i386/machdep.c        12 Jul 2017 06:26:32 -0000      1.604
+++ sys/arch/i386/i386/machdep.c        25 Jul 2017 19:34:27 -0000
@@ -325,6 +325,8 @@ int pentium_cpuspeed(int *);
 void   cpu_check_vmm_cap(struct cpu_info *);
 #endif /* NVMM > 0 */
 
+int    sysctl_cpulidaction(void *, size_t *, void *, size_t);
+
 static __inline u_char
 cyrix_read_reg(u_char reg)
 {
@@ -3485,7 +3487,7 @@ cpu_sysctl(int *name, u_int namelen, voi
     size_t newlen, struct proc *p)
 {
        dev_t dev;
-       int val, error;
+       int error;
 
        switch (name[0]) {
        case CPU_CONSDEV:
@@ -3551,15 +3553,7 @@ cpu_sysctl(int *name, u_int namelen, voi
        case CPU_XCRYPT:
                return (sysctl_rdint(oldp, oldlenp, newp, i386_has_xcrypt));
        case CPU_LIDACTION:
-               val = lid_action;
-               error = sysctl_int(oldp, oldlenp, newp, newlen, &val);
-               if (!error) {
-                       if (val < 0 || val > 2)
-                               error = EINVAL;
-                       else
-                               lid_action = val;
-               }
-               return (error);
+               return (sysctl_cpulidaction(oldp, oldlenp, newp, newlen));
 #if NPCKBC > 0 && NUKBD > 0
        case CPU_FORCEUKBD:
                if (forceukbd)
@@ -3574,6 +3568,47 @@ cpu_sysctl(int *name, u_int namelen, voi
                return (EOPNOTSUPP);
        }
        /* NOTREACHED */
+}
+
+int
+sysctl_cpulidaction(void *oldp, size_t *oldlenp, void *newp, size_t newlen)
+{
+       char action[10];
+       int error;
+
+       switch (lid_action) {
+       case 0:
+       default:
+               strlcpy(action, "none", sizeof(action));
+               break;
+       case 1:
+               strlcpy(action, "suspend", sizeof(action));
+               break;
+#ifdef HIBERNATE
+       case 2:
+               strlcpy(action, "hibernate", sizeof(action));
+               break;
+#endif
+       }
+
+       error = sysctl_string(oldp, oldlenp, newp, newlen, action, 
sizeof(action));
+       if (error)
+               return error;
+
+       if (newp != NULL) {
+               if (strcmp(action, "none") == 0)
+                       lid_action = 0;
+               else if (strcmp(action, "suspend") == 0)
+                       lid_action = 1;
+#ifdef HIBERNATE
+               else if (strcmp(action, "hibernate") == 0)
+                       lid_action = 2;
+#endif
+               else
+                       return EINVAL;
+       }
+
+       return 0;
 }
 
 int
Index: sys/arch/i386/include/cpu.h
===================================================================
RCS file: /cvs/src/sys/arch/i386/include/cpu.h,v
retrieving revision 1.156
diff -u -p -r1.156 cpu.h
--- sys/arch/i386/include/cpu.h 12 Jul 2017 06:26:33 -0000      1.156
+++ sys/arch/i386/include/cpu.h 23 Jul 2017 16:22:53 -0000
@@ -546,7 +546,7 @@ int cpu_paenable(void *);
        { "sse2", CTLTYPE_INT }, \
        { "xcrypt", CTLTYPE_INT }, \
        { 0, 0 }, \
-       { "lidaction", CTLTYPE_INT }, \
+       { "lidaction", CTLTYPE_STRING }, \
        { "forceukbd", CTLTYPE_INT }, \
 }
 
Index: sys/arch/loongson/loongson/machdep.c
===================================================================
RCS file: /cvs/src/sys/arch/loongson/loongson/machdep.c,v
retrieving revision 1.79
diff -u -p -r1.79 machdep.c
--- sys/arch/loongson/loongson/machdep.c        12 Jul 2017 06:26:33 -0000      
1.79
+++ sys/arch/loongson/loongson/machdep.c        25 Jul 2017 19:33:32 -0000
@@ -152,6 +152,8 @@ extern      void parsepmonbp(void);
 const struct platform *loongson_identify(const char *, int);
 vaddr_t        mips_init(uint64_t, uint64_t, uint64_t, uint64_t, char *);
 
+int    sysctl_cpulidaction(void *, size_t *, void *, size_t);
+
 extern void htb_early_setup(void);
 
 extern void loongson2e_setup(u_long, u_long);
@@ -1021,26 +1023,57 @@ int
 cpu_sysctl(int *name, u_int namelen, void *oldp, size_t *oldlenp, void *newp,
     size_t newlen, struct proc *p)
 {
-       int val, error;
-
        /* All sysctl names at this level are terminal. */
        if (namelen != 1)
                return ENOTDIR;         /* Overloaded */
 
        switch (name[0]) {
        case CPU_LIDACTION:
-               val = lid_action;
-               error = sysctl_int(oldp, oldlenp, newp, newlen, &val);
-               if (!error) {
-                       if (val < 0 || val > 2)
-                               error = EINVAL;
-                       else
-                               lid_action = val;
-               }
-               return error;
+               return (sysctl_cpulidaction(oldp, oldlenp, newp, newlen));
        default:
                return EOPNOTSUPP;
        }
+}
+
+int
+sysctl_cpulidaction(void *oldp, size_t *oldlenp, void *newp, size_t newlen)
+{
+       char action[10];
+       int error;
+
+       switch (lid_action) {
+       case 0:
+       default:
+               strlcpy(action, "none", sizeof(action));
+               break;
+       case 1:
+               strlcpy(action, "suspend", sizeof(action));
+               break;
+#ifdef HIBERNATE
+       case 2:
+               strlcpy(action, "hibernate", sizeof(action));
+               break;
+#endif
+       }
+
+       error = sysctl_string(oldp, oldlenp, newp, newlen, action, 
sizeof(action));
+       if (error)
+               return error;
+
+       if (newp != NULL) {
+               if (strcmp(action, "none") == 0)
+                       lid_action = 0;
+               else if (strcmp(action, "suspend") == 0)
+                       lid_action = 1;
+#ifdef HIBERNATE
+               else if (strcmp(action, "hibernate") == 0)
+                       lid_action = 2;
+#endif
+               else
+                       return EINVAL;
+       }
+
+       return 0;
 }
 
 int    waittime = -1;
Index: sys/arch/mips64/include/cpu.h
===================================================================
RCS file: /cvs/src/sys/arch/mips64/include/cpu.h,v
retrieving revision 1.119
diff -u -p -r1.119 cpu.h
--- sys/arch/mips64/include/cpu.h       12 Jul 2017 06:26:33 -0000      1.119
+++ sys/arch/mips64/include/cpu.h       23 Jul 2017 16:23:02 -0000
@@ -373,7 +373,7 @@ void        cp0_calibrate(struct cpu_info *);
        { "allowaperture", CTLTYPE_INT },       \
        { 0, 0 },                               \
        { 0, 0 },                               \
-       { "lidaction", CTLTYPE_INT },           \
+       { "lidaction", CTLTYPE_STRING },        \
 }
 
 /*
Index: sbin/init/init.c
===================================================================
RCS file: /cvs/src/sbin/init/init.c,v
retrieving revision 1.65
diff -u -p -r1.65 init.c
--- sbin/init/init.c    16 Jun 2017 06:46:54 -0000      1.65
+++ sbin/init/init.c    26 Jul 2017 19:11:02 -0000
@@ -1327,10 +1327,10 @@ f_nice_death(void)
 
 #ifdef CPU_LIDACTION
        int mib[] = {CTL_MACHDEP, CPU_LIDACTION};
-       int lidaction = 0;
+       char lidaction[] = "none";
 
        if ((death_howto & RB_POWERDOWN) &&
-           (sysctl(mib, 2, NULL, NULL, &lidaction,
+           (sysctl(mib, 2, NULL, NULL, lidaction,
                    sizeof(lidaction)) == -1) && (errno != EOPNOTSUPP))
                        warning("cannot disable lid action");
 #endif
Index: sbin/reboot/reboot.c
===================================================================
RCS file: /cvs/src/sbin/reboot/reboot.c,v
retrieving revision 1.37
diff -u -p -r1.37 reboot.c
--- sbin/reboot/reboot.c        16 Jun 2017 06:46:54 -0000      1.37
+++ sbin/reboot/reboot.c        26 Jul 2017 19:14:19 -0000
@@ -116,9 +116,9 @@ main(int argc, char *argv[])
        if (howto & RB_POWERDOWN) {
                /* Disable suspending on laptop lid close */
                int mib[] = {CTL_MACHDEP, CPU_LIDACTION};
-               int lidaction = 0;
+               char lidaction[] = "none";
 
-               if (sysctl(mib, 2, NULL, NULL, &lidaction,
+               if (sysctl(mib, 2, NULL, NULL, lidaction,
                    sizeof(lidaction)) == -1 && errno != EOPNOTSUPP)
                        warn("sysctl");
        }

Reply via email to