官术网_书友最值得收藏!

How it works...

If we look carefully at the preceding printing functions (pr_info() and similar functions), we notice that they also depend on the pr_fmt(fmt) parameter, which can be used to add other useful information into our message. For instance, the following definition alters all messages generated by pr_info() by adding the current module and calling function names:

#define pr_fmt(fmt) "%s:%s: " fmt, KBUILD_MODNAME, __func__
Note that the pr_fmt() macro definition must appear at the start of the file, even before the includes, to have any effect.

If we add this line to our dummy-code.c, as shown in the following code block, the kernel messages will change as described:

/*
* Dummy code
*/

#define pr_fmt(fmt) "%s:%s: " fmt, KBUILD_MODNAME, __func__
#include <linux/module.h>

In fact, when the pr_info() function is executed the output message, telling us that the module has been inserted turns in the following form, where we can see the module name and the calling function name followed by the loading message:

dummy_code:dummy_code_init: dummy-code loaded

There is another set of printing functions but, before starting to talk about them, we need some information that is located in Chapter 3, Using the Device Tree, so, for the moment, we'll continue using these functions only.

主站蜘蛛池模板: 宜兰市| 洛南县| 太康县| 广平县| 民丰县| 澄城县| 溆浦县| 桑日县| 文昌市| 北票市| 榆中县| 台州市| 霍城县| 娄底市| 红河县| 舒兰市| 滨州市| 琼结县| 顺义区| 兰溪市| 宣汉县| 武清区| 将乐县| 江陵县| 台东县| 时尚| 诸暨市| 万荣县| 嘉定区| 南阳市| 柳江县| 马尔康县| 扎赉特旗| 苗栗市| 铁力市| 绩溪县| 宁化县| 江都市| 调兵山市| 托克托县| 肥西县|