Index: apmd-3.2.2.orig/apm.c =================================================================== --- apmd-3.2.2.orig.orig/apm.c 2006-01-26 15:15:27.000000000 +0100 +++ apmd-3.2.2.orig/apm.c 2006-01-26 17:50:14.000000000 +0100 @@ -24,10 +24,12 @@ #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> +#include <sys/utsname.h> #include <fcntl.h> #include <errno.h> #include <time.h> #include <getopt.h> +#include <signal.h> #include "apm.h" static int verbose = 0; @@ -43,6 +45,9 @@ int fd; time_t then, now; int error; + FILE* pid_file; + int apmd_pid; + struct utsname uname_ver; fd = open(APM_DEVICE, O_WRONLY); if (fd < 0) @@ -54,6 +59,22 @@ switch (mode) { case SUSPEND: + if(0 == system("grep -i hardware /proc/cpuinfo|grep -i SHARP")) + { + uname(&uname_ver); + + if(0 == strncmp("2.4", uname_ver.release, 3)) + { + pid_file = fopen("/var/run/apmd.pid", "r"); + if(pid_file) + { + fscanf(pid_file, "%d", &apmd_pid); + fclose(pid_file); + } + + kill(apmd_pid, SIGKILL); + } + } error = apm_suspend(fd); break; case STANDBY: