Change poweroff method to reboot(RB_POWER_OFF) (Metalshark)

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 <cmatsuoka@gmail.com>
This commit is contained in:
Claudio Matsuoka committed 2008-02-21 09:43:35 -03:00
1 parent 7137573534
commit fb8c341168
3 files changed
+7 -14

No files matched your search

+3 -2
View File
@@ -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
+1 -6
View File
@@ -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);
}
+3 -6
View File
@@ -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);
}