目前kernel中直接用%p打印地址的话会被显示成ptrval,kernel 应该用用%pK来打印地址,这样就可以用kptr_restrict 这个sysctl来控制%pK是显示地址还是ptrval
这个kernel的patch在https://lwn.net/Articles/740249/
同时可以看出如果输出的是____ptrval____,说明地址是64bits.
/* Maps a pointer to a 32 bit unique identifier. */
static char *ptr_to_id(char *buf, char *end, void *ptr, struct printf_spec spec)
{
const char *str = sizeof(ptr) == 8 ? "(____ptrval____)" : "(ptrval)";
本文介绍在kernel中正确打印地址的方法,使用%pK而非%p,并通过kptr_restrict sysctl控制显示。文章链接:https://lwn.net/Articles/740249/,并指出64位地址输出为'____ptrval____'。

3948

被折叠的 条评论
为什么被折叠?



