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

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.

主站蜘蛛池模板: 康马县| 巴南区| 米易县| 莒南县| 萝北县| 连山| 抚松县| 荣昌县| 兴安盟| 建水县| 嘉兴市| 德阳市| 将乐县| 宁安市| 义马市| 聊城市| 灯塔市| 酒泉市| 义马市| 手游| 兰坪| 元阳县| 宽甸| 张北县| 易门县| 永川市| 余庆县| 观塘区| 阿合奇县| 隆子县| 吴桥县| 依安县| 江川县| 临桂县| 六枝特区| 宝山区| 咸丰县| 贡觉县| 连云港市| 缙云县| 招远市|