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

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

?? param.c

?? 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: 2002/10/12 08:48:51 $ * * $Revision: 1.4 $ * $Id: param.c,v 1.4 2002/10/12 08:48:51 nandy 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 defined at include/priv_data.htypedef struct parameter {	char name[MAX_PARAM_NAME];	param_value_t value;	void (*update_func)(param_value_t value);} vivi_parameter_t;	*/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; /*defined upside, also can see below for default values: *//*defined at arc/s3c2410/smdk.cvivi_parameter_t default_vivi_parameters[] = {	{ "mach_type",			MACH_TYPE,	NULL },	{ "media_type",			MT_S3C2410,	NULL },	//media_type was defined at include/boot_kernel.h, MT_S3C2410=3	{ "boot_mem_base",		0x30000000,	NULL },	{ "baudrate",			UART_BAUD_RATE,	NULL },	{ "xmodem_one_nak",		0,		NULL },	{ "xmodem_initial_timeout",	300000,		NULL },	{ "xmodem_timeout",		1000000,	NULL },	{ "ymodem_initial_timeout",	1500000,	NULL },	{ "boot_delay",			0x1000,		NULL }};*/	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 [set|show|save|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 */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级片网站| 日韩午夜电影av| 色婷婷综合久久久久中文 | 欧美亚洲日本国产| 91福利在线导航| 日韩丝袜美女视频| 中文字幕中文字幕在线一区| 一色桃子久久精品亚洲| 亚洲3atv精品一区二区三区| 美脚の诱脚舐め脚责91| 高清日韩电视剧大全免费| 色综合天天综合在线视频| 久久综合色综合88| 一区二区三区小说| 成人性色生活片免费看爆迷你毛片| 欧美亚洲综合久久| 国产精品久久久久久一区二区三区 | 国产日本一区二区| 亚洲图片欧美一区| 成人毛片在线观看| 亚洲精品在线观看视频| 亚洲视频免费观看| 成人av影视在线观看| 欧美裸体bbwbbwbbw| 午夜精品久久一牛影视| 国产福利不卡视频| 精品999在线播放| 青青草97国产精品免费观看无弹窗版| 不卡电影一区二区三区| 精品久久久久久久久久久久久久久 | 狠狠色狠狠色合久久伊人| 91精品福利在线一区二区三区| 日韩毛片一二三区| 不卡电影一区二区三区| 亚洲人亚洲人成电影网站色| 国产麻豆午夜三级精品| 久久九九久精品国产免费直播| 激情欧美一区二区| 久久综合久久99| 大胆亚洲人体视频| 国产精品短视频| 色悠悠久久综合| 日日嗨av一区二区三区四区| 制服.丝袜.亚洲.中文.综合| 麻豆精品新av中文字幕| 欧美激情一区二区三区四区| 大胆欧美人体老妇| 亚洲裸体在线观看| 欧美理论电影在线| 国产一区二区三区不卡在线观看| 欧美国产综合色视频| 91传媒视频在线播放| 日韩不卡在线观看日韩不卡视频| 日韩一级二级三级| 国产v日产∨综合v精品视频| 一区二区三区精品视频在线| 91精品国产高清一区二区三区蜜臀| 精品一区二区免费| 亚洲卡通欧美制服中文| 26uuu亚洲综合色欧美| 欧美中文字幕亚洲一区二区va在线| 视频一区二区三区入口| 国产欧美日韩视频在线观看| 欧美一二三区在线观看| 91福利资源站| 91社区在线播放| 国产精品资源在线观看| 亚洲国产另类精品专区| 自拍视频在线观看一区二区| 久久嫩草精品久久久久| 6080国产精品一区二区| 色88888久久久久久影院野外| 国产精品资源在线| 成人综合在线视频| 久久97超碰色| 精品一区二区三区免费观看| 久久丁香综合五月国产三级网站| 亚洲一级不卡视频| 亚洲6080在线| 蜜臂av日日欢夜夜爽一区| 蜜桃av一区二区三区| 国产伦精品一区二区三区视频青涩| 亚洲精品欧美激情| 亚洲国产三级在线| 三级欧美在线一区| 老司机午夜精品99久久| 91精品欧美久久久久久动漫| 韩国欧美一区二区| 国内精品伊人久久久久av影院| 久久国产人妖系列| 久久99久久精品| eeuss鲁片一区二区三区在线看| 国产suv一区二区三区88区| 成人99免费视频| 91黄色免费网站| 久久久美女艺术照精彩视频福利播放| 久久久五月婷婷| 亚洲天堂福利av| 免费成人在线网站| 成人午夜视频在线观看| 欧美亚洲日本国产| 国产亚洲欧美中文| 天天影视网天天综合色在线播放| 麻豆精品视频在线观看免费 | 972aa.com艺术欧美| 日韩一区二区麻豆国产| 中文字幕一区二区三区色视频| 一区二区免费在线| 国产91富婆露脸刺激对白| 日韩欧美色综合网站| 亚洲精品久久久蜜桃| 波波电影院一区二区三区| 欧美大片日本大片免费观看| 亚洲一二三区在线观看| 99久久久无码国产精品| 国产欧美日韩一区二区三区在线观看| 久久精品国产澳门| 欧美亚洲愉拍一区二区| 亚洲免费观看高清在线观看| 国产精品一二三区在线| 久久天天做天天爱综合色| 国内外成人在线视频| 欧美日韩精品一区二区三区 | 在线精品观看国产| 亚洲成人久久影院| 欧美日韩精品一区二区在线播放| 亚洲精品精品亚洲| 欧美三级乱人伦电影| 亚洲综合一区二区| 在线成人av影院| 精品午夜久久福利影院| 久久久久久久久久久电影| 国产精品一二一区| 综合分类小说区另类春色亚洲小说欧美| 国产黄色91视频| 亚洲欧美日韩中文播放 | 日韩成人午夜电影| 国产乱淫av一区二区三区| 久久精品综合网| av电影在线观看完整版一区二区 | 久久99久国产精品黄毛片色诱| 久久综合九色综合欧美98| 成人免费视频一区二区| 午夜影院在线观看欧美| 久久青草国产手机看片福利盒子| 国产一区二区电影| 日韩在线观看一区二区| 久久久www免费人成精品| 在线影院国内精品| 国产在线精品视频| 亚洲成人av免费| 亚洲国产成人一区二区三区| 欧美一卡二卡在线| 一本一道久久a久久精品| 韩国精品免费视频| 亚洲成年人影院| 亚洲图片欧美综合| 一区二区三区在线观看动漫| 久久久久久免费毛片精品| 色88888久久久久久影院按摩| 国产.欧美.日韩| 国产美女视频91| 国内国产精品久久| 国产精品一区不卡| 久久99热国产| 久久不见久久见免费视频7 | 91精品在线免费| 欧美在线视频你懂得| 欧美日韩高清影院| 欧美日韩精品免费| 91精品国产手机| 91精品国产91久久久久久一区二区 | 成人午夜激情片| 99在线精品免费| 欧美综合视频在线观看| 欧美日韩一区三区| 日韩欧美国产三级| 国产日韩av一区二区| 亚洲欧美日韩中文播放| 亚洲6080在线| 成人免费视频视频| 欧美美女网站色| 国产精品免费观看视频| 亚洲免费观看高清完整版在线| 一区二区三区中文字幕电影| 亚洲第一福利一区| 国产成人亚洲综合a∨猫咪| 成av人片一区二区| 欧美一区二区三区免费大片| 国产精品欧美一区喷水| 亚洲超丰满肉感bbw| 久久99精品久久久久久动态图| 国产91对白在线观看九色| 在线精品视频小说1| 国产亚洲成aⅴ人片在线观看| 亚洲地区一二三色| 成人理论电影网| 欧美一级日韩不卡播放免费| 亚洲男女一区二区三区| 国产精品99久久久久|