diff options
author | Felix Fietkau <nbd@openwrt.org> | 2009-06-14 20:42:33 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2009-06-14 20:42:33 +0000 |
commit | f88360279f91387dc61725226ad38c3c95d3790a (patch) | |
tree | 66d21f3483914eb7e674c45f3497ab8912094ac0 /target/linux/goldfish/patches-2.6.30/0064-PM-Add-wake-lock-api.patch | |
parent | a6d8f8be9e06c5ffb03f815c8c76ba743c64aa3d (diff) | |
download | upstream-f88360279f91387dc61725226ad38c3c95d3790a.tar.gz upstream-f88360279f91387dc61725226ad38c3c95d3790a.tar.bz2 upstream-f88360279f91387dc61725226ad38c3c95d3790a.zip |
add the 'goldfish' target, useful for experimenting with virtual phone hardware (includes the emulator)
SVN-Revision: 16459
Diffstat (limited to 'target/linux/goldfish/patches-2.6.30/0064-PM-Add-wake-lock-api.patch')
-rw-r--r-- | target/linux/goldfish/patches-2.6.30/0064-PM-Add-wake-lock-api.patch | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/target/linux/goldfish/patches-2.6.30/0064-PM-Add-wake-lock-api.patch b/target/linux/goldfish/patches-2.6.30/0064-PM-Add-wake-lock-api.patch new file mode 100644 index 0000000000..bd4d364adc --- /dev/null +++ b/target/linux/goldfish/patches-2.6.30/0064-PM-Add-wake-lock-api.patch @@ -0,0 +1,104 @@ +From e93bd714c424d9fe907cb1d8ec5ce784767a3b16 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Arve=20Hj=C3=B8nnev=C3=A5g?= <arve@android.com> +Date: Fri, 26 Sep 2008 22:10:56 -0700 +Subject: [PATCH 064/134] PM: Add wake lock api. + +--- + include/linux/wakelock.h | 91 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 91 insertions(+), 0 deletions(-) + create mode 100755 include/linux/wakelock.h + +--- /dev/null ++++ b/include/linux/wakelock.h +@@ -0,0 +1,91 @@ ++/* include/linux/wakelock.h ++ * ++ * Copyright (C) 2007-2008 Google, Inc. ++ * ++ * This software is licensed under the terms of the GNU General Public ++ * License version 2, as published by the Free Software Foundation, and ++ * may be copied, distributed, and modified under those terms. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ */ ++ ++#ifndef _LINUX_WAKELOCK_H ++#define _LINUX_WAKELOCK_H ++ ++#include <linux/list.h> ++#include <linux/ktime.h> ++ ++/* A wake_lock prevents the system from entering suspend or other low power ++ * states when active. If the type is set to WAKE_LOCK_SUSPEND, the wake_lock ++ * prevents a full system suspend. If the type is WAKE_LOCK_IDLE, low power ++ * states that cause large interrupt latencies or that disable a set of ++ * interrupts will not entered from idle until the wake_locks are released. ++ */ ++ ++enum { ++ WAKE_LOCK_SUSPEND, /* Prevent suspend */ ++ WAKE_LOCK_IDLE, /* Prevent low power idle */ ++ WAKE_LOCK_TYPE_COUNT ++}; ++ ++struct wake_lock { ++#ifdef CONFIG_HAS_WAKELOCK ++ struct list_head link; ++ int flags; ++ const char *name; ++ unsigned long expires; ++#ifdef CONFIG_WAKELOCK_STAT ++ struct { ++ int count; ++ int expire_count; ++ int wakeup_count; ++ ktime_t total_time; ++ ktime_t prevent_suspend_time; ++ ktime_t max_time; ++ ktime_t last_time; ++ } stat; ++#endif ++#endif ++}; ++ ++#ifdef CONFIG_HAS_WAKELOCK ++ ++void wake_lock_init(struct wake_lock *lock, int type, const char *name); ++void wake_lock_destroy(struct wake_lock *lock); ++void wake_lock(struct wake_lock *lock); ++void wake_lock_timeout(struct wake_lock *lock, long timeout); ++void wake_unlock(struct wake_lock *lock); ++ ++/* wake_lock_active returns a non-zero value if the wake_lock is currently ++ * locked. If the wake_lock has a timeout, it does not check the timeout ++ * but if the timeout had aready been checked it will return 0. ++ */ ++int wake_lock_active(struct wake_lock *lock); ++ ++/* has_wake_lock returns 0 if no wake locks of the specified type are active, ++ * and non-zero if one or more wake locks are held. Specifically it returns ++ * -1 if one or more wake locks with no timeout are active or the ++ * number of jiffies until all active wake locks time out. ++ */ ++long has_wake_lock(int type); ++ ++#else ++ ++static inline void wake_lock_init(struct wake_lock *lock, int type, ++ const char *name) {} ++static inline void wake_lock_destroy(struct wake_lock *lock) {} ++static inline void wake_lock(struct wake_lock *lock) {} ++static inline void wake_lock_timeout(struct wake_lock *lock, long timeout) {} ++static inline void wake_unlock(struct wake_lock *lock) {} ++ ++static inline int wake_lock_active(struct wake_lock *lock) { return 0; } ++static inline long has_wake_lock(int type) { return 0; } ++ ++#endif ++ ++#endif ++ |