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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? dpm-core-2.6.16.patch

?? Linus Dynamic Power Management Soruce code
?? PATCH
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
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)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人久久精品77777最新版本| 日韩一区国产二区欧美三区| 国产乱码精品1区2区3区| 午夜亚洲国产au精品一区二区| 亚洲久本草在线中文字幕| 国产精品女同互慰在线看| 国产三级欧美三级| 国产亚洲污的网站| 国产人成亚洲第一网站在线播放| 亚洲精品一区二区三区影院| 精品久久久久久久久久久久久久久久久 | 中文字幕制服丝袜成人av| 国产亚洲一区二区三区在线观看 | 久久综合色播五月| 精品国产乱码久久久久久图片 | 波多野结衣精品在线| 成a人片亚洲日本久久| zzijzzij亚洲日本少妇熟睡| yourporn久久国产精品| 91在线丨porny丨国产| 色哟哟一区二区在线观看| 一本到三区不卡视频| 欧美影院午夜播放| 欧美日韩一区在线| 91精品麻豆日日躁夜夜躁| 欧美大度的电影原声| 欧美精品一区二区在线播放| 国产色婷婷亚洲99精品小说| 中文字幕在线一区| 有码一区二区三区| 日韩在线卡一卡二| 欧美人体做爰大胆视频| 欧美日韩国产不卡| 日韩情涩欧美日韩视频| 久久久久88色偷偷免费| 日韩美女精品在线| 日韩中文字幕1| 国产久卡久卡久卡久卡视频精品| av在线播放不卡| 精品视频一区三区九区| 日韩欧美亚洲国产另类| 国产女主播一区| 一区二区三区欧美在线观看| 日韩精品91亚洲二区在线观看 | 国产精品一区二区在线播放| 99久久精品一区二区| 欧美日韩国产bt| 久久天堂av综合合色蜜桃网| 成人欧美一区二区三区小说| 亚洲成av人在线观看| 激情深爱一区二区| 99精品国产一区二区三区不卡| 欧美美女激情18p| 久久精品人人做人人爽97| 亚洲欧洲综合另类在线| 蜜臀av一区二区在线观看| 国产69精品久久久久毛片| 欧美午夜在线一二页| 欧美精品一区在线观看| 一区二区免费在线| 狠狠狠色丁香婷婷综合激情| 在线日韩一区二区| 久久免费电影网| 亚洲成人免费观看| 波多野结衣中文字幕一区二区三区| 欧美日韩亚洲综合一区| 欧美韩国日本综合| 日韩综合小视频| 99久久亚洲一区二区三区青草| 日韩一二在线观看| 亚洲免费av观看| 国产麻豆欧美日韩一区| 正在播放亚洲一区| |精品福利一区二区三区| 精品在线免费视频| 欧美色成人综合| 国产精品久久毛片a| 久久国产精品72免费观看| 欧美综合久久久| 国产精品欧美一区喷水| 91麻豆精品国产91久久久更新时间| 国产精品久久久久桃色tv| 美女在线视频一区| 欧美喷潮久久久xxxxx| 日韩一区中文字幕| 国产91在线|亚洲| 精品伦理精品一区| 日本亚洲三级在线| 欧美午夜精品久久久久久孕妇 | 黄页网站大全一区二区| 欧美日本乱大交xxxxx| 亚洲日本一区二区三区| 成人性生交大片免费看在线播放| 日韩视频一区二区三区| 午夜欧美在线一二页| 99久久精品免费精品国产| 国产亚洲精品7777| 精品一区二区免费视频| 日韩欧美一级二级三级久久久| 午夜精品免费在线| 欧美日韩五月天| 一区二区日韩av| 欧美专区日韩专区| 亚洲精品ww久久久久久p站| 白白色亚洲国产精品| 国产日韩影视精品| 福利一区福利二区| 国产欧美一区二区在线观看| 国产精一区二区三区| 久久综合色播五月| 国产在线不卡一区| 久久久久88色偷偷免费| 国产精品18久久久久久久久| 亚洲精品在线一区二区| 精东粉嫩av免费一区二区三区 | 成人精品免费视频| 欧美激情一区二区三区| 国产999精品久久久久久| 国产精品人人做人人爽人人添| 国产精品一二一区| 国产欧美一区二区精品忘忧草| 国产成人自拍高清视频在线免费播放| 久久久综合九色合综国产精品| 国产一区二区调教| 中文幕一区二区三区久久蜜桃| 成人免费视频播放| 亚洲精品中文字幕乱码三区 | 欧美激情在线一区二区| 国产精品亚洲综合一区在线观看| 国产亚洲综合在线| 成人激情午夜影院| 一区二区久久久久久| 91精品福利在线一区二区三区 | xfplay精品久久| 成人激情校园春色| 亚洲尤物视频在线| 欧美一级午夜免费电影| 国产综合色精品一区二区三区| 国产日本一区二区| 在线观看免费成人| 免费欧美在线视频| 日本一区二区三区四区| 日本高清免费不卡视频| 日韩av一区二区在线影视| 久久综合九色综合欧美亚洲| 99精品欧美一区二区三区综合在线| 亚洲精品视频在线看| 欧美日本在线观看| 国产精品综合久久| 又紧又大又爽精品一区二区| 欧美一区二区三区免费观看视频| 久久er精品视频| 中文字幕在线不卡视频| 91精品国产免费久久综合| 国产精品99久久久久| 一区二区三区在线影院| 欧美一区二区精美| 99v久久综合狠狠综合久久| 视频在线在亚洲| 国产精品久久看| 91精品国产91久久久久久最新毛片 | 欧美激情一二三区| 欧美亚洲综合另类| 国产久卡久卡久卡久卡视频精品| 一二三区精品福利视频| 久久先锋影音av| 欧美日韩午夜影院| 成人免费观看男女羞羞视频| 日韩中文字幕亚洲一区二区va在线| 国产婷婷一区二区| 在线播放国产精品二区一二区四区| 国产成人激情av| 日韩va欧美va亚洲va久久| 中文字幕中文乱码欧美一区二区| 欧美一区二区不卡视频| 91免费观看国产| 国产在线精品免费av| 亚洲第一搞黄网站| 日韩一区欧美一区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美三级电影网站| 成人爱爱电影网址| 另类人妖一区二区av| 亚洲日本护士毛茸茸| 久久久午夜精品理论片中文字幕| 欧美日韩高清一区二区三区| av成人免费在线| 国内外成人在线视频| 日韩电影一二三区| 亚洲一区二区不卡免费| 国产精品视频观看| www久久精品| 日韩免费视频线观看| 538prom精品视频线放| 欧美综合色免费| 自拍偷拍国产亚洲| 国产精品第五页| 国产欧美综合在线观看第十页| 欧美va亚洲va国产综合| 制服.丝袜.亚洲.中文.综合|