亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dpm-core-2.6.16.patch

?? Linus Dynamic Power Management Soruce code
?? PATCH
?? 第 1 頁 / 共 5 頁
字號:
Index: linux-2.6.16/arch/arm/Kconfig===================================================================--- linux-2.6.16.orig/arch/arm/Kconfig	2006-03-20 05:53:29.000000000 +0000+++ linux-2.6.16/arch/arm/Kconfig	2006-04-11 06:34:10.000000000 +0000@@ -832,3 +832,5 @@ source "crypto/Kconfig"  source "lib/Kconfig"++source "drivers/dpm/Kconfig"Index: linux-2.6.16/arch/i386/Kconfig===================================================================--- linux-2.6.16.orig/arch/i386/Kconfig	2006-03-20 05:53:29.000000000 +0000+++ linux-2.6.16/arch/i386/Kconfig	2006-04-11 06:34:10.000000000 +0000@@ -908,6 +908,7 @@ endmenu  source "arch/i386/kernel/cpu/cpufreq/Kconfig"+source "arch/i386/kernel/cpu/dpm/Kconfig"  endmenu Index: linux-2.6.16/arch/i386/kernel/cpu/Makefile===================================================================--- linux-2.6.16.orig/arch/i386/kernel/cpu/Makefile	2006-03-20 05:53:29.000000000 +0000+++ linux-2.6.16/arch/i386/kernel/cpu/Makefile	2006-04-11 06:34:10.000000000 +0000@@ -17,3 +17,4 @@  obj-$(CONFIG_MTRR)	+= 	mtrr/ obj-$(CONFIG_CPU_FREQ)	+=	cpufreq/+obj-$(CONFIG_DPM)	+=	dpm/Index: linux-2.6.16/arch/i386/kernel/cpu/dpm/Kconfig===================================================================--- linux-2.6.16.orig/arch/i386/kernel/cpu/dpm/Kconfig	1970-01-01 00:00:00.000000000 +0000+++ linux-2.6.16/arch/i386/kernel/cpu/dpm/Kconfig	2006-04-11 06:34:10.000000000 +0000@@ -0,0 +1,10 @@+#+# Dynamic Power Management+#++source "drivers/dpm/Kconfig"++config DPM_CENTRINO+       tristate "DPM for Intel Centrino Enhanced Speedstep"+       depends on DPM+       default nIndex: linux-2.6.16/arch/i386/kernel/cpu/dpm/Makefile===================================================================--- linux-2.6.16.orig/arch/i386/kernel/cpu/dpm/Makefile	1970-01-01 00:00:00.000000000 +0000+++ linux-2.6.16/arch/i386/kernel/cpu/dpm/Makefile	2006-04-11 06:34:10.000000000 +0000@@ -0,0 +1,3 @@+obj-$(CONFIG_DPM)		+=	x86_dpm.o+obj-$(CONFIG_DPM_CENTRINO)	+=	centrino_dpm.o+Index: linux-2.6.16/arch/i386/kernel/cpu/dpm/centrino_dpm.c===================================================================--- linux-2.6.16.orig/arch/i386/kernel/cpu/dpm/centrino_dpm.c	1970-01-01 00:00:00.000000000 +0000+++ linux-2.6.16/arch/i386/kernel/cpu/dpm/centrino_dpm.c	2006-04-11 06:34:10.000000000 +0000@@ -0,0 +1,133 @@+/*+ * 2003 (c) MontaVista Software, Inc.  This file is licensed under the+ * terms of the GNU General Public License version 2. This program is+ * licensed "as is" without any warranty of any kind, whether express+ * or implied.+ *+ * Based on speedstep-centrino.c by Jeremy Fitzhardinge <jeremy@goop.org>+ */++#include <linux/config.h>+#include <linux/dpm.h>+#include <linux/errno.h>+#include <linux/init.h>+#include <linux/kernel.h>+#include <linux/delay.h>++#include <asm/msr.h>+#include <asm/processor.h>+#include <asm/cpufeature.h>++/* Extract clock in kHz from PERF_CTL value */+static unsigned extract_clock(unsigned msr)+{+	msr = (msr >> 8) & 0xff;+	return msr * 100000;+}++/* Return the current CPU frequency in kHz */+static unsigned get_cur_freq(void)+{+	unsigned l, h;++	rdmsr(MSR_IA32_PERF_STATUS, l, h);+	return extract_clock(l);+}++static int+dpm_centrino_init_opt(struct dpm_opt *opt)+{+	int v		= opt->pp[DPM_MD_V];+	int cpu		= opt->pp[DPM_MD_CPU_FREQ];++	struct dpm_md_opt *md_opt = &opt->md_opt;++	md_opt->v = v;+	md_opt->cpu = cpu;+	return 0;+}++/* Fully determine the current machine-dependent operating point, and fill in a+   structure presented by the caller. This should only be called when the+   dpm_sem is held. This call can return an error if the system is currently at+   an operating point that could not be constructed by dpm_md_init_opt(). */++static int+dpm_centrino_get_opt(struct dpm_opt *opt)+{+	struct dpm_md_opt *md_opt = &opt->md_opt;++	md_opt->v = 100; /* TODO. */+	md_opt->cpu = get_cur_freq();+	return 0;+}++static int+dpm_centrino_set_opt(struct dpm_md_opt *md_opt)+{+	unsigned int msr = 0, oldmsr, h, mask = 0;++	if (md_opt->cpu != -1) {+		msr |= ((md_opt->cpu)/100) << 8;+		mask |= 0xff00;+	}++	if (md_opt->v != -1) {+		msr |= ((md_opt->v - 700) / 16);+		mask |= 0xff;+	}++	rdmsr(MSR_IA32_PERF_CTL, oldmsr, h);++	if (msr == (oldmsr & mask))+		return 0;++	/* all but 16 LSB are "reserved", so treat them with+	   care */+	oldmsr &= ~mask;+	msr &= mask;+	oldmsr |= msr;++	wrmsr(MSR_IA32_PERF_CTL, oldmsr, h);+	return 0;+}++static int dpm_centrino_startup(void)+{+	struct cpuinfo_x86 *cpu = cpu_data;+	unsigned l, h;++	if (!cpu_has(cpu, X86_FEATURE_EST))+		return -ENODEV;++	/* Check to see if Enhanced SpeedStep is enabled, and try to+	   enable it if not. */+	rdmsr(MSR_IA32_MISC_ENABLE, l, h);++	if (!(l & (1<<16))) {+		l |= (1<<16);+		wrmsr(MSR_IA32_MISC_ENABLE, l, h);++		/* check to see if it stuck */+		rdmsr(MSR_IA32_MISC_ENABLE, l, h);+		if (!(l & (1<<16))) {+			printk(KERN_INFO "DPM: Couldn't enable Enhanced SpeedStep\n");+			return -ENODEV;+		}+	}++	return 0;+}++int __init dpm_centrino_init(void)+{+	printk("Dynamic Power Management for Intel Centrino Enhanced SpeedStep.\n");++	dpm_bd.startup = dpm_centrino_startup;+	dpm_bd.init_opt = dpm_centrino_init_opt;+	dpm_bd.get_opt = dpm_centrino_get_opt;+	dpm_bd.set_opt = dpm_centrino_set_opt;+	return 0;+}++__initcall(dpm_centrino_init);Index: linux-2.6.16/arch/i386/kernel/cpu/dpm/x86_dpm.c===================================================================--- linux-2.6.16.orig/arch/i386/kernel/cpu/dpm/x86_dpm.c	1970-01-01 00:00:00.000000000 +0000+++ linux-2.6.16/arch/i386/kernel/cpu/dpm/x86_dpm.c	2006-04-11 06:34:10.000000000 +0000@@ -0,0 +1,133 @@+/*+ * 2003 (c) MontaVista Software, Inc.  This file is licensed under the+ * terms of the GNU General Public License version 2. This program is+ * licensed "as is" without any warranty of any kind, whether express+ * or implied.+ */++#include <linux/config.h>+#include <linux/dpm.h>+#include <linux/errno.h>+#include <linux/init.h>+#include <linux/kernel.h>+#include <linux/delay.h>+#include <linux/interrupt.h>++#include <asm/page.h>+#include <asm/uaccess.h>++struct dpm_bd dpm_bd;++static int+dpm_x86_init_opt(struct dpm_opt *opt)+{+	return dpm_bd.init_opt ? dpm_bd.init_opt(opt) : -1;+}++/* Fully determine the current machine-dependent operating point, and fill in a+   structure presented by the caller. This should only be called when the+   dpm_sem is held. This call can return an error if the system is currently at+   an operating point that could not be constructed by dpm_md_init_opt(). */++static unsigned long loops_per_jiffy_ref = 0;++static int+dpm_x86_get_opt(struct dpm_opt *opt)+{+	return dpm_bd.get_opt ? dpm_bd.get_opt(opt) : -1;+}++int+dpm_x86_set_opt(struct dpm_opt *cur, struct dpm_opt *new)+{+	struct cpuinfo_x86 *cpu = cpu_data;++	if (! new->md_opt.cpu) {+#ifdef CONFIG_PM+		pm_suspend(PM_SUSPEND_STANDBY);++	 	/* Here when we wake up.  Recursive call to switch back to+		 * to task state.+		 */++		dpm_set_os(DPM_TASK_STATE);+#endif+		return 0;+	}++	if (dpm_bd.set_opt){+	 	dpm_bd.set_opt(&new->md_opt);++	}else{+		return -1;+	}++       if (cur->md_opt.cpu && new->md_opt.cpu){+		loops_per_jiffy_ref = cpu->loops_per_jiffy;+                cpu->loops_per_jiffy =+			dpm_compute_lpj(loops_per_jiffy_ref ,+                                                  cur->md_opt.cpu,+                                                  new->md_opt.cpu);++		loops_per_jiffy = cpu->loops_per_jiffy;+		if (cpu_khz)+			cpu_khz = dpm_compute_lpj(cpu_khz,+                                                  cur->md_opt.cpu,+                                                  new->md_opt.cpu);+	}+	return 0;+}++/*+ * idle loop+ */++static void (*orig_idle)(void);++void dpm_x86_idle(void)+{+	extern void default_idle(void);++	if (orig_idle)+		orig_idle();+	else+		default_idle();+}++/****************************************************************************+ * Initialization/Exit+ ****************************************************************************/++void+dpm_x86_startup(void)+{+	orig_idle = pm_idle;+	pm_idle = dpm_idle;++	if (dpm_bd.startup)+		dpm_bd.startup();+}++void+dpm_x86_cleanup(void)+{+	pm_idle = orig_idle;++	if (dpm_bd.cleanup)+		dpm_bd.cleanup();+}++int __init+dpm_x86_init(void)+{+	printk("Dynamic Power Management for x86.\n");++	dpm_md.init_opt		= dpm_x86_init_opt;+	dpm_md.set_opt		= dpm_x86_set_opt;+	dpm_md.get_opt		= dpm_x86_get_opt;+	dpm_md.idle		= dpm_x86_idle;+	dpm_md.startup		= dpm_x86_startup;+	dpm_md.cleanup		= dpm_x86_cleanup;+	return 0;+}+__initcall(dpm_x86_init);Index: linux-2.6.16/arch/i386/kernel/process.c===================================================================--- linux-2.6.16.orig/arch/i386/kernel/process.c	2006-03-20 05:53:29.000000000 +0000+++ linux-2.6.16/arch/i386/kernel/process.c	2006-04-11 06:34:10.000000000 +0000@@ -58,6 +58,8 @@ #include <asm/tlbflush.h> #include <asm/cpu.h> +#include <linux/dpm.h>+ asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");  static int hlt_counter;@@ -697,6 +699,7 @@  	disable_tsc(prev_p, next_p); +	dpm_set_os(next_p->dpm_state); 	return prev_p; } Index: linux-2.6.16/drivers/Makefile===================================================================--- linux-2.6.16.orig/drivers/Makefile	2006-03-20 05:53:29.000000000 +0000+++ linux-2.6.16/drivers/Makefile	2006-04-11 06:34:10.000000000 +0000@@ -67,6 +67,7 @@ obj-$(CONFIG_MCA)		+= mca/ obj-$(CONFIG_EISA)		+= eisa/ obj-$(CONFIG_CPU_FREQ)		+= cpufreq/+obj-$(CONFIG_DPM)		+= dpm/ obj-$(CONFIG_MMC)		+= mmc/ obj-$(CONFIG_INFINIBAND)	+= infiniband/ obj-$(CONFIG_SGI_SN)		+= sn/Index: linux-2.6.16/drivers/base/core.c===================================================================--- linux-2.6.16.orig/drivers/base/core.c	2006-03-20 05:53:29.000000000 +0000+++ linux-2.6.16/drivers/base/core.c	2006-04-11 06:34:10.000000000 +0000@@ -282,6 +282,8 @@ 	if (parent) 		klist_add_tail(&dev->knode_parent, &parent->klist_children); +	assert_constraints(dev->constraints);+ 	/* notify platform of device entry */ 	if (platform_notify) 		platform_notify(dev);@@ -367,6 +369,8 @@ 		klist_del(&dev->knode_parent); 	device_remove_file(dev, &dev->uevent_attr); +	deassert_constraints(dev->constraints);+ 	/* Notify the platform of the removal, in case they 	 * need to do anything... 	 */Index: linux-2.6.16/drivers/base/power/Makefile===================================================================--- linux-2.6.16.orig/drivers/base/power/Makefile	2006-03-20 05:53:29.000000000 +0000+++ linux-2.6.16/drivers/base/power/Makefile	2006-04-11 06:34:10.000000000 +0000@@ -1,4 +1,4 @@-obj-y			:= shutdown.o+obj-y			:= shutdown.o power-dpm.o obj-$(CONFIG_PM)	+= main.o suspend.o resume.o runtime.o sysfs.o  ifeq ($(CONFIG_DEBUG_DRIVER),y)Index: linux-2.6.16/drivers/base/power/power-dpm.c===================================================================--- linux-2.6.16.orig/drivers/base/power/power-dpm.c	1970-01-01 00:00:00.000000000 +0000+++ linux-2.6.16/drivers/base/power/power-dpm.c	2006-04-11 06:35:28.000000000 +0000@@ -0,0 +1,473 @@+/*+ * power-dpm.c -- Dynamic Power Management LDM power hooks+ *+ * (c) 2003 MontaVista Software, Inc. This file is licensed under the+ * terms of the GNU General Public License version 2. This program is+ * licensed "as is" without any warranty of any kind, whether express or+ * implied.+ */++#include <linux/device.h>+#include <linux/pm.h>+#include <linux/dpm.h>+#include <linux/sched.h>+#include <linux/init.h>+#include <linux/mm.h>+#include <linux/slab.h>++#include "power.h"++/*+ * power hotplug events+ */++#define BUFFER_SIZE	1024	/* should be enough memory for the env */+#define NUM_ENVP	32	/* number of env pointers */+static unsigned long sequence_num;+static spinlock_t sequence_lock = SPIN_LOCK_UNLOCKED;++void power_event(char *eventstr)+{+	char *argv [3];+	char **envp = NULL;+	char *buffer = NULL;+	char *scratch;+	int i = 0;+	int retval;+	unsigned long seq;++	if (!uevent_helper[0])+		return;++	envp = kmalloc(NUM_ENVP * sizeof (char *), GFP_KERNEL);+	if (!envp)+		return;+	memset (envp, 0x00, NUM_ENVP * sizeof (char *));++	buffer = kmalloc(BUFFER_SIZE, GFP_KERNEL);+	if (!buffer)+		goto exit;++	argv [0] = uevent_helper;+	argv [1] = "power";+	argv [2] = 0;++	/* minimal command environment */+	envp [i++] = "HOME=/";+	envp [i++] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";++	scratch = buffer;++	envp [i++] = scratch;+	scratch += sprintf(scratch, "ACTION=event") + 1;++	spin_lock(&sequence_lock);+	seq = sequence_num++;+	spin_unlock(&sequence_lock);++	envp [i++] = scratch;+	scratch += sprintf(scratch, "SEQNUM=%ld", seq) + 1;+	envp [i++] = scratch;+	scratch += sprintf(scratch, "EVENT=%s", eventstr) + 1;++	pr_debug ("%s: %s %s %s %s %s %s %s\n", __FUNCTION__, argv[0], argv[1],+		  envp[0], envp[1], envp[2], envp[3], envp[4]);+	retval = call_usermodehelper (argv[0], argv, envp, 0);+	if (retval)+		pr_debug ("%s - call_usermodehelper returned %d\n",+			  __FUNCTION__, retval);++exit:+	kfree(buffer);+	kfree(envp);+	return;+}++void device_power_event(struct device * dev, char *eventstr)+{+	char *argv [3];+	char **envp = NULL;+	char *buffer = NULL;+	char *scratch;+	int i = 0;+	int retval;+	unsigned long seq;++	if (!uevent_helper[0])+		return;++	envp = kmalloc(NUM_ENVP * sizeof (char *), GFP_KERNEL);+	if (!envp)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
狠狠色丁香婷婷综合久久片| 亚洲一区二区三区视频在线 | 蜜桃精品在线观看| 国产精品中文有码| 欧美三级三级三级| 久久亚洲影视婷婷| 夜夜嗨av一区二区三区中文字幕 | 一本久久综合亚洲鲁鲁五月天 | 国产校园另类小说区| 一区二区三区在线播| 91福利国产精品| 国产精品久久久久久久裸模| 日韩精品国产欧美| 一本到一区二区三区| 亚洲成av人片在线观看无码| 97精品国产露脸对白| 精品精品国产高清a毛片牛牛| 亚洲自拍另类综合| 69堂成人精品免费视频| 亚洲麻豆国产自偷在线| 国产精选一区二区三区| 国产精品成人午夜| 欧美久久一区二区| 一区二区三区波多野结衣在线观看 | 成人午夜免费视频| 日韩欧美国产电影| 五月天欧美精品| 欧美午夜精品理论片a级按摩| 亚洲欧洲韩国日本视频| 岛国精品在线观看| 午夜亚洲国产au精品一区二区| 久久综合成人精品亚洲另类欧美| av网站免费线看精品| 国产精品久久久久久久久搜平片 | 韩国一区二区视频| 亚洲男人都懂的| 精品电影一区二区| 欧美在线一区二区| 亚洲午夜精品17c| 欧美美女直播网站| 日本亚洲免费观看| 精品福利一区二区三区| 色婷婷综合久久久中文一区二区| 久久精品国产99| 久久午夜免费电影| 91久久一区二区| 高清在线观看日韩| 中文字幕在线观看一区| 日韩欧美久久一区| 精品视频999| 99精品欧美一区| 国产毛片精品视频| 国产精品久99| 欧美mv日韩mv国产网站app| 国产一区二区三区香蕉| 性久久久久久久| 综合激情成人伊人| 制服.丝袜.亚洲.另类.中文| 91网址在线看| 日韩va欧美va亚洲va久久| 亚洲柠檬福利资源导航| 国产精品国产精品国产专区不片| 26uuu色噜噜精品一区二区| 91.xcao| 欧美日韩国产成人在线91| 91影院在线观看| 从欧美一区二区三区| 国产真实乱子伦精品视频| 日韩高清在线一区| 日日嗨av一区二区三区四区| 亚洲一区二区在线免费看| 亚洲乱码一区二区三区在线观看| 7777精品伊人久久久大香线蕉的| 欧美图区在线视频| 欧美日韩精品一区二区三区四区 | 欧美一区二区三区免费大片| 丁香激情综合五月| 国产精品一区二区久久精品爱涩| 麻豆精品国产91久久久久久 | 日韩高清国产一区在线| 亚洲国产精品一区二区久久 | 中文字幕欧美激情| 欧美亚洲日本一区| 色婷婷国产精品| 色中色一区二区| 色综合久久88色综合天天 | 91丨九色丨尤物| 色欧美日韩亚洲| 欧美亚洲日本一区| 在线不卡中文字幕播放| 在线不卡的av| 日韩欧美精品在线| 中文字幕一区视频| 一色桃子久久精品亚洲| 亚洲人吸女人奶水| 亚洲影视在线观看| 日韩成人免费电影| 国产中文字幕精品| 成人毛片老司机大片| 成人av在线电影| 日本不卡视频在线观看| 亚洲色图欧美偷拍| 亚洲成a人片综合在线| 免费在线观看精品| 国产激情视频一区二区在线观看| 日韩vs国产vs欧美| 国产精品77777| 波多野洁衣一区| 欧美无人高清视频在线观看| 欧美一卡2卡3卡4卡| 国产清纯白嫩初高生在线观看91| 日韩免费观看2025年上映的电影 | 1000部国产精品成人观看| 一区二区三区欧美视频| 青青草原综合久久大伊人精品 | 午夜不卡av免费| 国产成人精品一区二区三区网站观看| 成人18精品视频| 欧美精品久久久久久久久老牛影院| 欧美videossexotv100| 亚洲欧洲精品成人久久奇米网| 性做久久久久久久久| 国产成人啪午夜精品网站男同| 欧美影院一区二区三区| 精品国产一区二区三区av性色| 亚洲欧美日韩久久精品| 久久精品国产一区二区三区免费看| www.色综合.com| 日韩欧美色电影| 亚洲精品高清在线| 国产一区激情在线| 欧美日韩国产高清一区| 国产精品人人做人人爽人人添| 国产清纯美女被跳蛋高潮一区二区久久w| 亚洲激情图片小说视频| 国产麻豆精品一区二区| 欧美日韩视频在线第一区 | 视频一区中文字幕| av午夜一区麻豆| 精品理论电影在线| 五月天一区二区三区| av资源站一区| 久久久蜜桃精品| 日韩美女啊v在线免费观看| 精品一区二区三区在线观看| 风间由美一区二区av101| 欧美一区二区视频在线观看2022| 亚洲欧美视频在线观看| 国产91露脸合集magnet| 精品日产卡一卡二卡麻豆| 午夜精品久久久久影视| 91蝌蚪porny| 国产精品美女久久久久aⅴ | 日本福利一区二区| 国产精品久久二区二区| 粉嫩绯色av一区二区在线观看| 日韩欧美国产午夜精品| 亚洲一区二区三区中文字幕 | 国产精品一区二区久久不卡 | 欧美体内she精高潮| 亚洲婷婷综合色高清在线| 成人激情电影免费在线观看| 久久久777精品电影网影网| 狠狠色综合日日| 精品国产髙清在线看国产毛片| 爽好久久久欧美精品| 欧美在线视频你懂得| 一区二区三区中文字幕电影 | 在线观看亚洲一区| 亚洲精品视频在线| 日本韩国欧美在线| 亚洲激情在线播放| www.99精品| 亚洲欧美一区二区三区国产精品| 本田岬高潮一区二区三区| 国产精品美女久久久久久久网站| 成人性生交大片免费看中文 | 一本色道久久综合狠狠躁的推荐 | 欧美午夜片在线看| 亚洲成人高清在线| 91精品国产欧美一区二区成人| 青娱乐精品视频| 久久午夜电影网| 波多野结衣亚洲一区| 一区二区三区四区不卡视频| 欧美人与z0zoxxxx视频| 蜜桃91丨九色丨蝌蚪91桃色| 欧美成人a视频| 懂色中文一区二区在线播放| 国产精品久久久久久久久动漫| 在线观看免费视频综合| 图片区小说区国产精品视频| 精品久久久久久无| 成人禁用看黄a在线| 亚洲一区在线视频| 日韩欧美一二区| www.视频一区| 日韩在线一区二区三区| 精品99久久久久久| 91麻豆6部合集magnet|