diff options
author | Marcin Juszkiewicz <hrw@openembedded.org> | 2006-01-26 16:59:16 +0000 |
---|---|---|
committer | OpenEmbedded Project <openembedded-devel@lists.openembedded.org> | 2006-01-26 16:59:16 +0000 |
commit | 8d17ee65c66e5e6af8a835c43ef7567b9451144e (patch) | |
tree | 81271ed5088561e1118fa1ef98f983da5573dc4e /packages/apmd/apmd-3.2.2/zaurus24.patch | |
parent | ba8c1624b6e26e750a9b6faf9cc31f766d999035 (diff) |
apm: finally fixed suspend/resume problem on Zaurus with 2.4-crapix
- rewritten /usr/bin/apm wrapper from shell to C and added into apm
- now Zaurus machines can be suspended by non-root users
- die Sharp, die!
Diffstat (limited to 'packages/apmd/apmd-3.2.2/zaurus24.patch')
-rw-r--r-- | packages/apmd/apmd-3.2.2/zaurus24.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/apmd/apmd-3.2.2/zaurus24.patch b/packages/apmd/apmd-3.2.2/zaurus24.patch new file mode 100644 index 0000000000..5df016ab77 --- /dev/null +++ b/packages/apmd/apmd-3.2.2/zaurus24.patch @@ -0,0 +1,50 @@ +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: |