From fb8c3411687e757c648ed5e534f4527266d3d833 Mon Sep 17 00:00:00 2001 From: Claudio Matsuoka Date: Thu, 21 Feb 2008 09:43:35 -0300 Subject: [PATCH] Change poweroff method to reboot(RB_POWER_OFF) (Metalshark) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Metalshark says: February 19th, 2008 at 9:10 pm There is an issue with some ACPI/Kernel combinations to do with shutdown. It isn’t always powering off (tried /proc/acpi and /sys methods) - however removing all the fd > 5 stuff and putting in the simple line “reboot(RB_POWER_OFF);” worked for all thus far. Although semantically incorrect it is a working solution. Signed-off-by: Claudio Matsuoka --- Makefile | 5 +++-- finit-alt.c | 7 +------ finit-mod.c | 9 +++------ 3 files changed, 7 insertions(+), 14 deletions(-) diff --git a/Makefile b/Makefile index 4a1097c3..190d797d 100644 --- a/Makefile +++ b/Makefile @@ -6,6 +6,7 @@ LIBS = VERSION = 0.3-pre PKG = finit-$(VERSION) DFILES = Makefile README finit.c finit-mod.c finit-alt.c helpers.c helpers.h +BINS = finit finit-mod finit-mdv #### Configurable parameters @@ -31,7 +32,7 @@ CFLAGS += -march=pentium-m .c.o: $(CC) -c $(CFLAGS) -o $*.o $< -all: finit finit-mod finit-mdv +all: $(BINS) finit: finit.o $(LD) $(LDFLAGS) -o $@ $+ $(LIBS) @@ -49,7 +50,7 @@ finit-mdv.o: finit-alt.c Makefile $(CC) -c $(CFLAGS) -DDIST_MDV -o $@ finit-alt.c clean: - rm -f *.o core *~ + rm -f *.o core *~ $(BINS) finit.o: finit.c Makefile diff --git a/finit-alt.c b/finit-alt.c index ab4db62a..7077c3b5 100644 --- a/finit-alt.c +++ b/finit-alt.c @@ -328,8 +328,6 @@ int main() */ void shutdown(int sig) { - int fd; - debug("shutdown"); touch("/tmp/shutdown"); @@ -354,10 +352,7 @@ void shutdown(int sig) if (sig == SIGINT || sig == SIGUSR1) reboot(RB_AUTOBOOT); - if ((fd = open("/sys/power/state", O_WRONLY)) >= 0) { - write(fd, "5", 1); - close(fd); - } + reboot(RB_POWER_OFF); } diff --git a/finit-mod.c b/finit-mod.c index 5e3112c0..6957c7a0 100644 --- a/finit-mod.c +++ b/finit-mod.c @@ -38,6 +38,8 @@ Changelog from the original Eeepc fastinit: - Set loopback interface using direct calls instead of system("ifconfig") - Copy 4096 data block in C instead of system("cat") or system("dd") - Draw shutdown splash screen using C calls instead of system("echo;cat") +- Change poweroff method from writing 5 to /sys/power/state to + reboot(RB_POWER_OFF) (by Metalshark) */ @@ -271,8 +273,6 @@ int main() */ void shutdown(int sig) { - int fd; - touch("/tmp/shutdown"); kill(-1, SIGTERM); @@ -296,10 +296,7 @@ void shutdown(int sig) if (sig == SIGINT || sig == SIGUSR1) reboot(RB_AUTOBOOT); - if ((fd = open("/sys/power/state", O_WRONLY)) >= 0) { - write(fd, "5", 1); - close(fd); - } + reboot(RB_POWER_OFF); }