diff options
Diffstat (limited to 'usr.sbin/sysinstall/config.c')
-rw-r--r-- | usr.sbin/sysinstall/config.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/usr.sbin/sysinstall/config.c b/usr.sbin/sysinstall/config.c index a1b5044..29e7cfe 100644 --- a/usr.sbin/sysinstall/config.c +++ b/usr.sbin/sysinstall/config.c @@ -45,6 +45,7 @@ #include <unistd.h> #include <sys/mount.h> #include <time.h> +#include <kenv.h> static Chunk *chunk_list[MAX_CHUNKS]; static int nchunks; @@ -1053,3 +1054,40 @@ configEtcTtys(dialogMenuItem *self) restorescr(w); return DITEM_SUCCESS; } + +#ifdef __i386__ +int +checkLoaderACPI(void) +{ + char val[4]; + + if (kenv(KENV_GET, "loader.acpi_disabled_by_user", &val[0], 4) <= 0) { + return (0); + } + + if (strtol(&val[0], NULL, 10) <= 0) { + return (0); + } + + return (1); +} + +int +configLoaderACPI(int disable) +{ + FILE *ldconf; + + ldconf = fopen("/boot/loader.conf", "a"); + if (ldconf == NULL) { + msgConfirm("Unable to open /boot/loader.conf. Please consult the\n" + "FreeBSD Handbook for instructions on disabling ACPI"); + return DITEM_FAILURE; + } + + fprintf(ldconf, "# --- Generated by sysinstall ---\n"); + fprintf(ldconf, "hint.acpi.0.disabled=%d\n", disable); + fclose(ldconf); + + return DITEM_SUCCESS; +} +#endif |