亚洲欧美第一页_禁久久精品乱码_粉嫩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):
+OP_PARAM_ATTR(1);+OP_PARAM_ATTR(2);+OP_PARAM_ATTR(3);+OP_PARAM_ATTR(4);+OP_PARAM_ATTR(5);+OP_PARAM_ATTR(6);+OP_PARAM_ATTR(7);+OP_PARAM_ATTR(8);+OP_PARAM_ATTR(9);+OP_PARAM_ATTR(10);+OP_PARAM_ATTR(11);+OP_PARAM_ATTR(12);+OP_PARAM_ATTR(13);+OP_PARAM_ATTR(14);+OP_PARAM_ATTR(15);+OP_PARAM_ATTR(16);+OP_PARAM_ATTR(17);+OP_PARAM_ATTR(18);+OP_PARAM_ATTR(19);++static struct dpm_op_attribute *op_param_attr[MAX_OP_PARAMS] = {+	&op_param0_attr,+	&op_param1_attr,+	&op_param2_attr,+	&op_param3_attr,+	&op_param4_attr,+	&op_param5_attr,+	&op_param6_attr,+	&op_param7_attr,+	&op_param8_attr,+	&op_param9_attr,+	&op_param10_attr,+	&op_param11_attr,+	&op_param12_attr,+	&op_param13_attr,+	&op_param14_attr,+	&op_param15_attr,+	&op_param16_attr,+	&op_param17_attr,+	&op_param18_attr,+	&op_param19_attr,+};++static ssize_t+op_attr_show(struct kobject * kobj, struct attribute * attr, char * buf)+{+	struct dpm_op_attribute * op_attr = to_op_attr(attr);+	ssize_t ret = 0;++	if (op_attr->show)+		ret = op_attr->show(kobj,buf);+	return ret;+}++static ssize_t+op_attr_store(struct kobject * kobj, struct attribute * attr,+	      const char * buf, size_t count)+{+	struct dpm_op_attribute * op_attr = to_op_attr(attr);+	ssize_t ret = 0;++	if (op_attr->store)+		ret = op_attr->store(kobj,buf,count);+	return ret;+}++static struct sysfs_ops op_sysfs_ops = {+	.show	= op_attr_show,+	.store	= op_attr_store,+};++static struct attribute * op_default_attrs[] = {+	&an_op_control_attr.attr,+	&op_force_attr.attr,+	NULL,+};++static struct kobj_type ktype_op = {+	.release        = dpm_kobj_release,+	.sysfs_ops	= &op_sysfs_ops,+	.default_attrs	= op_default_attrs,+};++void dpm_sysfs_new_op(struct dpm_opt *opt)+{+	int i;++	memset(&opt->kobj, 0, sizeof(struct kobject));+	opt->kobj.kset = &dpm_subsys.kset,+	kobject_set_name(&opt->kobj,opt->name);+	opt->kobj.parent = &dpm_op_kobj;+	opt->kobj.ktype = &ktype_op;+	kobject_register(&opt->kobj);++	for (i = 0; (i < DPM_PP_NBR) && (i < MAX_OP_PARAMS); i++) {+		op_param_attr[i]->attr.name = dpm_param_names[i];+		sysfs_create_file(&opt->kobj, &op_param_attr[i]->attr);+	}++	return;+}++void dpm_sysfs_destroy_op(struct dpm_opt *opt)+{+	kobject_unregister(&opt->kobj);+	return;+}+++/*+ * state+ */+++static ssize_t state_control_show(struct subsystem * subsys, char * buf)+{+	ssize_t len = 0;+	int i;++	len += sprintf(buf + len, "states: ");++	for (i = 0; i < DPM_STATES; i++) {+		len += sprintf(buf + len, "%s ", dpm_state_names[i]);+	}++	len += sprintf(buf + len, "\ntask-states: min=%s norm=%s max=%s\n",+		       dpm_state_names[DPM_TASK_STATE - DPM_TASK_STATE_LIMIT],+		       dpm_state_names[DPM_TASK_STATE],+		       dpm_state_names[DPM_TASK_STATE + DPM_TASK_STATE_LIMIT]);++	return len;+}++static ssize_t state_control_store(struct subsystem * subsys, const char * buf,+				   size_t n)+{+	return -EINVAL;+}++static ssize_t active_state_show(struct subsystem * subsys, char * buf)+{+	unsigned long flags;+	ssize_t len = 0;++	if (dpm_lock_interruptible())+		return -ERESTARTSYS;++	if (!dpm_enabled || (dpm_active_state == DPM_NO_STATE)) {+		len += sprintf(buf + len, "[none]\n");+	} else {+		spin_lock_irqsave(&dpm_policy_lock, flags);+		len += sprintf(buf + len,"%s\n",+			       dpm_state_names[dpm_active_state]);+		spin_unlock_irqrestore(&dpm_policy_lock, flags);+	}++	dpm_unlock();+	return len;+}++static ssize_t active_state_store(struct subsystem * subsys, const char * buf,+				  size_t n)+{+	int error = 0;+	char *tbuf = NULL;+	char *token[MAXTOKENS];+	int ntoks = tokenizer(&tbuf, buf, n, (char **) &token, MAXTOKENS);++	if (ntoks <= 0) {+		error = ntoks;+		goto out;+	}++	error = dpm_set_op_state(token[0]);++ out:+	if (tbuf)+		kfree(tbuf);+        return error ? error : n;+}++#ifdef CONFIG_DPM_STATS+static ssize_t state_stats_show(struct subsystem * subsys, char * buf)+{+	unsigned long flags;+	ssize_t len = 0;+	int i;++	spin_lock_irqsave(&dpm_policy_lock, flags);++	for (i = 0; i < DPM_STATES; i++) {+		unsigned long long total_time = dpm_state_stats[i].total_time;++		if (i == dpm_active_state)+			total_time += (unsigned long long) dpm_time() -+				dpm_state_stats[i].start_time;++		len += sprintf(buf + len, "state: %s", dpm_state_names[i]);+                len += sprintf(buf + len, " ticks: %Lu",+			       (unsigned long long) dpm_time_to_usec(total_time));+		len += sprintf(buf + len, " times: %lu\n",+			       dpm_state_stats[i].count);+	}++	spin_unlock_irqrestore(&dpm_policy_lock, flags);+	return len;+}++static ssize_t state_stats_store(struct subsystem * subsys, const char * buf,+				 size_t n)+{+        return n;+}+#endif /* CONFIG_DPM_STATS */++static struct kobject dpm_state_kobj = {+	.kset = &dpm_subsys.kset,+};++dpm_attr(control, state_control);+dpm_attr(active, active_state);+#ifdef CONFIG_DPM_STATS+dpm_attr(stats, state_stats);+#endif++struct astate {+	int index;+	struct kobject kobj;+};++struct astate_attribute {+        struct attribute        attr;+        ssize_t (*show)(struct kobject * kobj, char * buf);+        ssize_t (*store)(struct kobject * kobj, const char * buf, size_t count);+};++#define to_astate(obj) container_of(obj,struct astate,kobj)+#define to_astate_attr(_attr) container_of(_attr,struct astate_attribute,attr)++static ssize_t+astate_attr_show(struct kobject * kobj, struct attribute * attr, char * buf)+{+	struct astate_attribute * astate_attr = to_astate_attr(attr);+	ssize_t ret = 0;++	if (astate_attr->show)+		ret = astate_attr->show(kobj,buf);+	return ret;+}++static ssize_t+astate_attr_store(struct kobject * kobj, struct attribute * attr,+		  const char * buf, size_t count)+{+	struct astate_attribute * astate_attr = to_astate_attr(attr);+	ssize_t ret = 0;++	if (astate_attr->store)+		ret = astate_attr->store(kobj,buf,count);+	return ret;+}++static int show_opconstrains(int state, char *buf)+{+	struct dpm_opt *opt;+	int len = 0;++	if (dpm_active_policy->classopt[state].opt) {+		opt = dpm_active_policy->classopt[state].opt;++		len += dpm_show_opconstraints(opt, buf);+	}+	else {+		int i;++		for (i = 0;+		     i < dpm_active_policy->classopt[state].class->nops; i++) {+			len += dpm_show_opconstraints(+				dpm_active_policy->classopt[state].class->ops[i], buf);+		}+	}++	return len;+}+static ssize_t astate_constraints_show(struct kobject * kobj, char * buf)+{+	struct astate *astate = to_astate(kobj);+	ssize_t len = 0;++	if (dpm_enabled && dpm_active_policy)+		len = show_opconstrains(astate->index, buf);++	return len;+}++static ssize_t astate_constraints_store(struct kobject * kobj,+					const char * buf, size_t n)+{+	return n;+}++static struct astate_attribute astate_constraints_attr = {+        .attr   = {+                .name = "constraints",+                .mode = 0644,+        },+        .show   = astate_constraints_show,+        .store  = astate_constraints_store,+};++static struct sysfs_ops astate_sysfs_ops = {+	.show	= astate_attr_show,+	.store	= astate_attr_store,+};++static struct attribute * astate_default_attrs[] = {+	&astate_constraints_attr.attr,+	NULL,+};++static struct kobj_type ktype_astate = {+	.release        = dpm_kobj_release,+	.sysfs_ops	= &astate_sysfs_ops,+	.default_attrs	= astate_default_attrs,+};++static struct astate astate[DPM_STATES];++/*+ * Init+ */++static int __init dpm_sysfs_init(void)+{+        int error, i;++	error = subsystem_register(&dpm_subsys);+        if (!error)+                error = sysfs_create_group(&dpm_subsys.kset.kobj,&dpm_attr_group);+	if (!error) {+		kobject_set_name(&dpm_policy_kobj, "policy");+		kobject_register(&dpm_policy_kobj);+		sysfs_create_file(&dpm_policy_kobj, &policy_control_attr.attr);+		sysfs_create_file(&dpm_policy_kobj, &active_policy_attr.attr);+#ifdef CONFIG_DPM_STATS+		sysfs_create_file(&dpm_policy_kobj, &policy_stats_attr.attr);+#endif+		kobject_set_name(&dpm_class_kobj, "class");+		kobject_register(&dpm_class_kobj);+		sysfs_create_file(&dpm_class_kobj, &class_control_attr.attr);+		kobject_set_name(&dpm_op_kobj, "op");+		kobject_register(&dpm_op_kobj);+		sysfs_create_file(&dpm_op_kobj, &op_control_attr.attr);+#ifdef CONFIG_DPM_STATS+		sysfs_create_file(&dpm_op_kobj, &op_stats_attr.attr);+#endif+		kobject_set_name(&dpm_state_kobj, "state");+		kobject_register(&dpm_state_kobj);+		sysfs_create_file(&dpm_state_kobj, &state_control_attr.attr);+		sysfs_create_file(&dpm_state_kobj, &active_state_attr.attr);+#ifdef CONFIG_DPM_STATS+		sysfs_create_file(&dpm_state_kobj, &state_stats_attr.attr);+#endif++		for (i = 0; i < DPM_STATES; i++) {+			astate[i].index = i;+			astate[i].kobj.kset = &dpm_subsys.kset;+			kobject_set_name(&astate[i].kobj,dpm_state_names[i]);+			astate[i].kobj.parent = &dpm_state_kobj;+			astate[i].kobj.ktype = &ktype_astate;+			kobject_register(&astate[i].kobj);+		}+	}++        return error;+}++__initcall(dpm_sysfs_init);++/* /proc interface */++int dpm_set_task_state_by_name(struct task_struct *task, char *buf, ssize_t n)+{+	int task_state;+	int ret = 0;+	char *tbuf = NULL;+	char *token[MAXTOKENS];+	int ntoks = tokenizer(&tbuf, buf, n, (char **) &token, MAXTOKENS);++	if (ntoks <= 0) {+		ret = ntoks;+		goto out;+	}++	for (task_state = DPM_TASK_STATE - DPM_TASK_STATE_LIMIT;+	     task_state <= DPM_TASK_STATE + DPM_TASK_STATE_LIMIT;+	     task_state++)+		if (strcmp(token[0], dpm_state_names[task_state]) == 0) {+			task->dpm_state = task_state;++			if (task == current)+				dpm_set_os(task_state);++			ret = 0;+			break;+		}++out:+	if (tbuf)+		kfree(tbuf);++	return ret;+}Index: linux-2.6.16/drivers/dpm/dpm.c===================================================================--- linux-2.6.16.orig/drivers/dpm/dpm.c	1970-01-01 00:00:00.000000000 +0000+++ linux-2.6.16/drivers/dpm/dpm.c	2006-04-11 06:35:40.000000000 +0000@@ -0,0 +1,1117 @@+/*+ * drivers/dpm/policy.c  Dynamic Power Management Policies+ *+ * This program is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the License, or+ * (at your option) any later version.+ *+ * 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.+ *+ * You should have received a copy of the GNU General Public License+ * along with this program; if not, write to the Free Software+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA+ *+ * Copyright (C) 2002, International Business Machines Corporation+ * All Rights Reserved+ *+ * Robert Paulsen+ * IBM Linux Technology Center+ * rpaulsen@us.ibm.com+ * August, 2002+ *+ */++/* TODO:++   Rethink init/enable/disable: It may be redundant and/or unsafe+   Fix initialization and stats+*/++#include <linux/dpm.h>+#include <linux/init.h>+#include <linux/interrupt.h>+#include <linux/module.h>+#include <linux/proc_fs.h>+#include <linux/sched.h>+#include <linux/slab.h>+#include <linux/spinlock.h>+#include <linux/delay.h>+#include <linux/preempt.h>++#include <asm/semaphore.h>+#include <asm/system.h>+#include <asm/uaccess.h>++#undef TRACE+#if defined(TRACE)+#define trace(args...) do { printk("TRACE: "); printk(args); } while(0)+#else+#define trace(args...) do {} while(0)+#endif++struct dpm_md dpm_md;++static struct dpm_opt nop_op = {+	.name  = "[nop]",+	.flags = DPM_OP_NOP,+};++extern void dpm_force_off_constrainers(struct dpm_opt *opt);++unsigned long dpm_compute_lpj(unsigned long ref, u_int div, u_int mult)+{+	unsigned long new_jiffy_l, new_jiffy_h;++	/*+	 * Recalculate loops_per_jiffy.  We do it this way to+	 * avoid math overflow on 32-bit machines.  Maybe we+	 * should make this architecture dependent?  If you have+	 * a better way of doing this, please replace!+	 *+	 *    new = old * mult / div+	 */+	new_jiffy_h = ref / div;+	new_jiffy_l = (ref % div) / 100;+	new_jiffy_h *= mult;+	new_jiffy_l = new_jiffy_l * mult / div;+

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情欧美日韩一区二区| 欧美最新大片在线看| 日本在线不卡一区| 亚洲不卡一区二区三区| 最新中文字幕一区二区三区| 国产欧美日韩精品一区| 欧美激情一区二区三区在线| 久久久三级国产网站| 久久久亚洲精品石原莉奈| 国产色综合一区| 中文字幕av一区二区三区高| 国产精品美女一区二区三区| 国产精品久久久久影院老司| 1024成人网| 一区二区三区欧美日| 亚洲国产综合人成综合网站| 亚洲一区二区四区蜜桃| 性感美女久久精品| 麻豆成人久久精品二区三区红 | 亚洲福利一区二区三区| 亚洲一区二区四区蜜桃| 午夜av一区二区三区| 日本在线不卡视频| 黄页网站大全一区二区| 国产盗摄一区二区三区| 成a人片国产精品| 91网站黄www| 欧美日韩一区三区四区| 日韩欧美在线综合网| 久久亚洲精品国产精品紫薇| 中文字幕av免费专区久久| 一区二区三区在线观看动漫| 亚洲成人激情社区| 久久99久久久久久久久久久| 国产成人免费av在线| 色综合久久综合中文综合网| 欧美精品欧美精品系列| 久久免费精品国产久精品久久久久| 国产精品免费丝袜| 亚洲高清免费视频| 国产精品一区二区三区网站| av一区二区三区四区| 欧美视频中文字幕| 精品av综合导航| 亚洲男女毛片无遮挡| 日韩不卡手机在线v区| 国产99久久久国产精品潘金| 91久久精品一区二区三| 精品久久国产字幕高潮| 日韩美女视频19| 免费看欧美女人艹b| 成人福利视频在线| 3d动漫精品啪啪| 欧美高清一级片在线观看| 午夜欧美视频在线观看| 国产盗摄精品一区二区三区在线| 91福利在线免费观看| 欧美va在线播放| 亚洲码国产岛国毛片在线| 精品中文字幕一区二区小辣椒| 94-欧美-setu| 欧美精品一区二区三区很污很色的| 亚洲免费毛片网站| 国内精品写真在线观看| 欧美性一二三区| 国产精品天干天干在线综合| 日韩国产在线一| 91视视频在线直接观看在线看网页在线看| 91精品国模一区二区三区| 亚洲视频图片小说| 国产麻豆精品在线| 88在线观看91蜜桃国自产| 日韩美女视频一区| 国产传媒一区在线| 欧美一卡二卡在线| 一区二区三区免费观看| 成人午夜电影网站| 欧美精品一区二区不卡 | 色8久久精品久久久久久蜜| 精品国产麻豆免费人成网站| 亚洲一区电影777| 99久久精品国产麻豆演员表| 26uuu色噜噜精品一区| 日韩精品欧美成人高清一区二区| 91麻豆高清视频| 欧美国产日韩一二三区| 国产在线播精品第三| 欧美精品一卡二卡| 亚洲综合免费观看高清完整版| 成人手机电影网| 精品国产免费一区二区三区香蕉| 亚洲五码中文字幕| 91久久国产最好的精华液| 中文字幕一区免费在线观看| 国产99久久久国产精品免费看 | 日韩av在线播放中文字幕| 欧美伊人精品成人久久综合97| 国产精品久久精品日日| 粉嫩av一区二区三区粉嫩| 久久精品夜夜夜夜久久| 国产精品一区二区在线观看不卡| 日韩一区二区三区四区五区六区| 亚洲午夜久久久久中文字幕久| 一本色道久久综合亚洲91| 亚洲日穴在线视频| 色成人在线视频| 亚洲一区二区在线播放相泽| 欧美吞精做爰啪啪高潮| 午夜精品在线视频一区| 欧美日韩国产精品成人| 日韩精品视频网| 日韩免费观看高清完整版| 久久国产精品99久久人人澡| 日韩欧美一级片| 国内精品久久久久影院薰衣草| 2欧美一区二区三区在线观看视频| 精品一区二区日韩| 国产喂奶挤奶一区二区三区| 国产成人鲁色资源国产91色综| 中文字幕不卡的av| 日本久久一区二区| 五月激情综合婷婷| 精品久久国产字幕高潮| 国产福利电影一区二区三区| 18成人在线观看| 欧美影院精品一区| 蜜臀va亚洲va欧美va天堂| 欧美tickling网站挠脚心| 国产露脸91国语对白| 中文字幕一区三区| 欧美亚洲动漫精品| 麻豆国产一区二区| 国产精品嫩草影院com| 色婷婷综合久久久久中文一区二区| 亚洲国产cao| 欧美mv日韩mv国产网站| k8久久久一区二区三区| 亚洲午夜免费福利视频| 欧美成人福利视频| 99视频在线观看一区三区| 亚洲国产综合色| 精品99999| 91久久国产综合久久| 麻豆国产精品官网| 亚洲人成在线观看一区二区| 欧美精品久久久久久久久老牛影院| 精品一区二区在线观看| 亚洲人成网站精品片在线观看| 欧美欧美欧美欧美| 国产成人a级片| 亚洲高清免费一级二级三级| 精品国产乱码久久久久久久久| 99精品欧美一区| 麻豆国产欧美日韩综合精品二区| 国产精品网曝门| 日韩一区二区不卡| 97久久超碰国产精品| 亚洲成人黄色小说| 国产精品免费av| 91精品国产欧美一区二区18| 波多野结衣精品在线| 日本视频中文字幕一区二区三区| 中文字幕精品在线不卡| 91精品婷婷国产综合久久性色| 成人免费看视频| 青娱乐精品视频| 自拍偷拍亚洲激情| 26uuu国产日韩综合| 欧美三级资源在线| 成人av一区二区三区| 看国产成人h片视频| 亚洲精品成人在线| 国产三级三级三级精品8ⅰ区| 欧美美女一区二区在线观看| jiyouzz国产精品久久| 久草精品在线观看| 亚洲成a人v欧美综合天堂| 国产精品美女久久久久久久网站| 日韩视频免费观看高清在线视频| 91小视频免费观看| 国产不卡免费视频| 久久精品国产亚洲a| 亚洲第一综合色| 亚洲欧美国产三级| 国产清纯白嫩初高生在线观看91 | 精品国产免费一区二区三区四区| 欧洲国内综合视频| 99久免费精品视频在线观看| 国产精品一品二品| 久久精品国产77777蜜臀| 午夜精品在线看| 亚洲最大色网站| 亚洲视频免费在线观看| 国产精品视频免费看| 国产亚洲欧美日韩日本| 久久午夜羞羞影院免费观看| 欧美一区二区三区不卡| 欧美一区二区视频在线观看| 欧美日韩国产电影| 欧美日韩久久久|