12-Openwrt libubox ulog md5 list

ag真人赌博网

  openwrt下面的libubox库可谓是非常的强大,很多库都会调用到其中的接口,如ubus,uhttpd

  libubox主要提供一下两种功能:

  提供一套基于事件驱动的机制。

  提供多种开发支持接口。(如:链表、kv链表、平衡查找二叉树、md5、json)

  使用libubox开发的好处有如下几点:

  可以使程序基于事件驱动,从而可实现在单线程中处理多个任务。

  基于libubox提供的开发API可以加快开发进度的同事提高程序的稳定性。

  能更好的将程序融入openwrt的架构中,因为新的openwrt的很多应用和库都基于libubox开发的。

  综上所述,libubox是您玩新版openwrt必修的一个东东,相信它也值得大家去研究学习。

  libubox源代码如下,我们所有调用的接口都可以在里面找到,查看其原理。

  1.环境搭建

  首先在package下面添加一个ztest模块,修改对应的Makefile,并在config里面添加选项

  编译的时候不用全部编译,可以直接编译ztest模块即可

  编译完在下面拷贝最新的ztest文件上传到板子/usr/bin/下面跑即可。

  2.使用syslog打印调试日志

  vim ztest/src/ztest.h

  vim ztest/src/ztest.c

  这边直接使用系统接口syslog来打印调试信息,代码跑起来后可以使用logread来查看调试信息

  使用logread -f可以在线查看log

  3.libubox/ulog打印调试日志

  上面使用的syslog是我们自己又封装了一遍,其实libubox里面也已经帮我们搞定了这个接口,我们只需要调用初始化下即可。

  查看libubox/ulog.c里面的源代码,其实也是很简单,封装了三种接口,分别对应,三种形式。如果我们选择了那就跟上面的syslog一模一样了。

  调用下面两个接口后,就可以使用了

  4.libubox/md5接口使用

  libubox为我们提供了md5的两种算法,一个是数据的md5,还有一个是文件的md5sum

  具体使用如下,比较简单:

  5.libubox/list接口使用

  libubox里面的list(仔细看一下它应该是从内核中移植过来的)可称之为侵入式链表,这种list最突出的特征就是其节点中不含有任何数据,相反,list节点是嵌入到特定的数据结构中的。

  这样做有两点好处:

  链表自身导出的方法比较简洁,由于不涉及到数据的操作,因而list的所有API都可以实现通用;

  不用为每种数据类型实现一套链表的操作,当然在支持泛型的语言里可以使用模板来实现这种通用list。

  

  代码位于github:

达到当天最大量