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

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.

主站蜘蛛池模板: 陇西县| 搜索| 潍坊市| 正安县| 喀什市| 小金县| 渭南市| 贺兰县| 常德市| 广丰县| 砚山县| 巫山县| 昌平区| 平江县| 嵊州市| 新乡县| 龙川县| 金秀| 金乡县| 奈曼旗| 射洪县| 鄱阳县| 太湖县| 临城县| 芦山县| 五家渠市| 中宁县| 诸暨市| 绥滨县| 云和县| 高青县| 合川市| 镇安县| 三亚市| 东安县| 斗六市| 独山县| 达拉特旗| 克山县| 顺昌县| 二连浩特市|