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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? param.c

?? s3c2440 bootloader 源碼
?? C
字號:
/* * vivi/lib/param.c: Simple vivi parameter management * * Copyright (C) 2001 MIZI Research, Inc. * * 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 * *  * Author: Janghoon Lyu <nandy@mizi.com> * Date  : $Date: 2004/02/04 06:22:25 $ * * $Revision: 1.1.1.1 $ * $Id: param.c,v 1.1.1.1 2004/02/04 06:22:25 laputa Exp $ * * * History *  * 2002-12-23: Janghoon Lyu <nandy@mizi.com> *    - Initial code * * 2002-02-23: Janghoon Lyu <nandy@mizi.com> *    - Add commands * * 2002-06-27: Janghoon Lyu <nandy@mizi.com> * */#include "config.h"#include "machine.h"#include "priv_data.h"#include "printk.h"#include "command.h"#include "vivi_string.h"#include <types.h>#include <string.h>const char vivi_param_magic[8] = {'V', 'I', 'V', 'I', 'P', 'A', 'R', 'A'};const char linux_cmd_magic[8] = {'V', 'I', 'V', 'I', 'C', 'M', 'D', 'L'};	          vivi_parameter_t *vivi_params = \	(vivi_parameter_t *)(VIVI_PRIV_RAM_BASE + PARAMETER_TLB_OFFSET + 16);int *nb_params = (int *)(VIVI_PRIV_RAM_BASE + PARAMETER_TLB_OFFSET + 8);char *linux_cmd_line = (char *)(VIVI_PRIV_RAM_BASE + LINUX_CMD_OFFSET + 8);/* * General Interfaces *//* get parameter data by name */vivi_parameter_t *get_param(const char *name){	int i, namelen;	vivi_parameter_t *params = vivi_params;	int num = *(nb_params);	namelen = strlen(name);	for(i = 0; i < num; i++) {		if (strncmp(name, params->name, namelen) == 0		    && name[namelen] == 0) {			return params;		}		params++;	}	return NULL;}/* get value of prameter */param_value_t get_param_value(const char *name, int *ret){	vivi_parameter_t *param = get_param(name);	if (param == NULL) { *ret = -1; return 0; }	*ret = 0;	return param->value;}/* set parameter value */int set_param_value(const char *name, param_value_t value){	vivi_parameter_t *param = get_param(name);	if (param == NULL) return -1;	param->value = value;	return 0;}/* display paramter table */void display_param_tlb(void){	vivi_parameter_t *params = vivi_params;	int i, num = *(nb_params);	printk("Number of parameters: %d\n", num);	printk("%-24s:\t   hex\t\t   integer\n", "name");	      /*mach_type               :  00000090               144*/	printk("-------------------------------------------------------------\n");	for (i = 0; i < num; i++) {		printk("%-24s:\t%08lx\t%13lu\n", 			params->name, params->value, (ulong)params->value);		params++;	}	printk("Linux command line: %s\n", linux_cmd_line);}/* * Manage linux command line */char *get_linux_cmd_line(void){	char *from = (char *)(VIVI_PRIV_RAM_BASE + LINUX_CMD_OFFSET);	if (strncmp(from, linux_cmd_magic, 8) != 0) {		printk("Wrong magic: could not get linux command line\n");		return NULL;	}	return from + 8;}int set_linux_cmd_line(const char *cmd){	memcpy(linux_cmd_line, cmd, (strlen(cmd) + 1));	return 0;}#ifdef CONFIG_CMD_PARAM/* * User Commands */static user_subcommand_t param_cmds[];/* * External command interface */void command_param(int argc, const char **argv){	if (argc == 1) {		printk("invalid 'params' command: too few arguments\n");		print_usage(NULL, param_cmds);		return;	} 	execsubcmd(param_cmds, argc-1, argv+1);}user_command_t param_cmd = {	"param",	command_param,	NULL,	"param [eval|show|save [-n]|reset] \t-- set/get parameter"};/* * user commands ('param' command) */static void command_help(int argc, const char **argv){	print_usage("param", param_cmds);}/*  * Change a value of parameter * * vivi> param set <name> <value> * *     set (argv[0]): command of parameter *  <name> (argv[1]): name of parameter * <value> (argv[2]): value to set */static void command_set(int argc, const char **argv){	int ret;	char *name;	param_value_t pre_value, value;	if (argc != 3) {		printk("invalid 'param set' command: too few(many) arguments\n");		return;	}	/* parsing arguments */	name = (char *)argv[1];	/* if a user want to set the 'linux command line' */	if (strncmp(name, "linux_cmd_line", strlen(name)) == 0) {		ret = set_linux_cmd_line(argv[2]);		if (!ret) {			printk("Change linux command line to \"%s\"\n", 				linux_cmd_line);		} else {			printk("Failed changing linux command line\n");		}		return;	}	/* Change normag vivi parameters */	value = (param_value_t)strtoul(argv[2], NULL, 0, &ret);	if (ret) {		printk("Can not parsing arguments\n");	}	pre_value = get_param_value(name, &ret);	ret = set_param_value(name, value);	if (ret) {		printk("Error: can not change '%s' parameter value\n", name);	}	printk("Change '%s' value. 0x%08lx(%d) to 0x%08lx(%d)\n",		name, pre_value, pre_value, value, value);	return;}/* * set parameter table to default table * * vivi> param reset */static void command_reset_tlb(int argc, const char **argv){	if (get_default_param_tlb()) {		printk("There are no default parameter table\n");	}	if (get_default_linux_cmd()) {		printk("There are no default parameter table\n");	}}/* * display parameter table * * vivi> param show */static void command_show(int argc, const char **argv){	display_param_tlb();}/* * Save vivi private data * * vivi> param save */static void command_save(int argc, const char **argv){	if (argc != 1) {		invalid_cmd("param save", param_cmds);		return;	}	if (save_priv_data_blk())	  printk("Could not save vivi private data\n");	else printk("Saved vivi private data\n");}/* * set of 'param' user command */static user_subcommand_t param_cmds[] = {{	"help",	command_help,	"help \t\t\t-- Help aout 'param' command"}, {	"reset",	command_reset_tlb,	"reset \t\t\t-- Reset parameter table to default table"}, {	"save",	command_save,	"save \t\t\t-- Save parameter table to flash memeory"}, {	"set",	command_set,	"set <name> <value> \t-- Reset value of parameter\n"	"param set linux_cmd_line \"...\" \t-- set boot parameter"}, {	"show",	command_show,	"show \t\t\t-- Display parameter table"}, {	NULL,	NULL,	NULL}};#endif /* CONFIG_CMD_PARAM */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本v片在线高清不卡在线观看| 日韩精品久久理论片| 久久精品免费在线观看| 欧美一级免费观看| 自拍偷在线精品自拍偷无码专区| 久久亚洲私人国产精品va媚药| 精品盗摄一区二区三区| 欧美精品一区二区三区四区| 欧美mv和日韩mv国产网站| 久久婷婷国产综合精品青草| 精品国产乱码久久久久久牛牛| 久久久91精品国产一区二区精品 | 国产精品久99| 国产精品久久久99| 一区二区久久久久久| 视频一区中文字幕| 美美哒免费高清在线观看视频一区二区 | 欧美日韩aaaaaa| 日韩欧美在线1卡| 国产亚洲污的网站| 一区二区国产视频| 精品一区二区三区av| 国产不卡在线视频| 欧美性大战久久久| 久久综合色8888| 中文字幕一区二区在线观看| 亚洲成人一二三| 国产综合久久久久久久久久久久| av一二三不卡影片| 日韩精品资源二区在线| 18欧美乱大交hd1984| 奇米一区二区三区av| av一区二区三区黑人| 欧美一区二区三区在| 中文字幕日韩一区| 青青青伊人色综合久久| 成人av网在线| 欧美成人bangbros| 亚洲精品免费在线| 国产成人午夜精品5599| 欧美日韩国产在线观看| 日本一区二区三区在线不卡 | 国产精品99久久久久久有的能看| 色综合久久久久综合99| 精品免费国产一区二区三区四区| 亚洲三级在线看| 国产成人在线免费| 日韩一区二区三区免费看| 亚洲日本一区二区| 国产91精品露脸国语对白| 日韩欧美在线影院| 亚洲风情在线资源站| 97精品国产97久久久久久久久久久久 | 日韩午夜激情免费电影| 樱桃视频在线观看一区| 国产乱码字幕精品高清av| 91精品国产免费久久综合| 亚洲精品成人在线| 成人国产精品免费网站| 久久久精品人体av艺术| 精品一区二区三区影院在线午夜| 欧美乱熟臀69xxxxxx| 亚洲欧洲精品一区二区三区不卡| 国产一区二区三区久久久| 91精品国产全国免费观看| 亚洲综合一区在线| 91丨porny丨中文| 综合在线观看色| 99综合影院在线| 日韩毛片视频在线看| 99久久精品免费| 亚洲欧美日韩精品久久久久| 日韩欧美一级二级三级| 五月天视频一区| 69堂精品视频| 免费xxxx性欧美18vr| 日韩美女一区二区三区四区| 青娱乐精品视频在线| 精品国产凹凸成av人网站| 国内精品写真在线观看| 久久综合成人精品亚洲另类欧美 | 国产精品自拍av| www日韩大片| 国产999精品久久久久久绿帽| 国产欧美日韩久久| 色8久久精品久久久久久蜜| 亚洲国产欧美另类丝袜| 91麻豆精品国产91久久久久久| 日韩和欧美的一区| 在线综合亚洲欧美在线视频| 国产一区 二区 三区一级| 国产日韩欧美亚洲| 一道本成人在线| 天天av天天翘天天综合网| 欧美一级在线观看| 国产+成+人+亚洲欧洲自线| 亚洲欧美一区二区三区极速播放| 欧洲中文字幕精品| 免费视频一区二区| 欧美高清在线精品一区| 色国产综合视频| 黑人巨大精品欧美黑白配亚洲| 中文字幕av一区 二区| 欧洲一区二区三区在线| 免费一级片91| 亚洲免费视频中文字幕| 欧美一区二区精品久久911| 丁香亚洲综合激情啪啪综合| 亚洲一线二线三线久久久| 26uuu另类欧美| 欧美性色黄大片| 岛国一区二区三区| 日韩成人av影视| 亚洲精选视频免费看| 欧美精品一区二区三区四区| 在线观看成人小视频| 国产精品一色哟哟哟| 三级成人在线视频| 亚洲人成在线观看一区二区| 日韩欧美的一区二区| 欧美图区在线视频| 99r精品视频| 国产原创一区二区| 日韩精品亚洲一区二区三区免费| 国产精品免费人成网站| 欧美tk丨vk视频| 欧美日韩夫妻久久| 色天使久久综合网天天| 高清国产一区二区三区| 久99久精品视频免费观看| 亚洲一区在线观看免费观看电影高清| 亚洲国产精品ⅴa在线观看| 精品日韩av一区二区| 欧美日韩国产高清一区二区| 91亚洲永久精品| 99久久免费国产| 成人国产亚洲欧美成人综合网| 国产一区不卡在线| 国产中文字幕一区| 久久精品理论片| 久久99蜜桃精品| 久久99在线观看| 国产在线精品一区二区不卡了| 蜜桃av一区二区三区电影| 午夜电影久久久| 奇米精品一区二区三区四区| 日本三级亚洲精品| 人妖欧美一区二区| 久久精品国产亚洲5555| 久久97超碰国产精品超碰| 麻豆国产欧美一区二区三区| 看电影不卡的网站| 精品一区在线看| 国内成人精品2018免费看| 九九在线精品视频| 国产精品亚洲专一区二区三区| 国产麻豆成人传媒免费观看| 国产精品影视网| 91亚洲精品一区二区乱码| 一本一道综合狠狠老| 欧美色涩在线第一页| 欧美一区二区不卡视频| 欧美成人官网二区| 国产视频一区不卡| 亚洲视频一区二区在线观看| 一区二区三区久久| 日本系列欧美系列| 国产九九视频一区二区三区| 成人av资源站| 欧美人牲a欧美精品| 日韩色视频在线观看| 久久亚洲捆绑美女| 亚洲免费视频成人| 免费在线一区观看| 成人免费黄色大片| 欧美日韩视频在线第一区| 日韩一级在线观看| 欧美国产一区二区在线观看| 亚洲精品免费在线播放| 日韩av在线免费观看不卡| 色狠狠桃花综合| 日韩免费视频线观看| 亚洲欧美视频在线观看视频| 日本不卡不码高清免费观看| www.欧美精品一二区| 欧美精品乱码久久久久久| 国产婷婷一区二区| 香蕉影视欧美成人| 成人av网站大全| 日韩精品一区二区三区蜜臀| 国产精品毛片无遮挡高清| 日本欧美一区二区| av在线不卡网| 久久综合精品国产一区二区三区| 亚洲欧美一区二区久久| 国产一区 二区| 337p亚洲精品色噜噜| 中文字幕日韩一区| 国产一区在线观看麻豆| 欧美日韩亚洲综合一区二区三区|