文档章节

sensors of function parse_config sourcecode.

林中王
 林中王
发布于 2017/06/04 15:22
字数 482
阅读 13
收藏 0
int parse_config(FILE *input, const char *name)
{
	int err;
	char *name_copy;

	if (name) {
		/* Record configuration file name for error reporting */
		name_copy = strdup(name);
		if (!name_copy)
			sensors_fatal_error(__func__, "Out of memory");
		sensors_add_config_files(&name_copy);
	} else
		name_copy = NULL;

	if (sensors_scanner_init(input, name_copy)) {
		err = -SENSORS_ERR_PARSE;
		goto exit_cleanup;
	}
	err = sensors_parse();
	sensors_scanner_exit();
	if (err) {
		err = -SENSORS_ERR_PARSE;
		goto exit_cleanup;
	}

	err = sensors_substitute_busses();

exit_cleanup:
	free_config_busses();
	return err;
}

看起来一个短短的函数,其实作的工作不少。首先调用sensors_add_config_files,这个是条件调用,当然以精简分析的原则,暂且不表。其次调用sensors_scanner_init()这个函数很明显是自定义的,而且出错返回非零值。其次调用sensors_parse()和sensors_scanner_exit()。从名字上看sensors_parse是解析sensors的,很可能对已有的信息进行解析和转储,因为接下来调用的函数是sensors_scanner_exit()这个很明显是结束对传感器的扫描的。而打印信息的函数一定会在main函数调用。那么main函数中的setdgstr和print_bus_list函数的作用就显而易见了。(这两人个函数见main函数源码,「中调用」,至于源码也暂且不表。)至于如何获取的信息,那么从函数名中就可以看出是sensors_scanner_init()这个函数获取最原始的信息,感觉好像找到了一直在找的目标。至于怎么获致我们还是看源码吧,很可能又是一颗不小的树。应该一定是。对于一个202k大小的包,不可以就这么分析完的。202K对于手机应用来说好像没这么小的包。但对于这儿来说真的是不大不小了。也许这就是linux的魅力所在吧。

int sensors_scanner_init(FILE *input, const char *filename)
{
	BEGIN(0);
	if (!(scan_buf = sensors_yy_create_buffer(input, YY_BUF_SIZE)))
		return -1;

	sensors_yy_switch_to_buffer(scan_buf);
	sensors_yyfilename = filename;
	sensors_yylineno = 1;
	return 0;
}

源文件名conf-lex.l这个函数会照样输出到.c源文件中。至于sensors_yy_switch_to_buffer()

sensors_yyfilename

sensors_yylineno的定义一定在.l的输出文件中它的输出一般会很大。

不知道怎么回事,后面的几个

© 著作权归作者所有

林中王
粉丝 0
博文 4
码字总数 1646
作品 0
兰州
其他
私信 提问
imjoey/pyhaproxy

Pyhaproxy It's a Python library to parse haproxy config file. Thanks to canopy, which I use for auto-generating Python codes by PEG grammar. But the 'Extension methods for node'......

imjoey
2016/09/04
0
0
php守候进程-发送队列邮件 (一)

在linux系统下运行 注:只能在liunx系统下运行 demo.conf demo.php SendMail.php

崔小凯
2016/05/27
111
0
php扩展初探

1.首先生成扩展框架结构 Cd /alidata/tmp/php-5.6.23/ext ./ext_skel --extname=myext --proto=myext.fun 1)此时会生成相关文件 Configure config.h include myext.c config.m4 2)主要修改文......

1415699306
2017/07/19
0
0
下面这段代码如何理解呢

private static function parse_conf(&$setting_config){ $nc_config = $GLOBALS['config']; if(is_array($nc_config['db']['slave']) && !empty($nc_config['db']['slave'])){ $dbslave = $......

ziluopao
2015/05/22
443
0
Android系统启动过程剖析

介绍Android系统架构的介绍——《Android系统启动过程剖析》。 1. 系统启动流程简介 在Linux内核启动后,init 1(1号进程)将作为第一个用户空间(Linux虚拟内存的大小为232(在32位的x86机器上)...

AlexMahoneFBI
2014/08/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

C 语言 二级指针的使用

#include <stdio.h>#include <stdlib.h>typedef struct node Node;struct node {int data;struct node* next;struct node* prev;};Node head;Node* insert(Node......

小张525
55分钟前
3
0
【大数据技术】——Hadoop(1)

什么是大数据 基本概念 《数据处理》 在互联网技术发展到现今阶段,大量日常、工作等事务产生的数据都已经信息化,人类产生的数据量相比以前有了爆炸式的增长,以前的传统的数据处理技术已经...

须臾之余
今天
9
0
比特币从地址逆向计算私钥

区块链 区块链简介 说到比特币,就不得不提区块链。那什么是区块链呢? 区块链本质是一个数据集,只不过数据的组织采用了比较特殊的方式,就是把数据拆分为一块一块的小数据集。 为什么要进行...

trayvon
今天
2
0
TypeScript……真香

写前端或者用 node 写命令行小工具一直采用的 es6 的语法,对于 TypeScript 则是秉持敬而远之的态度,毕竟团队中多推广一门语言所需要花费的精力都是让人望而却步的。所以对于 JavaScript 的...

郁也风
今天
3
0
shell基本案例

1、自定义rm linux系统的rm命令太危险,一不小心就会删除掉系统文件。 写一个shell脚本来替换系统的rm命令,要求当删除一个文件或者目录时,都要做一个备份,然后再删除。下面分两种情况,做...

寰宇01
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部